数据库之SQL语言(上)
(1)SQL的基本概念
SQL是Structured Query Language的缩写,意思是结构化查询语言,是一种在数据库管理系统中查询或对数据库库里面的数据进行更改的语言。
常见的数据库管理系统:关系型:MySql,OracleDatabase和SQL Server,非关系型:redis和mongoDB。不同数据库管理系统的SQL语言略有不同。
SQL语言包括:
1.数据定义语言DDL(Data Ddefinition Language)
SQL数据定义语言主要用来定义逻辑结构,包括定义基本表,试图和索引。
删除表,定义表和修改表。
2.数据库查询语言DQL(Data Query Language)
SQL的数据库查询语言主要用来对数据库中的各种数据对象进行查询。
3.数据操纵语言DML(Data Manipulation Language)
SQL的数据库操纵语言勇于改变数据库中的数据,包括插入,删除和修改。
4.数据控制功能DCL(Data Control Language)
SQL的数据操纵语言是对表和视图的授权(比如不同的用户被授予不同的数据库权限),完整性规则的描述以及事务开始和结束等控制语句。
SQL语言的特点:
1.综合统一(独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据,建立数据库、查询、更新、维护、数据库重构、数据库安全等)
2.高度非过程化(用户只需指明“做什么”,而不必指明“怎么做”)
3.面向集合的操作方式(SQL采用集合操作模式)
4.以同一种语法结构提供两种使用方式(SQL既是自含式语言,又是嵌入式语言,SQL语言能够嵌入到高级语言程序中。)
5.语言简洁,易学易用(SQL语言语法简单,接近英语口语,因此易学习也易使用)
(3)SQL的基本语法
0.SQL语言的基本数据类型(变量类型)
CHAR(n),CHARACTER(n) | 长度为n的变长字符串 |
VARCHAR(n),CHARACTERVARYING(n) | 最大长度为n的变长字符串 |
CLOB | 字符串大对象 |
BLOB | 二进制大对象 |
INT,INTEGER | 长整数(4字节) |
SMALLINT | 短整数(2字节) |
BIGINT | 大整数(8字节) |
NUMERIC(p,d) | 定点数,由p位数字(不包括符号、小数点)组成,小数点后面有d位数字 |
DECIMAL(p,d),DEC(p,d) | 同NUMERIC |
REAL | 取决于机器精度的单精度浮点数 |
DOUBLE PRECISION | 取决于机器精度的双精度浮点数 |
FLOAT(n) | 可选精度的浮点数,精度至少为n位 |
BOOLEAN | 逻辑布尔量 |
DATE | 日期,包含年月日,格式为YYYY-MM-DD |
TIME | 时间,包含一日的时分秒,格式为HH:MM:SS |
TIMESTAMP | 时间戳类型(毫秒) |
INTERAVL | 时间间隔类型 |
1.模式的定义&删除
模式定义:
1 | CREATE SCHEMA <模式名> AUTHORIZATION <用户名>; |
模式定义+视图
1 | CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>]; |
模式删除
1 | DROP SCHEMA <模式名> <CASCADE|RESTRICT> |
SQL语言关键字并不区分大小写,比如:
创建表Student:
create table Student;
CREATE TABLE Student;
效果完全相同,但表名Student必须严格区分大小写,字段名和属性值同理。
2.表的定义,删除和修改
创建
1 | CREATE TABLE 表名(字段名 类型 字段约束,字段名 类型); |
删除
1 | DROP TABLE <表名> {RESTRICT|CASCADE}; |
修改
1 | ALTER TABLE <表名> |
3.索引的建立、修改和删除
数据量比较大的时候,查询耗时长,建立索引可以有效减少消耗时间。索引可以建立在一列或者多列上。前提是保证索引列是唯一。
创建
1 | CREATE [UNIQUE] [CLUSTER] INDEX <索引名> |
修改
1 | ALTER INDEX <旧索引名> RENAME TO <新索引名> |
删除
1 | DROP INDEX <索引名> |