数据库的基本操作及完整性约束

一、表结构修改

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'
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值