一、建库的SQL语句
T-SQL创建数据库的语法:
CREATE
DATABASE
数据库名
ON [ PRIMARY ]
(
< 数据文件参数 > [ ,…n ] [ <文件组参数> ]
)
[ LOG ON ]
(
< 日志文件参数 > [ ,…n ]
)
ON [ PRIMARY ]
(
< 数据文件参数 > [ ,…n ] [ <文件组参数> ]
)
[ LOG ON ]
(
< 日志文件参数 > [ ,…n ]
)
创建数据库示例(一个数据文件和一个日志文件):
CREATE
DATABASE
studentDB
ON PRIMARY -- 默认就属于PRIMARY主文件组,可省略
(
NAME = ' studentDB_data ' , -- 主数据文件的逻辑名
FILENAME = ' D:\DB\studentDB_data.mdf ' , -- 主数据文件的物理名
SIZE = 5mb, -- 主数据文件初始大小
MAXSIZE = 100mb, -- 主数据文件增长的最大值
FILEGROWTH = 15 % -- 主数据文件的增长率
)
LOG ON
(
NAME = ' studentDB_log ' ,
FILENAME = ' D:\DB\studentDB_data_log.ldf ' ,
SIZE = 2mb,
FILEGROWTH = 1MB
)
GO
ON PRIMARY -- 默认就属于PRIMARY主文件组,可省略
(
NAME = ' studentDB_data ' , -- 主数据文件的逻辑名
FILENAME = ' D:\DB\studentDB_data.mdf ' , -- 主数据文件的物理名
SIZE = 5mb, -- 主数据文件初始大小
MAXSIZE = 100mb, -- 主数据文件增长的最大值
FILEGROWTH = 15 % -- 主数据文件的增长率
)
LOG ON
(
NAME = ' studentDB_log ' ,
FILENAME = ' D:\DB\studentDB_data_log.ldf ' ,
SIZE = 2mb,
FILEGROWTH = 1MB
)
GO
创建数据库示例(两个数据文件和两个日志文件。多个类似):
CREATE
DATABASE
employees
ON
(
/**/ /*-主数据文件的具体描述-*/
NAME = ' employee1 ' ,
FILENAME = ' D:\DB\employee1_Data.mdf ' ,
SIZE = 10 ,
FILEGROWTH = 10 %
),
(
/**/ /*-次要数据文件的具体描述-*/
NAME = ' employee2 ' ,
FILENAME = ' D:\DB\employee2_Data.mdf ' ,
SIZE = 20 ,
MAXSIZE = 100 ,
FILEGROWTH = 1
)
LOG ON
(
/**/ /*-日志文件1的具体描述-*/
NAME = ' employeelog1 ' ,
FILENAME = ' D:\DB\employeelog1_Log.ldf ' ,
SIZE = 10 ,
FILEGROWTH = 1
),
(
/**/ /*-日志文件2的具体描述-*/
NAME = ' employeelog2 ' ,
FILENAME = ' D:\DB\employeelog2_Log.ldf ' ,
SIZE = 10 ,
MAXSIZE = 50 ,
FILEGROWTH = 1
)
GO
ON
(
/**/ /*-主数据文件的具体描述-*/
NAME = ' employee1 ' ,
FILENAME = ' D:\DB\employee1_Data.mdf ' ,
SIZE = 10 ,
FILEGROWTH = 10 %
),
(
/**/ /*-次要数据文件的具体描述-*/
NAME = ' employee2 ' ,
FILENAME = ' D:\DB\employee2_Data.mdf ' ,
SIZE = 20 ,
MAXSIZE = 100 ,
FILEGROWTH = 1
)
LOG ON
(
/**/ /*-日志文件1的具体描述-*/
NAME = ' employeelog1 ' ,
FILENAME = ' D:\DB\employeelog1_Log.ldf ' ,
SIZE = 10 ,
FILEGROWTH = 1
),
(
/**/ /*-日志文件2的具体描述-*/
NAME = ' employeelog2 ' ,
FILENAME = ' D:\DB\employeelog2_Log.ldf ' ,
SIZE = 10 ,
MAXSIZE = 50 ,
FILEGROWTH = 1
)
GO
删除数据库的语法:
DROP
DATABASE
数据库名
删除数据库示例:
USE
master
--
设置当前数据库为master,以便访问sysdatabases表
GO
IF EXISTS ( SELECT * FROM sysdatabases WHERE name = ' studentDB ' )
DROP DATABASE studentDB -- EXISTS()语句:检测是否存在studentDB数据库,如果存在studentDB数据库,则删除
CREATE DATABASE studentDB
ON (
…
)
LOG ON
(
…
)
GO
GO
IF EXISTS ( SELECT * FROM sysdatabases WHERE name = ' studentDB ' )
DROP DATABASE studentDB -- EXISTS()语句:检测是否存在studentDB数据库,如果存在studentDB数据库,则删除
CREATE DATABASE studentDB
ON (
…
)
LOG ON
(
…
)
GO
二、建表的SQL语句
建表的语法:
CREATE
TABLE
表名
(
字段1 数据类型 列的特征,
字段2 数据类型 列的特征,
……
)
(
字段1 数据类型 列的特征,
字段2 数据类型 列的特征,
……
)
建表示例:
USE
studentDB
--
将当前数据库设置为studentDB
GO
CREATE TABLE stuInfo /**/ /*-创建学员信息表-*/
(
stuName VARCHAR ( 20 ) NOT NULL , -- 姓名,非空(必填)
stuNo CHAR ( 6 ) NOT NULL , -- 学号,非空(必填)
stuAge INT NOT NULL , -- 年龄,INT类型默认为4个字节
stuID NUMERIC( 18 , 0 ), -- 身份证号
stuSeat SMALLINT IDENTITY ( 1 , 1 ), -- 座位号,自动编号
stuAddress TEXT -- 住址,允许为空,即可选输入
)
GO
GO
CREATE TABLE stuInfo /**/ /*-创建学员信息表-*/
(
stuName VARCHAR ( 20 ) NOT NULL , -- 姓名,非空(必填)
stuNo CHAR ( 6 ) NOT NULL , -- 学号,非空(必填)
stuAge INT NOT NULL , -- 年龄,INT类型默认为4个字节
stuID NUMERIC( 18 , 0 ), -- 身份证号
stuSeat SMALLINT IDENTITY ( 1 , 1 ), -- 座位号,自动编号
stuAddress TEXT -- 住址,允许为空,即可选输入
)
GO
删除表的语法:
DROP
TABLE
表名
删除表示例:
USE
studentDB
--
将当前数据库设置为studentDB,以便在studentDB数据库中建表
GO
IF EXISTS ( SELECT * FROM sysobjects WHERE name = ’stuInfo’ )
DROP TABLE stuInfo
CREATE TABLE stuInfo /**/ /*-创建学员信息表-*/
(
…
)
GO
GO
IF EXISTS ( SELECT * FROM sysobjects WHERE name = ’stuInfo’ )
DROP TABLE stuInfo
CREATE TABLE stuInfo /**/ /*-创建学员信息表-*/
(
…
)
GO
三、加约束的SQL语句
常用的约束类型:
主键约束(Primary Key Constraint)、唯一约束(Unique Constraint)、检查约束(Check Constraint)、默认约束(Default Constraint)、外键约束(Foreign Key Constraint)
约束名的取名规则推荐采用:约束类型_约束字段
添加约束的语法:
ALTER
TABLE
表名
ADD CONSTRAINT 约束名 约束类型 具体的约束说明
ADD CONSTRAINT 约束名 约束类型 具体的约束说明
添加约束示例:
ALTER
TABLE
stuInfo
ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo) -- 添加主键约束(stuNo作为主键)
ALTER TABLE stuInfo
ADD CONSTRAINT UQ_stuID UNIQUE (stuID) -- 添加唯一约束(因为每人的身份证号全国唯一)
ALTER TABLE stuInfo
ADD CONSTRAINT DF_stuAddress
DEFAULT ( ' 地址不详 ' ) FOR stuAddress -- 添加默认约束(如果地址不填,默认为“地址不详”)
ALTER TABLE stuInfo
ADD CONSTRAINT CK_stuAge
CHECK (stuAge BETWEEN 15 AND 40 ) -- 添加检查check约束,要求年龄只能在15-40岁之间
ALTER TABLE stuMarks
ADD CONSTRAINT FK_stuNo -- 添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)
FOREIGN KEY (stuNo) REFERENCES stuInfo(stuNo)
GO
ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo) -- 添加主键约束(stuNo作为主键)
ALTER TABLE stuInfo
ADD CONSTRAINT UQ_stuID UNIQUE (stuID) -- 添加唯一约束(因为每人的身份证号全国唯一)
ALTER TABLE stuInfo
ADD CONSTRAINT DF_stuAddress
DEFAULT ( ' 地址不详 ' ) FOR stuAddress -- 添加默认约束(如果地址不填,默认为“地址不详”)
ALTER TABLE stuInfo
ADD CONSTRAINT CK_stuAge
CHECK (stuAge BETWEEN 15 AND 40 ) -- 添加检查check约束,要求年龄只能在15-40岁之间
ALTER TABLE stuMarks
ADD CONSTRAINT FK_stuNo -- 添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)
FOREIGN KEY (stuNo) REFERENCES stuInfo(stuNo)
GO
删除约束的语法:
ALTER
TABLE
表名
DROP CONSTRAINT 约束名
DROP CONSTRAINT 约束名
ALTER
TABLE
stuInfo
DROP CONSTRAINT DF_stuAddress
DROP CONSTRAINT DF_stuAddress