sql小结(一)

sql总结(一)
--创建数据库
create database dbname

--创建表,这里首先创建两个简单的表,tablename 和 tabname
create table tablename
(
id char(4) ,
name char(16) not null,
sex cahr(2) check(sex in('男','女'))
)
create table tabname
(
id char(4),
tab_name char(16),
)
/*修改表*/
--修改表名
Sp_rename '旧表名','新表名'

--修改字段名
Sp_rename '表名.旧字段名',

'新字段名','column'

--字段修改时不用考虑主键约束,外键约束等,如果有CHECK约束字段名不可改,不能使用alter table修改字段名,计算字段名不可改。

--增加字段
alter table tablename
add tel char(11) 

--删除字段
alter tablename
drop column tel;

--给字段增加主键约束
alter tablename
add constraint pk_tablename_001 primary key(id);

--给字段增加外键约束
alter tabname
add constraint fk_tabname_001 foreign key(id) references tablename(id);

--给字段增加check约束
alter tabname with check/with nocheck --在添加条件约束时系统会自动检测表中的原有记录和条件是否冲突,如果冲突则约束无法添加。With check表示检测,可以省略,with nocheck表示不检测,强制添加约束。添加后只能新记录有效。
add constraint ck_tabname_001 check(tab_name like 'tab_%');

--给字段增加唯一约束
alter tabname
add contraint un_tabname_001 unique(id,tab_name);

--开启活关闭约束
alter tabname
check/nocheck constraint un_tabname_001(all);

--删除约束
alter tabname
drop constraint un_tabname_001;



-----------------------------------------

--修改表格的例子

-----------------------------------------


-- 新建数据库‘学生管理’

create database 学生管理

 

--新建表格  学生(学号,姓名,性别,年龄,住址)

--学号为主键,姓名不允许空,性别的值是男或女,年龄在6到30岁之间,住址默认为‘南京’


create table 学生(

 学号 char(10) primary key,

 性名 varchar(50) not null,

 性别 char(2) check(性别 in('男','女')),

 年龄 int ,

 住址 varchar(50) ,
constraint ck_xuesheng_nianling check(年龄 between 6 and 30),
constraint DF_xuesheng_zhuzhi default '南京'

)

 
--新建表格  课程(课号,课名,课时)

--课号为主键,课名不允许空,课时为正值

create table 课程(

 课号 char(10) primary key,

 课名 varchar(50) not null,

 课时 char(10) check(课时>0)

)

 

--新建表格  选课(课号,学号)



create table 选课(

 课号 char(10),

 学号 char(10)

)

 

-- 修改数据库名为‘student’

sp_renamedb '学生管理','student'

 

--修改表格名称,将学生表改为‘xuesheng’,将课程表名改为‘kecheng’,将选课表名改为‘xuanke’


sp_rename '学生','xuesheng'

sp_rename '课程','kecheng'

sp_rename '选课','xuanke'

 

--修改xuesheng表中的字段名,将字段学号改为code,将姓名改为name



sp_rename 'xuesheng.学号','code'

sp_rename 'xuesheng.姓名','name'

 

--为kecheng表添加字段,字段名为序号,要求自动编号(标识)

alter table kecheng add 序号 int identity

 

--修改xuanke表,要求将课号和学号字段设置为非空约束


alter table xuanke alter column 课号 char(10) not null

alter table xuanke alter column 学号 char(10) not null

 

--为xuanke表添加外键约束,要求学号被xuesheng表中的学号约束,课号被kecheng表中的课号约束。并且将学号+课号设置为主键码。

alter table xuanke add constraint fk_xuanke_xuehao foreign key (学号) references xuesheng(code)

alter table xuanke add constraint fk_xuanke_kehao foreign key(课号) references kecheng(课号)

alter table xuanke add constraint pk_xuanke_kehao primary key(学号,课号)

 

--删除xuesheng表中的住址字段(注意是否有约束)

alter table xuesheng drop constraint DF_xuesheng_zhuzhi

alter table xuesheng drop column 住址

 --为xuesheng表添加字段address要求address的取值只能是‘南京’,‘徐州’,‘苏州’,‘杭州’

alter table xuesheng add address varchar(50) check(address in('南京','徐州','苏州','杭州'))

 

--将kecheng表中的课名设置为唯一约束

alter table kecheng add constraint un_kecheng_keming unique(课名)

 
--删除xuesheng表中年龄上的约束,并重新添加条件约束,范围改为5到28岁之间。

alter table xuesheng drop constraint ck_xuesheng_nianling

alter table xuesheng add constraint eee check(年龄 between 5 and 28)