001_创建数据库和表
--数据库的创建不能再事物中展开,因为创建数据库本身就是一个事物,平常应该注意避免嵌套事务
--创建数据库TEST_BAK
IF EXISTS ( SELECT 1
FROM sys.sysdatabases
WHERE name = 'TEST_BAK' )
PRINT N'数据库 ''TEST_BAK'' 已存在!'
ELSE
BEGIN
CREATE DATABASE TEST_BAK ON
(
NAME='TEST_BAK_mdf',--数据文件逻辑名
FILENAME='E:\sql_2008\TEST_BAK.mdf',--数据文件存放路径
SIZE=3MB,--初始大小
MAXSIZE=30MB,--最大大小
FILEGROWTH=2MB--整张速度
) LOG ON --日志文件
(
NAME='test_ldf',--日志文件逻辑名
FILENAME='E:\sql_2008\TEST_BAK.ldf',--数据文件存放路径
SIZE=1MB,--初始大小
MAXSIZE=10MB,--最大大小
FILEGROWTH=1MB--整张速度
)
END
USE TEST_BAK
--------------------------------------------------------------
BEGIN TRANSACTION trans_test
IF EXISTS ( SELECT *
FROM sysobjects
WHERE name = N'stuInfo' )
DROP TABLE stuInfo
go
IF @@ERROR <> 0
PRINT N'删除table:''stuInfo''失败!'
go
CREATE TABLE stuInfo /*-创建学员信息表-*/
(
stuNo VARCHAR(6) NOT NULL
UNIQUE , --学号,非空(必填)
stuName VARCHAR(20) NOT NULL , --姓名,非空(必填)
stuAge INT NOT NULL , --年龄,INT类型默认为4个字节
stuID NUMERIC(18, 0) , --身份证号
stuSeat INT IDENTITY(1, 1) , --座位号,自动编号
stuAddress TEXT --住址,允许为空,即可选输入
)
go
IF @@ERROR <> 0
PRINT N'创建table:''stuInfo''失败!'
go
IF EXISTS ( SELECT *
FROM sysobjects
WHERE name = N'stuMarks' )
DROP TABLE stuMarks
IF @@ERROR <> 0
PRINT N'删除table:''stuMarks''失败!'
CREATE TABLE stuMarks
(
ExamNo VARCHAR(6) NOT NULL
FOREIGN KEY REFERENCES stuInfo ( stuNo ) , --考号
stuNo VARCHAR(6) NOT NULL , --学号
writtenExam INT NOT NULL , --笔试成绩
LabExam INT NOT NULL --机试成绩
)
go
IF @@ERROR <> 0
PRINT N'创建table:''stuMarks''失败!'
go
IF EXISTS ( SELECT *
FROM sysobjects
WHERE name = N'users' )
DROP TABLE users
IF @@ERROR <> 0
PRINT N'删除table:''users''失败!'
go
CREATE TABLE users
(
userID INT NOT NULL
PRIMARY KEY
IDENTITY(1, 1) ,
userName VARCHAR(255) NOT NULL
UNIQUE ,
userPWD VARCHAR(255) NOT NULL ,
userAge INT ,
userBirthDay DATETIME ,
userEmail VARCHAR(255)
)
go
IF @@ERROR <> 0
PRINT N'创建table:''users''失败!'
COMMIT TRANSACTION trans_test
---------------------------------------------------------------
--调用sp_helpconstraint 来查询表 stuMarks 的外键
EXEC sp_helpconstraint N'stuMarks'
--直接删除外键
ALTER TABLE stuMarks
DROP constraint FK__stuMarks__ExamNo__023D5A04
--删除数据库
DROP DATABASE TEST_BAK