创建,修改和删除表

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)删除列

  • 在SQL SERVER中,可以直接删除没有任何约束的列。

eg:删除没有任何约束的列birthday

alter table student drop column 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、数据库的创建、修改和删除

一个例子:

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 ) 

 

 

你可能感兴趣的:(sql,server,table,null,database,insert,email)