- 全称:Structured Query Language(结构化查询语言)
- 不区分大小写
【】为必填
《》为选填
【D】表示数据库名
【int/char(n)/double/Date…】表示基本数据类型
《not null/primary key/default…》表示约束
【T】表示表名
【C】表示列名
【i】表示索引名
【V】表示值,控制用NULL
【Z】子查询结果(见嵌套查询)
【F】表示条件
语句 | 作用 |
---|---|
create database【D】 | 建立一个名为D的数据库 |
create table【T】(【C】【int/char(n)/double/Date…】《not null/primary key/default…》【C1】…,【C2】…) | 建立一个名为T的表,列名分别为C,C1,C2,数据类型选一个,约束条件可有可无 |
alter table【T】add 【C】【int/char(n)/double/Date…】《not null/primary key/default…》 | 给表T添加一列C |
alter table【T】drop《not null/primary key/default…》 | 在表T中删除完整性约束条件 |
alter table【T】alter column【C】【int/char(n)/double/Date…】 | 在表T中修改原有列C |
alter table【T】drop column【C】 | 在表T中删除列C |
sp_rename【T.C1】【C2】column | 将列C1重命名为C2 |
sp_rename【T1】,【T2】 | 将表T1重命名为T2 |
drop table【T】《restrict/cascade》 | 删除表T,restrict当表T有依赖关系不可删除,cascade无限制删除 |
insert into【T】 values【(V1,V2…)】 | 在表T中插入一行,值V1,V2应与表头列的顺序对应 |
insert into【T】【(C1,C2…)】values【(V1,V2…)】 | 在表T中插入一行,值V1,V2应与列C1,C2对应 |
insert into【T】【Z】 | 在表T中插入子查询Z的结果 |
update【T】set【C1=V1,C2=V2…】 | 修改所有行的列C1的值为V1值,列C2的值为V2值 |
update【T】set【C1=V1,C2=V2…】where【F】 | 在表T中查询满足条件F的行,修改对应列C1的值为V1值,对应列C2的值为V2值 |
delete from【T】 | 删除表T的所有行(元组) |
delete from【T】where【F/Z】 | 在表T中删除满足条件F的行 |
create《unique/clustered》index【i】on【T】(【C】《asc/desc》) | 给表T的列C建立名为i的索引,unique表示非聚簇索引,clustered表示聚簇索引,区别在于效率,后者高,适用于不经常更新的列。asc代表升序,desc代表降序 |
drop index【T.i】 | 删除表T的索引i |
技巧
- 所有的名字不得冲突,即名字唯一,不能使用关键字
- 名字与大小写无关,名字以字母开头
- 一表中最多有254个列
- 一表最多有249个索引
说再多不如自己实践
上例子
create database test0
create table Student
(
Sno char(9) not null primary key,
Sname char(10) not null,
Ssex char(2) default '男',
Sage int,
Sdep char(20)
)
sp_rename 'student.Sage', 'age', 'COLUMN'
CREATE CLUSTERED INDEX c_cno ON course(Cno)