基本知识
常用基本数据类型
字符型数据类型
名称 | 大小 | 说明 |
---|
char(n) | 占n个字节 | 只能显示英文字符 |
nchar(n) | 2n字节+2字节额外开销 | Unicode编码,支持中文 |
ntext | 每字符2字节 | Unicode编码 |
nvarchar(max) | 2n字节 + 2字节额外开销 | 根据存储字符数字节占用空间动态变化,Unicode |
varchar(n) | n字节 + 2字节额外开销 | 仅支持英文,动态变化 |
二进制数据类型
名称 | 大小 |
---|
binary(n) | 占n个字节 |
image | 每个字符1字节 |
varbinary(n) | 每字符1字节 |
varbinary(max) | 每字符1字节 + 2字节额外开销 |
日期类型
名称 | 大小 | 说明 |
---|
Date | 占3个字节 | 保存月日 |
Datetime | 8个字节 | 保存年月日秒,精确到最近的3,3ms |
数字类型
- 整型:int
- 近似数据类型:float
- numeric(p ,q):总共有p位数,小数后面有d位
- 逻辑数据类型:bit, 仅取1,0或null
Null:表示当前字段值未知,未插入,不可用,或者稍后添加等。
Default:表示表中数据默认取值。
约束条件
- 非空约束(not null):限制当前列数据都不为空。
- 默认约束(default):为这个数据列定义一个默认值
- 唯一性约束(unique):表示当前列的所有数据都不重复(除了null,可以有多个null)
- 主键约束(primary key):表示这个或者这几个字段标识某一行数据
- 外键约束(foreign key):根据另外一个表的某个列获得的数据进行有效值判定,通常是另外一个表的主键
- 检查约束(check):对列进行约束,一般是自定义的表达式。
unique约束与not null 约束没有关系, unique只限制有值的情况下每一个值不能相同,可以有多个null 值。
表SQL语句
创建语句
create table table_name(字段名1 类型 额外条件(没有就省略), 字段名2 类型 额外条件,xxxx,xxx
)create table 表名
(<列名> <数据类型> [<列级完整性约束>],<列名> <数据类型> [<列级完整性约束>],xxxx,[<表级完整性约束条件>]
)
create table student_table(stu_no char(10) Primary key,name char(6) Not Null,sex char(2),birthday Datetime,class_no char(4)
)
Primary key(字段名1, 字段名2, 。。。。)
FOREIGN KEY (字段1) REFERENCES 表名(字段名2)
修改基本表 & 删除基本表
Alter table <表名>[add <新列名> <数据类型> [完整性约束]] [drop <完整性约束名>] [alter column <列名> <数据类型>]; Drop table <表名> [restrict | cascade]
- 删除时,cascade表示级联删除,依赖于这张表的也将被删除,例如参考这张表的外键所在的表也将被删除。
- restrict,表示如果有参考这张表的,在删除时候该条指令会被拒绝。默认restrict删除。
数据查询
SELECT [ALL | DISTINCT]<目标表达式>
[, <目标表达式>]
FROM <表或视图> [, 表或者视图]
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]]
- distinct 与 ALL 区别在于查询结果是否消除重复行,all显示所有,不消除重复行,结果有几个就有几个。distinct会将查询结果向同行只显示一行。
- [not] between and 表示在什么之间,包括两个边界。
- [not] in <值表> 这个字段值是否在这个值表当中
- 例如:where Sdept in (‘cs’, ‘ma’, ‘sse’)
- [not] like ‘<匹配串>’ [ESCAPE ‘<换码字符>’]
- 匹配串中可以使用占位符:%表示任意长度的字符串,下划线_只占单个字符。
- 如果本来就有%或者_需要\进行转义
- AND OR 用来连接多个查询条件,AND优先级高于OR
- ORDER BY 排序, ASC 升序 DESC 降序