1.SQL语言概述
结构化查询语言(Structured Query Language)简称SQL,是最重要的关系数据库操作语言。
SQL语言的特点:
1. 一体化
2. 高度非过程化
3. 简洁
4. 使用方式多样
SQL功能 | 命令动词 |
数据查询 | SELECT |
数据定义 | CREATE、DROP、ALTER |
数据操纵 | INSERT、UPDATE、DELETE |
数据控制 | GRANT、REVOKE、DENY |
2.SQL语言支持的数据类型
数值型:
准确型:
整数:
Bigint: 8字节, Int: 4字节
Smallint: 2字节, Tinyint: 1字节(0~255)
Bit: 1位,存储1或0
小数
Numeric(p,q)或Decimal(p,q),
其中:p为数字位长度,q:小数位长度。
近似型:
Float: 8字节
Real: 4字节
字符串型:
普通编码字符串类型:
Char(n): 定长存储,n<=8000
Varchar(n): 不定长存储(按实际长度存储),长度最大不超过n , n<=8000
注:n为字符个数,1个汉子算2个字符
Text: 存储大于8000字节的文本(将被弃用的类型)
varchar(max): 存储大于8000字节的文本
统一字符编码字符串类型:
nchar(n): 定长存储,n<=4000
nvarchar(n): 不定长存储,长度最大不超过n , n<=4000
ntext: 存储大于8000字节的文本(将被弃用的类型)
nvarchar(max): 存储大于8000字节的文本
注:n为字符个数,每个字符占两个字节
二进制字符串类型:
Binary(n): 固定长度,n<=8000
Varbinary(n): 可变长度,n<=8000
注:n为二进制数据的字节数
image: 用于存储超过8000字节的二进制数据。(将被弃用的类型)
varbinary(max): 用于存储超过8000字节的二进制数据
日期时间类型:
Date: 3字节, 定义范围为0000-1-1到9999-12-31的日期。默认格式为:YYYY-MM-DD
time[(n)]: 3-5字节, 定义一天中的某个时间,该时间基于24小时制。默认格式为:hh:mm:ss[.nnnnnnn], n为秒的小数位数,取值范围是0到7的整数。
Datetime: 8字节, 年月日时分秒毫秒
(例:‘2001/08/03 10:30:00.000’ )存储从1753年1月1日到9999年12月31日的日期和时间数据
SmallDateTime: 4字节, 年月日时分
(例:‘2001/08/0310:30:00’ )存储从1900年1月1日到2079年6月6日的日期和时间数据
Datetime2: 6-8字节。 定义一个结合了24小时制时间的日期。默认格式:YYYY-MM-DD hh:mm:ss[.nnnnnnn],n表示秒的小数位数,默认精度是7位小数。
Datetimeoffset: 8-10字节。 定义一个与采用 24 小时制并和可识别时区的一日内时间相组合的日期,该数据类型使用户存储的日期和时间(24小时制)是时区一致的。 语法格式为:datetimeoffset [(n)],n为秒的精度,最大为7。默认格式为:YYYY-MM-DDhh:mm:ss[.nnnnnnn] [{+|-}hh1:mm1],
3 .数据定义功能
对 象 | 创 建 | 修 改 | 删 除 |
架构 | CREATE SCHEMA |
| DROP SCHEMA |
表 | CREATE TABLE | ALTER TABLE | DROP TABLE |
视图 | CREATE VIEW | ALTER VIEW | DROP VIEW |
索引 | CREATE INDEX | ALTER INDEX | DROP INDEX |
架构(schema,也称为模式)是数据库下的一个逻辑命名空间。
定义架构:
CREATESCHEMA {
<架构名>
|AUTHORIZATION <所有者名>
|<架构名> AUTHORIZATION <所有者名>
}
[ { 表定义语句 | 视图定义语句
|授权语句 | 收权语句 | 拒绝权限语句 }
]
删除架构:
DROPSCHEMA <架构名>
{<CASCADE> | <RESTRICT> }
CASCADE:删除架构的同时将该架构中所有的对象一起删除。
RESTRICT:如果被删除的架构中包含对象,则拒绝删除此架构。
定义基本表:
CREATE TABLE <表名>(
<列名> <数据类型> [列级完整性约束定义]
{, <列名> <数据类型>
[列级完整性约束定义] … }
[,表级完整性约束定义 ] )
在列级完整性约束定义处可定义的约束:
NOT NULL:限制列取值非空。
DEFAULT:给定列的默认值。
UNIQUE:限制列取值不重。
CHECK:限制列的取值范围。
PRIMARY KEY:指定本列为主键。
FOREIGN KEY:定义本列为引用其他表的外键。
修改表结构:
ALTER TABLE <表名>
[ ALTER COLUMN <列名> <新数据类型>]
| [ ADD <列名> <数据类型>[约束]]
| [ DROP COLUMN <列名> ]
| [ ADD [constraint <约束名>] 约束定义]
| [ DROP [constraint] <约束名>]
Bigint: 8字节, Int:4字节