T-SQL入门(二)——创建表
上一篇中,提到了创建数据库,这一篇当然就是创建数据库中的表。
创建数据表的常规语法为:
CREATE TABLE 表名称
(
列名称1 数据类型,是否为空,约束,
列名称2 数据类型,是否为空,约束,
列名称3 数据类型,是否为空,约束,
....
)
(
列名称1 数据类型,是否为空,约束,
列名称2 数据类型,是否为空,约束,
列名称3 数据类型,是否为空,约束,
....
)
其中数据类型可以参看MSDN中的说明,很详细,传送门。
下面就在上次创建的stuDB中建立一个student表:
USE stuDB --转到stuDB数据库
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='student') --如果有同名的,删除
DROP TABLE test1
GO
CREATE TABLE student
(
tid int IDENTITY(1,1) NOT NULL, --tid,以种子1,增量1自增长,不可为空
tname varchar(20) NOT NULL, --姓名,20varchar类型长度,不可为空
tage int NOT NULL DEFAULT 18 CHECK(tage > 0), --年龄,int型,不可为空,默认18,大于0约束
tInterTime datetime not null DEFAULT getDate() --加入时间,datetime类型,不为空,默认为插入时系统世界
)
ALTER TABLE student ADD CONSTRAINT RK_UID --创建主键,tid
PRIMARY KEY(tid)
INSERT INTO student (tname,tage) VALUES('ceshi1',25) --插入一条数据,没有插入的字段,按默认处理
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='student') --如果有同名的,删除
DROP TABLE test1
GO
CREATE TABLE student
(
tid int IDENTITY(1,1) NOT NULL, --tid,以种子1,增量1自增长,不可为空
tname varchar(20) NOT NULL, --姓名,20varchar类型长度,不可为空
tage int NOT NULL DEFAULT 18 CHECK(tage > 0), --年龄,int型,不可为空,默认18,大于0约束
tInterTime datetime not null DEFAULT getDate() --加入时间,datetime类型,不为空,默认为插入时系统世界
)
ALTER TABLE student ADD CONSTRAINT RK_UID --创建主键,tid
PRIMARY KEY(tid)
INSERT INTO student (tname,tage) VALUES('ceshi1',25) --插入一条数据,没有插入的字段,按默认处理
最终形成的表:
创建了简单的数据表后,还可以对表进行增删或者进行约束和索引。
我们希望在student表中增加两个字段,班级id和民族。
ALTER TABLE student ADD cid int NULL
ALTER TABLE student ADD nation varchar(10) NULL
ALTER TABLE student ADD nation varchar(10) NULL
注:在已有的数据表中增加字段时需要注意的是不能指定当前字段不为空。
现在student表示下面的样子:
但我现在没有班级表,不想要cid,可以删除之:
ALTER TABLE student DROP COLUMN cid
如果现在我想把原先的年龄的默认值从18改为16,改怎么做?默认值是不可以直接更改的,所以我们只能删了原来的默认值,然后再重新添加,但又有个问题,如何得到默认值的名字呢?这里需要一些变量的知识了,但暂且先不说,只要可以满足当前的功能即可。
DECLARE @dname varchar(100) --声明变量
select @dname=name from sysobjects where xtype = 'D' and parent_obj = object_id('student') and name like '%tage%' --查询默认值的名称
--ALTER TABLE student DROP CONSTRAINT @dname --删除语句不支持变量,所以要用下面的拼接函数
EXEC('ALTER TABLE student DROP CONSTRAINT ' + @dname)
ALTER TABLE student ADD CONSTRAINT tageDefault Default '16' for tage
select @dname=name from sysobjects where xtype = 'D' and parent_obj = object_id('student') and name like '%tage%' --查询默认值的名称
--ALTER TABLE student DROP CONSTRAINT @dname --删除语句不支持变量,所以要用下面的拼接函数
EXEC('ALTER TABLE student DROP CONSTRAINT ' + @dname)
ALTER TABLE student ADD CONSTRAINT tageDefault Default '16' for tage
一个简要的总结:
删除数据库/表/索引
drop database 数据库名
drop table 表名
drop index 表名.索引名
drop procedure 存储方法名
drop view 视图名
.创建约束
alter table 表名 add constraint 约束名 约束类型
主键约束:primary key(列名)
外键约束:foregin key(列名) references 主表名(主键名)
唯一约束:unique(列名)
默认约束:default(默认值) for 列名
check约束:check(条件)
//标识列可以在创建列的时候,使用identity(1,1)
简要总结的来源在这里。
本文发布与Catcoder,转载请注明链接。