sql基础05

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

"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。通过建立外键就把两个表建立起了关联,这对查询很有用。

2、索引,在不读取全表的时候加速查询。对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)。如果对之建立B-Tree索引,则只需要进行log100(10^6)=3次页面读取,最坏情况下耗时30ms。这就是索引带来的效果,很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引。

<span style="font-family:SimSun;font-size:18px;">USE testdb</span>
<span style="font-family:SimSun;font-size:18px;">
#sql基础04中的创建约束是在定义column的时候建立,这次,我们将使用CONSTRAINT语句,该语句可以建立主键、唯一、默认和检查约束
CREATE TABLE Stu(
         Sno int,
         Sname varchar(50),</span>
<span style="font-family:SimSun;font-size:18px;">        #用CONSTRAINT建立默认约束(CONSTRAIN <约束名称> DEFAULT '<默认值>')
         Saddr varchar(100) CONSTRAINT DF_Saddr DEAFULT '北京',
        #用CONSTRAINT分别建立主键约束(CONSTRAINT <约束名称> PRIMARY KEY(<表字段名称>))、唯一约束(CONSTRAINT <约束名称> UNIQUE(<表字段名称>))和检查约束(CONSTRAINT <约束名称> CHECK(<检查条件>))
        CONSTRAINT PK_Sno PRIMARY KEY(Sno),
        CONSTRAINT UN_Sname UNIQUE(Sname DESC),
        CONSTRAINT CK_Sage CHECK(Sage>15)
)</span>
#建立外键约束
CREATE TABLE Scource(
         Cno int,
         Cname varchar(50),
         Tno int,
         Sno int FOREIGH KEY REFERENCES Stu(Sno)
         #用CONSTRAINT建立外键约束
         #CONSTRAINT FK_Scoures_Stu FOREIGH KEY(Sno) REFRENCES 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(100)

#删除列
ALTER TABLE Teacher DROP COLUMN Taddr

#增加约束,与上边用CONSTRAINT建立约束一样的方法
ALTER TABLE Scource ADD CONTRAINT FK_Teacher FOREIGH KEY(Tno) REFERENCES Teacher(Tno)

#删除约束
ALTER TABLE Scource DROP FK_Teacher

#再增加一个默认约束,注意一下指定列的方法
ALTER TABLE Teacher ADD CONSTRAINT DF_Tage DEFAULT 35 FOR Tage

#删除表
DROP TABLE Scourse



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值