【T-SQL】二、表的创建与管理

二、表的创建与管理

(一)创建表

语法格式
CREATE TABLE 表名
( 列名1 数据类型 列级完整性约束,
   列名2 数据类型 列级完整性约束,
   ……
   列名n 数据类型 列级完整性约束,
   表级完整性约束1,
   ……
   表级完整性约束n
 )

功能:CREATE TABLE命令为表定义各列的名字、数据类型和完整性约束。

列级完整性约束
DEFAULT 常量表达式:默认值约束。
NULL/NOT NULL:空值/非空值约束。
UNIQUE:单值约束。
PRIMARY KEY:主键约束,等价非空和单值约束。
REFERENCES 父表名(主键):外键约束。
CHECK(逻辑表达式):检查约束。
表级完整性约束
UNIQUE(列名1,列名2,……列名n):多个列名单值约束。
PRIMARY KEY(列名1,列名2,……列名n):多个列名组合主键约束。
FOREIGN KEY(外键)REFERENCES 主键表(主键):多个列名组合外键约束。
CHECK(逻辑表达式):含有多个列名逻辑表达式的检查约束。
例题:图书管理数据库表

在图书管理系统的数据库“Library”中,创建读者表“Reader”、读者类型表“ReaderType”、图书表“Book”和借阅表“Borrow”。

ReaderType(TypeID,Typename,LimitNum,LimitDays )
PK:TypeID
Reader (RID,Rname,TypeID,Lendnum)
PK:RIDEK:Type ID
Book(BID,Bname,Author,PubComp,PubDate, Price,Class)
PK:BID
Borrow(RID,BID,LendDate,ReturnDate)
PK:RID,BID,LendDateFK:RID和BID
1.创建读者类型表“ReadType”
USE Library
GO
CREATE TABLE ReaderType               --读者类型表
(
  TypeID int not NUll PRIMARY KEY ,     --读者类型编号,主键
  Typename char(8) NULL,                --读者类型名称
  LimitNum int  NUll,                   --限借数量
  LimitDays int NUll	                 --限借天数
)
2.创建读者表“Reader”
USE Library
GO
CREATE TABLE Reader                           --读者表
(
   RID char(10) not NUll PRIMARY KEY ,  --读者编号,主键
   Rname char(8) NULL,                             --读者姓名
   TypeID int  NUll,                                      --读者类型
   Lendnum int NUll,                                   --已借数量
   Foreign key(TypeID) references ReaderType(TypeID)
   on delete no action                              --外键、不级联删除	
)
3.创建图书表“Book”
USE Library
GO
CREATE TABLE Book                                       --图书表
(
   BID char(9) not NUll PRIMARY KEY ,            ---图书编号,主键
   Bname varchar(42) NULL,                              --书名
   Author  varchar(20)  NUll,                               --作者
   PubComp varchar(28) NUll,                           --出版社
   Pubdate datetime Null,                                   --出版日期
   Price decimal(7,2) Null check (Price>0),       --价格,检查约束
   Class char(10)  NULL                                      --所属类别
)
4.创建图书借阅表“Borrow”
USE Library
GO
CREATE TABLE Borrow                           --借阅表
(
   RID char(10) not NUll                             --设置外键,级联删除
   Foreign key references reader(RID) on delete cascade,
   BID char(9) not null                                -设置外键,不级联删除
   Foreign key references Book(BID) on delete no action,
   LendDate datetime2(0not null default(getdate()),--借书日期,默认当前日期
   ReturnDate datetime2(0null,                     --还书日期
   Primary Key (RID,BID,LendDate)               --设置组合键为主键
)
例题:教务管理数据库及表
-- 创建教务管理数据库
CREATE DATABASE EDUC
ON PRIMARY(
NAME='EDUC',
FILENAME='F:\SQL Server 数据文件\教务管理数据文件\EDUC.mdf',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=10%
)

LOG ON(
NAME='EDUC_log',
FILENAME='F:\SQL Server 数据文件\教务管理日志文件\EDUC_log.ldf',
SIZE=2MB,
MAXSIZE=4MB,
FILEGROWTH=10%
)

-- 创建教务管理馆表
use EDUC
go

-- 创建学生表
create table Student
(
SID char(10) not null primary key,
Sname char(8) not null,
Sex char(2) null check([sex]='男' or [sex]='女'),
Biethday date null,
Speciality varchar(26) null
)

go

-- 创建课程表
create table Course
(
CID char(8) not null primary key,
Canem nchar(30) not null,
Period int null,
Crefit decimal(3,1) null
)

go

-- 创建选课表
create table SC
(
SID char(10) not null
foreign key references Student(SID) on delete no action,
CID char(8) not null
foreign key references Course(CID) on delete no action,
Grade numeric(5,1) null
primary key(SID,CID)
)

(二)修改表

语法格式
ALTER TABLE 表名(
ALTER COLUMN 列名  列定义,
ADD  列名 数据类型 约束,
…
DROP 列名,
…
ADD CONSTRAINT 约束名 约束,
…
DROP CONSTRAINT 约束名,
…
)

说明:

  • ALTER COLUMN 列名 列定义:修改列定义。
  • ADD 列名 数据类型 约束:增加新的列。
  • DROP 列名:删除已有的列。
  • ADD CONSTRAINT 约束名 约束:添加约束。
  • DROP CONSTRAINT 约束名:删除已有的约束。
  • 其中,列定义包括列的数据类型和完整性约束。
例题:图书管理数据库表
0.使用数据库
use Library

注:语句之间可使用go进行合并执行

1.修改属性

把表“Book”中“Bname”的类型“varchar(42)”改为“varchar(40)”

alter table book
alter column Bname varchar(40) not null
2.添加或删除列

为表“Reader”新增字段邮件地址

alter table Reader
add E_mail varchar(50) null check(E_mail like '%@%')

为表“Book”新增字段“ISBN”

alter table Book
add ISBN varchar(17) null

删除表“Book”中列“ISBN”(删除后可再创建)

alter table Book
drop column ISBN
3.添加或删除约束

为表“Borrow”添加主键约束(先删除原创建时的主键约束)

alter table Borrow
add constraint PK_BH primary key (RID,BID,LendDate)

为表“Borrow”删除主键约束

alter table borrow
drop constraint PK_BH

为表“Borrow”添加外键“RID”约束(先删除原创建时的外键约束)

alter table borrow
add constraint FK_borrow foreign key(RID)  references Reader(RID)

为表“Book”添加价格大于零(Price>0)的检查约束

alter table book
add constraint ck_book_pr  check (price>0)

提示:定义check约束后,可以使用NOCHECK CONSTRAINT和CHECK CONSTRAINT子句是的CHECK约束失效和重新生效
使上例CHECK约束失效:

alter table book
nocheck constraint ck_book_pr

使上例CHECK约束重新生效:

alter table book
check constraint ck_book_pr

(三)删除表

语法格式
DROP TABLE 表名
例题:图书管理数据库表

在数据库中“Library”中创建一个表“test”

create table test(
test1 char(10) not null pirmary key,
test2 int null
)

然后删除

drop table test
  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值