1、表的创建
(1)创建表,包含非空和默认值约束
create table student ( sno char not null, sname char(20) not null default 'qxy', sex char(2) not null default '男', birthday datatime, dno char(4) not null )
包含非空约束的列,当在添加数据时,如果该列值为NULL,则数据库会报错,添加失败。非空约束避免了由于用户的误操作导致的数据不完整性。
(2)向表中添加数据
insert into student (sno,sname,sex,dno) values (12,'张三丰','男',3) insert into student(sno,birthday,dno) values (5,'2010/08/11',11) select * from student
执行结果:
有结果可知,对于允许为空的字段birthday,在没有插入任何数据的情况下,默认为NULL,插入操作得以正确执行。
对于有默认值的字段,当没有给它设置值时,它被以默认值填充。
2、表的修改
(1)增加新列
当向已有数据的表中添加新列的时候,DBMS默认新列的值为NULL,如果为新列增加非空约束,则必须为它指定默认值。当然,如果表中不存在任何数据,则不存在这个问题。
例如向学生表中增加email字段(此时student表中已经有两条数据记录)
alter table student add Email char(15) not null
执行的结果是报错,修改为:
alter table student add Email char(15) not null default 'default Email'
执行结果:
(2)删除列
eg:删除没有任何约束的列birthday
alter table student drop column birthday
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、数据库的创建、修改和删除
一个例子:
if db_id(N'test')is not null drop database test go create database test on ( name='t', filename='c:/test.mdf', size=10mb, maxsize=100mb, filegrowth=5 ) log on ( name='s', filename='c:/test.ldf', size=10mb, filegrowth=2mb ) go alter database test modify file ( name='t', size=40mb )