DDL2

15sql server中,我们使用自动编号列identity(身份种子)来进行主键自动编号。如:create table test(t_id int identity primary key,t_name varchar(20));默认身份种子的起始值和每次的增加值都为1,即从1开始每次增加1

当然,我们也可以自己定义身份种子的起始值和每次的增加值 identity(起始值,增加值),如:create table test(t_id int identity2020 primary key,t_name varchar(20));表示20开始每次增加2

我们可以用print @@identity 得到身份种子当前的值。

16、在实际项目中,我们会有多张表格,而它们之间不可避免地会产生关系(一对一/一对多/多对多)。

      例如,我们之前所分析的班级和学生之间的一对多关系,一个班级有多个学生,一个学生属于一个班级,首先我们需要在从表学生里添加一列作为外键去引用班级表的主键。

      :create table student (s_id int identity primary key,s_name varchar(20),c_id int);

           Create table class(c_id int identity primary key,c_name varchar(20) not null);

      我们在student表里我们添加了1c_id(也可以取其他名字,不过一般习惯就以关联表的主键命名),将这列作为student里的外键,通过关联class表里的主键列c_id,让2张表产生关系。为避免产生学生所属的编号的班级在班级表中并不存在,我们需要在数据库端强制性的将这些关系用约束的形式加以表现和规范,即为student里作为外键的列。如:create table student (s_id int identity primary key,s_name varchar(20),c_id int constraint fk_stu_class foreign key(c_id) references class(c_id)); 需要注意的是,既然我们将学生表里的c_id作为外键并添加了约束去引用班级表的主键,那么这2列必须具有相同或类似的数据类型结构。

      如果将2张表清空,再次插入数据时,因为从表依赖于主表 因此应该先插入主表数据,即先有班级信息 再有学生信息删除表时,因为有外键约束,也应该先删除从表,将约束删除后,才能删除主表,即先删除student后才能删除class

17、如果需要修改表结构,或者在建表之后再添加/修改约束的话,我们需要使用alter

      首先来看添加/修改列:

1)添加列的语法:alter table 表名 add 新列名 列的类型;(多个新列之间用逗号分隔)

      如:alter table student add address varchar(50);

2)修改某列的类型/长度: alter table 表名 alter column 列名 修改后的类型[(约束)];

      如:alter table student alter column s_name int;

           alter table student alter column s_name varchar(30);

3) 添加/修改列的非空约束也可以用这样的语法,只需要在后面加上约束的相关语句:

      如:alter table student alter column s_id int not null;

            alter table student alter column s_id int null;

4)通过执行预定义的存储过程来修改表名和列名(了解即可 不需要掌握);

      如:exec sp_rename ‘student’,’t_stu

5)删除某列:alter table 表名 drop column 列名

      如:alter table student drop column s_id;

18、表的结构一般不会轻易改变,alter命令更常用的地方在于为已经建立的表添加/删除主键和外键约束;

      Alter table add constraint 约束名 约束类型.

      Alter table drop constraint 约束名;

比如,重新建立表student,不设置任何约束,下面通过alters_id添加主键约束,需要注意的是,被添加主键约束的列必须具有唯一约束或非空约束:

如:create table student (s_id int primary key ,s_name varchar(10),c_id int, alter table student alter column s_id int not null alter table student add constraint pk_stu primary key,

c_id添加外键约束

alter table student add constraint fk_stu_class foreign key (c_id) references class (c_id);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值