当前位置: 代码迷 >> SQL >> 测试人员必知必会的SQL常识05
  详细解决方案

测试人员必知必会的SQL常识05

热度:30   发布时间:2016-05-05 12:57:22.0
测试人员必知必会的SQL知识05

大家晚上好,昨天我们讲到了常见表的相关指令,主键、唯一、自动增长和唯一约束。今天我们继续学习外键约束和索引相关知识,以及更改表和删除表的指令。

先来看一下外键,外键主要是用来约束用于预防破坏表之间连接的动作。我们用一个例子来说明一下:

"Persons" 表:

Id_PLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijin

"Orders" 表:

Id_OOrderNoId_P
1778953
2446783
3224561
4245621

“Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。通过建立外键就把两个表建立起了关联,这对查询很有用的。


OK,我们在来看一下索引。索引主要是不读取全表的时候加查询。SQL Server中主要分为两种:聚集索引和非聚集索引。聚集索引主要特点就是调整索引表顺序的同时也会调整原表的顺序。当创建主键时自动创建聚集索引。一个表只能有一个主键,同样一个表也只能有一个聚集索引。一个聚集索引表最多有16列。非聚集索引就是调整表索引表的同时不会改变原表的顺序。当创建唯一约束时自动创建非聚集索引。一个非聚集索引表最多有249列。

唯一索引表示表中任何两个记录的索引值都不同的。

USE TestDB;--昨天我们讲的创建约束都是在定义列时直接建立的,今天我们在介绍一个指令CONSTRAINT--用CONSTRAINT语句建立主键、唯一、默认、检查约束CREATE TABLE Stu(	Sno int,	Sname varchar(50),	Saddr varchar(100) CONSTRAINT DF_Saddr DEFAULT '北京市',	Sage int,	--用constraint建立约束	CONSTRAINT PK_Sno PRIMARY KEY (Sno),	CONSTRAINT UN_Sname UNIQUE (Sname DESC),	CONSTRAINT CK_Sage CHECK (Sage>15));--建立外键约束CREATE TABLE Scourse(	Cno int,	Cname varchar(50),	Tno int,	Sno int FOREIGN KEY REFERENCES Stu(Sno)	--用constraint建立外键约束	--CONSTRAINT FK_Scoures_Stu FOREIGN KEY(Sno) 		--REFERENCES Stu(Sno)	--这里要注意Stu表中的Sno列一定要是主键哦^_^	--还有主键列和外键列的这个列类型要一致哦);--再建一个表,下面的例子用CREATE TABLE Teacher(	Tno int,	Tname varchar(50),	Tage int,	CONSTRAINT PK_Teacher PRIMARY KEY(Tno));--修改表,前面修改数据库我们用的是ALTER DATABASE,我们这里也是用ALTER--增加列ALTER TABLE Teacher	ADD Taddr varchar(200);--修改列ALTER TABLE Teacher	ALTER COLUMN Taddr varchar(100);--删除列ALTER TABLE Teacher	DROP COLUMN Taddr;--增加约束,和上面用constraint建立约束一样的--这里就增加一个外键了ALTER TABLE Scourse	ADD CONSTRAINT FK_Teacher FOREIGN KEY(Tno)		REFERENCES Teacher(Tno);--删除约束ALTER TABLE Scourse	DROP FK_Teacher;--搜狗输入法在SQL Server里好难用啊,总变成全角的--这里再增加一个默认约束,注意一下是怎么指定列的?ALTER TABLE Teacher	ADD CONSTRAINT DF_Tage DEFAULT 35 FOR Tage;--删除表DROP TABLE Scourse;--我想留个作业,所以索引就下次再说吧!--要认真做作业联系哦,我们将查询的时候要用今天作业里的数据库和表(⊙o⊙)

作业:

建立一个数据库,数据库名SaleInfoDB

建立下表:

表名:ShopInfo(商场信息)
列类型空约束
ShopIDchar(4)NOT NULL主键
ShopNamechar(20)NOT NULL
ShopAddrchar(20)NOT NULL
Phonechar(11)NOT NULL唯一约束
DayTotalfloat
表名:ShopSell(商场销售信息)
列类型空约束
ShopIdchar(4)NOT NULL
ProdIDchar(6)NOT NULL
SellCountintNOT NULL
SellDatedatetimeNOT NULL
SalerIDchar(4)NOT NULL
表名:ProductInfo
ProdIDchar(4)NOT NULL
ProdNmaechar(10)NOT NULL
PricefloatNOT NULL
ProdFactchar(20)NOT NULL默认"华为"
ProdAddrchar(20)NOT NULL
FactPhonechar(11)NOT NULL
StockCountintNOT NULL
表名:SalerInfo
SalerIDchar(4)NOT NULL主键
SalerNamechar(6)NOT NULL
SalerAgeint
SalerSexchar(2)NOT NULL
SalerPhonechar(11)
Salaryfloat
外键约束
主键表主键列外键表外键列
ProductInfoProdIDShopSellProdID
检查约束
表名列名条件
SalerInfoSalerSex只能是"男"或"女"



  相关解决方案