1、表的创建
(1)创建表,包含非空和默认值约束
包含非空约束的列,当在添加数据时,如果该列值为NULL,则数据库会报错,添加失败。非空约束避免了由于用户的误操作导致的数据不完整性。
(2)向表中添加数据
执行结果:
有结果可知,对于允许为空的字段birthday,在没有插入任何数据的情况下,默认为NULL,插入操作得以正确执行。
对于有默认值的字段,当没有给它设置值时,它被以默认值填充。
2、表的修改
(1)增加新列
当向已有数据的表中添加新列的时候,DBMS默认新列的值为NULL,如果为新列增加非空约束,则必须为它指定默认值。当然,如果表中不存在任何数据,则不存在这个问题。
例如向学生表中增加email字段(此时student表中已经有两条数据记录)
执行的结果是报错,修改为:
执行结果:
(2)删除列
- 在SQL SERVER中,可以直接删除没有任何约束的列。
eg:删除没有任何约束的列birthday
- 在SQL server2000中有非空约束的列的删除必须先删除非空约束,才能删除该列,但是在sql server 2005中,有非空约束的列也可以直接删除。
- 那些赋予默认值,作为主键或者在另外表中作为外键的列则不能删除
eg:企图删除默认值为‘男’的sex 列,执行
alter table student
drop column sex将失败
删除列后,该列的所有数据也被删除了。
(3)修改列
eg1:修改数据允许的最大长度
alter table student
alter column Email char(25)
在这里要注意,一般是增长最大的数据长度,如果是减少最大的数据长度时,如果已有数据的长度大于要减少到的长度,则出于对已有数据的保护,表的修改会失效。
eg2:去掉为空约束
alter table student
alter column sname char(20) null
eg3:改变列的数据类型
alter table student
alter column sno char(5) not null
这种情况要求旧的数据类型必须和新的数据类型兼容。比较常用的是从int型或者decimal型转换成char型。
3、表的删除和重命名
(1)表的重命名
eg:将student表改名为mystudent
sp_rename 'student','mystudent'
eg:重命名表中的列
sp_name 'mystudent.sname','studentname','colume'
eg:删除mystudent表
drop table mystudent
删除表后,该表的所有数据也被删除了。当某表与其他表存在某种关系时,某些DBMS要求先删除这种关联之后,才允许删除该表。
4、数据库的创建、修改和删除
一个例子: