--建立数据库 Libraryuse masterif exists (select * from sysdatabases where name='Library')drop database LibraryCreate database Libraryon primary --主文件的标志(name='Library_data',--逻辑名称filename='D:\\Library_data.mdf',--物理名称size=5mb,maxsize=50mb,filegrowth=15%)log on(name='Library_log',--逻辑名称filename='D:\\Library_log.ldf',--物理名称size=2mb,maxsize=50mb,filegrowth=1)--建立Book表use LibraryCREATE TABLE Book ( BID varchar(50) Not null, --图书编号 BName varchar(50) , --图书名称Author varchar(50) , --作者PubComp varchar(50) , --出版社PubDate datetime, --出版日期BCount int , --现存数量Price money, --单位)--建立信息表use LibraryCREATE TABLE Reader( RID varchar(50) Not null, --读者编号RName varchar(50) Not null, --读者姓名LendNum int, --已借书数量RAddress varchar(50) --联系地址 )--建立图书借阅表use LibraryCREATE TABLE Borrow( RID varchar(25) Not null, --读者编号, 读者信息表的外键BID varchar(25) Not null, --图书编号,图书信息表的外键LendDate datetime Not null, --借阅日期,默认为当前日期WillDate datetime, --归还日期,大于等于借阅日期 借阅期+1ReturnDate datetime, --实际归还日期 默认值为空)--罚款记录表use Library CREATE TABLE Penalty(RID varchar(25) Not null, --读者编号, 读者信息表的外键BID varchar(25) Not null, --图书编号,图书信息表的外键PDate datetime Not null, --罚款日期,默认为当前日期PType int Not null, --罚款类型,1-延期 2-损坏 3-丢失Amount money ,)--为 Book表中的 BID 添加主键约束alter table Book add constraint PK_BID primary key(BID)--为 Book表中的 BID 添加检查约束alter table Bookadd constraint JC_BID check (BID like 'ISBN%')--为 Book表中的 PubDate 添加检查约束 小于当前日期alter table Bookadd constraint JJ_PubDate check (PubDate<getDate())--为 Book表中的 BCount 添加检查约束 alter table Bookadd constraint JH_BCount check (BCount>=1)--为 Book表中的 Price 添加检查约束 alter table Bookadd constraint Js_Price check(Price>0)
--为 Reader表中的 LendNum 添加检查约束alter table Readeradd constraint Jd_LendNum check(LendNum>0)--为 Reader表中的 RID 添加主键约束alter table Reader add constraint PP_RID primary key(RID)--为 Borrow表 中的RID 添加 复合主键alter table Borrowadd constraint nn_RID foreign key (RID) references Reader(RID)--为 Borrow表 中的BID 添加 复合主键alter table Borrowadd constraint mn_BID foreign key (BID) references Book(BID)--为 Borrow表 中的LendDate 添加 复合主键alter table Borrowadd constraint mm_LendDate default(getDate()) for LendDate--为 Borrow表 中的WillDate 添加默认约束alter table Borrow add constraint ll_WillDate default(DateADD(mm,1,getDate())) for WillDate--为 Borrow表 中的ReturnDate 添加检查约束alter table Borrow add constraint kq_willdate check(WillDate >=getDate())--为 Penalty 中的RID 复合主键 alter table Penalty add constraint fk_penaltyrid foreign key(RID) references Reader(RID)--为 Penalty 中的BID 复合主键 alter table Penalty add constraint fk_penaltybid foreign key(BID) references Book(BID)--为 Borrow表 中的PDate 添加默认约束alter table Penalty add constraint dk_pdate default(getDate()) for PDate --为 Borrow表 中的 PType 添加约束alter table Penalty add constraint ck_ptype check(PType LIKE '[1-3]')--为 Borrow表 中的 Amount 添加约束alter table Penalty add constraint ck_amount check (Amount >0)
--*******************************1.创建一个名称为S2224的数据库***************************** --创建一个名称为S2224的数据库 数据名称 路径(D:\)--先将数据库切换到masteruse masterif exists (select * from sysdatabases where name='S2222')drop database S2222Create database S2222on primary --主文件的标志(name='S2222_data', --逻辑名称filename='D:\\S2222_data.mdf', --物理名称size=2mb, --初始大小 maxsize=50mb, --最大容量filegrowth=15% --增长率)log on(name='S2222_log', --逻辑名称filename='D:\\S2222_log.ldf', --物理名称size=2mb,maxsize=50mb,filegrowth=1) --************************************************************************************************** --*******************************2.创建一个学生表Student************************************** --Student(Sid,Sname,Sage,Sremark,Cid) use S2222 CREATE TABLE Student --表名 ( Sid int NOT NULL, Sname varchar(10)NOT NULL, Sage int NOT NULL, Sremark varchar(50) NULL, Cid int NOT NULL ) --*********************************3.创建一个年级表Grade(Cid,cname)************************ use S2222 go CREATE TABLE Grade ( GradeID int identity(1,1), GRadename varchar(20) ) --**************4.代码方式给Student,Grade表中添加3条数据************************************************************** INSERT INTO Student (Sid,Sname,Sage,Sremark,Cid) VALUES (1,'王1',20,'xxxxx',1)--向学生表中添加单行数据 INSERT INTO Student (Sid,Sname,Sage,Sremark,Cid) VALUES (2,'王2',20,'xxxxx',1) INSERT INTO Student (Sid,Sname,Sage,Sremark,Cid) VALUES (3,'王3',20,'xxxxx',1) INSERT INTO Grade (GRadename) SELECT ('S1') UNION SELECT ('S2') UNION SELECT ('Y2') --方案三 INSERT INTO Grade (GRadename) values('S11'),('S22'),('S333') --主键 和自增列是不是一回事儿? 主键未必是自增列,自增列也不一定是主键 --他们两者之间是没有联系 --他们两者没有必然关系 --主键用途:为了唯一标识表中的一条记录 --自增:程序员不用手动给该列赋值。 --******************************************************************************************************** --****************************************5.添加主键约束**************************************************************** -- 添加主键约束 (GradeID) ALTER TABLE Student ADD CONSTRAINT PK_Sid primary key (Sid) ALTER TABLE Grade ADD CONSTRAINT PK_GradeID primary key (GradeID) --******************************************************************************************************** --******************************** 6.添加外键约束*************************************************** /*常见的约束: 1:主键约束 2:唯一约束 3:检查约束 4:外键约束 5:默认约束 6:非空约束 */ --添加外键约束 ALTER TABLE Student ADD CONSTRAINT FK_Grade_Student_Cid FOREIGN key (Cid) REFERENCES Grade (GradeID) --*******************7.添加唯一约束,保证学生姓名唯一**************************** --添加唯一约束 alter table Student add constraint UQ_IdentityCard unique (IdentityCard) --********************8.添加默认约束(备注默认值为:无备注)******************* --添加默认约束 alter table Student add constraint DF_Address default ('地址不详') for Address --**********************9.添加检查约束学生年龄>=18岁**************************** --检查约束 alter table Grade add constraint JK_BornDate check (BornDate>='1980-1-1') --10.删除数据库,删除表,删除约束 drop table student --从表或者叫子表 --删除约束 --delete 表中的记录 --drop 结构 --问题:请说出delete truncate 和drop 区别?站在不同维度 -- 1.delete 和 truncate删除 表中的记录,表结构还在 , drop删除的是表结构 --2.delete 可以删除部分数据,可以跟where ,但是Truncate只能删除该表中所有记录,,不能和where连用 --3.Truncate 删除速度快,delete 快 --4.都可以删除数据 --5.delete占用资源大,Truncate占用资源小 --6 delete 删除后,编号在下一次insert时候继续+1 Truncate 从1开始 --7.delete删除的时候,需要记录日志,所以速度慢!Truncate不需要记录日志!!
0 0