一、建库的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