一、表结构修改
1、ADD增加列
alter table 表名 add 字段名称 类型(int,char,VARCHAR...)
2、DROP删除列
alter table 表名 drop column 删除列名
遇见问题:一开始我使用的是
alter table 表名 drop 删除列名
结果报错显示‘ ’不是约束。在删除普通列的时候,一定要使用关键字column,alter table 语句默认添加的是列,删除的则是约束。
3、DROP删除约束
alter table 表名 drop constraint 对应的外键或主键名称;
遇见问题:一开始我使用的是
删除主键约束:alter table 表名 drop primary key;
删除外键约束:alter table 表名 drop foreign key 外键;
SQl显示primary与foreign附近有错误,需要指定具体的哪个键名方可。
4、DROP增加约束
添加主键约束:alter table 表名 add constraint 主键约束名 primary key(约束键名)
添加外键约束:alter table 表名 add constraint 外键约束名 foreign key(约束键名) references 约束表名(约束键名)
检查约束:alter table 表名
add constraint 约束键名 check(Grade>=0 and Grade<=100)
–主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空。
–唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。
–检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束。
–默认约束(Default Constraint):某列的默认值,如我们的男性同学较多,性别默认为男。
–外键约束(Foreign Key):用于在两表之间建立关系需要制定引用主表的哪一列。
删除约束需要注意必须先删除外键才能删除主键。而增加约束就要增加主键再增加外键。
5、ALTER修改列
-
将Sname char(20) 修改为 Sname nchar(4),并可以为空(去除非空约束)
alter table S(表名) alter column Sname nchar(4) null
6、使用系统存储过程Sp_rename 可修改列名,表名
exec sp_rename 'SPJ','SSPJ';
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QK2yxUNP-1649434353307)(C:\Users\86135\AppData\Roaming\Typora\typora-user-images\image-20220406215634255.png)]
7.insert(插入)命令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojPOv8gT-1649434353309)(C:\Users\86135\AppData\Roaming\Typora\typora-user-images\image-20220406222317150.png)]
8、update更改命令
update Students(表名)
set 班级(列名)= '21';
update Students
set 入学时间 = '2020-10-1';
update Students
set 身份证号码 ='441323200304012343'
select * from Students order by 班级; -查看更改
参考链接:https://www.cnblogs.com/vin-c/p/15577429.html
例:批量更改Reports表中的“学年度,学期”
update Reports set 学年度 = '2020' ,学期 ='一' where Sno='S01 'and Cno='C01'
update Reports set 学年度 = '2015' ,学期 ='二' where Sno='S02 'and Cno='C02'
update Reports set 学年度 = '2021' ,学期 ='一' where Sno='S03 'and Cno='C03'
update Reports set 学年度 = '2016' ,学期 ='二' where Sno='S04 'and Cno='C04'
update Reports set 学年度 = '2018' ,学期 ='一' where Sno='S05 'and Cno='C05'
9、添加约束
例:增加对:班级(第1位为’2’, 第2位为’0,1,2,9’第3-8位为’0-9’),Ssex(‘男’,’女’), 学年度(2000-2099) , 学期(‘一’,’二’)的约束
alter table Students add check(班级 like '[2]''[0][1][2][9]''[0-9]''[0-9]''[0-9]''[0-9]''[0-9]''[0-9]' )
alter table Students add check(ssex = '男' or ssex = '女')
alter table Reports add check(学年度>=2000 and 学年度 <=2099 )
alter table Reports add check(学期='一' or 学期 ='二')
注意:我一开始使用的是
alter table Students add check(班级 regexp '[2]''[0][1][2][9]''[0-9]''[0-9]''[0-9]''[0-9]''[0-9]''[0-9]' )
后来显示regexp附近出错。应为or或者and,这里应该是regexp必须和or/and一起使用的意思。
参考链接:https://blog.csdn.net/Qingyuyuehua/article/details/115427471?ops_request_misc=&request_id=&biz_id=102&utm_term=
10、alter修改列
例:将Sname char(20) 修改为 Sname nchar(4),并可以为空(去除非空约束)
alter table S
alter column Sname nchar(4) null
11INERT插入一查询结果(一个集合)
例:建立与Students结构相同的表:毕业生档案表。将Students表中2016年以前入学的学生插入到“毕业生档案表”。
select * into 毕业生档案表from Students where Students.入学时间<='2016'
12DELETE删除
例:删除Students表中2016以前年入学的学生
delete from Students where 入学时间<='2016'