日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第二、三节:数据定义

發布時間:2025/3/15 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (数据库系统概论|王珊)第三章关系数据库标准语言SQL-第二、三节:数据定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 零:有關說明
    • (1)安裝數據庫與建表
    • (2)一些語法說明
  • 一:模式的定義和刪除(SCHEMA)
    • (1)定義模式
    • (2)刪除模式
  • 二:基本表的定義、刪除和修改(TABLE)
    • (1)定義基本表
    • (2)修改基本表
    • (3)刪除基本表
  • 三:索引的建立與刪除(INDEX)
    • (1)建立索引
    • (2)修改索引
    • (3)刪除索引

零:有關說明

(1)安裝數據庫與建表

  • 關于數據庫如何安裝,表如何建立這里不再介紹,請移步:(數據庫系統概論|王珊)第三章關系數據庫標準語言SQL-第零節:MYSQL環境安裝和表的建立以及一些注意事項
  • 所用表為(上面文章中也有完整代碼):

(2)一些語法說明

由于我們使用的MYSQL所以有些語法和可能和SQL標準有所差異,甚至無法實現,總結如下

①:關于語法中的括號

  • <>:尖括號用于分隔字符串
  • []:方括號表示規則中的可選元素,可以選擇也可以省略
  • {}:花括號表示聚集規則中的元素,必須明確指定

②:其它

  • 在SQLserver中我們可以用 CREATE DATABASE來創建數據庫,而用CREATE SCHEMA來創建架構。但是在MYSQL中兩者是同等作用的,可以認為沒有區別。所以下面介紹時沒有實際的演示例子
  • 在MYSQL中字符串用的不是單引號,而是``(鍵盤上數字1左邊的那個)
  • 在MYSQL中創建模式時是沒有后面的AUTHROIZATION <用戶名>的
  • MYSQL中大小寫均可行

回歸正題,SQL的數據定義主要包括以下內容

  • 模式定義
  • 表定義
  • 視圖定義
  • 索引定義

  • 注意修改視圖和修改模式時只能刪除重建

一:模式的定義和刪除(SCHEMA)

注意:在SQLserver中我們可以用 CREATE DATABASE來創建數據庫,而用CREATE SCHEMA來創建架構。但是在MYSQL中兩者是同等作用的,可以認為沒有區別。所以下面介紹時沒有實際的演示例子

(1)定義模式

語法:CREATE SCHEMA <模式名> AUTHORIZATION <用戶名>(注意上面語法說明)

  • 如果沒有指定 <模式名>, 那么<模式名>隱含為<用戶名>
  • 定義模式本質是定義了一個命名空間
  • 創建模式的同時也可以創建其它東西:CREATE SCHEMA <模式名> AUTHORIZATION <用戶名> [<表定義子句> | <視圖定義子句> | <授權定義子句>]

(2)刪除模式

語法:DROP SCHEMA <模式名><CASCADE|RESTRICT>(注意上面語法說明)

  • CASCADE:表示級聯,也即刪除模式時會刪除該模式中所有數據庫對象
  • RESTRICT:表示限制,也即在刪除時如果該模式下定義了其它對象,則拒絕

二:基本表的定義、刪除和修改(TABLE)

(1)定義基本表

語法

  • 建表的同時通常還可以定義與該表有關的完整性約束條件(參照前幾節內容)
  • 如果完整性約束條件涉及該表的多個屬性列,則必須定義在表級上,否則既可以在列級上也可以在表級上

演示
【例1】:建立學生表Student,其中Sno是主碼,且Sname不能重復

CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, //主碼Sname CHAR(20) UNIQUE, //唯一值Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20) );


【例2】:建立課程表Course,其中Cno是主碼,Cname不能取空值,Cpno代表先修課(意思是學習該課前必須先學習某個課程),它是外碼,需要參照本表,參照列為Cno

CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY,//主碼Cname CHAR(20) NOT NULL,//非空Cpno CHAR(4),Credit SMALLINT,FOREIGN KEY (Cpno) REFERENCES Course(Cno)//表級完整性,Cpno是外碼,被參照表示Course,被參照列是Cno );


【例3】:建立學生選課表SC,其中Sno和Cno是外碼,分別參照Student表的Sno列和Course表的Cno列

  • Sno和Cno是SC的主碼,必須使用表級完整性定義
CREATE TABLE SC (Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),//必須使用表級完整性定義FOREIGN KEY(Sno) REFERENCES Student(Sno),FOREIGN KEY(Cno) REFERENCES Course(Cno) )

(2)修改基本表

語法

  • ADD:用于增加新列,新的列級完整性約束條件和新的表級完整性約束條件
  • DROP COLUMN:用于刪除表中的列
  • DROP CONSTRAINT:用于刪除指定的完整性約束條件
  • ALTER COLUMN:用于修改原有的列定義

演示

【例4】:向Student表中增加“入學時間”列,數據類型為“日期型”

ALTER TABLE Student ADD Sentrance DATE;


【例5】:將Student表“年齡”這一列的數據類型由改為 INT

ALTER TABLE Student ALTER COLUMN Sage CHAR;

【例6】:Course表中的Cname必須取唯一值

ALTER TABLE Course ADD UNIQUE(Cname);

【例7】:刪除Student表中的“入學時間”列

ALTER TABLE Student DROP COLUMN Sentrance CASCADE;


【例8】:刪除Course表中Cname的唯一約束

  • 此部分看完這個就明白了:(數據庫系統概論|王珊)第五章數據庫完整性-第四、六、七節:約束命名子句、斷言和觸發器
ALTER TABLE Course DROP INDEX Cname;

MYSQL在刪除約束時有一些不一樣,請點擊查看:鏈接

(3)刪除基本表

語法

  • 選擇RESTRICT:欲刪除的基本表不能被其他表的約束所引用(比如CHECK、FOREIGN KEY等)、不能有視圖、不能有觸發器(trigger),不能有存儲過程或函數等
  • 選擇CASCADE:沒有限制條件,所有相關依賴對象連同基本表一起刪除

演示

【例9】:刪除Student表,使用RESTRICT

  • 由于SC表參照的是Student,所以刪除不成功
DROP TABLE student RESTRICT;

三:索引的建立與刪除(INDEX)

當表的數據量較大時,查詢操作就會十分耗時。建立索引是加快查詢速度的有效手段

  • 數據庫索引類似于圖書后面的索引,能快速定位需要查詢的內容

用戶可以根據應用環境的需要在基本表上建立一個或多個索引,類型有

  • 順序文件上的索引
  • B+樹索引
  • 散列索引
  • 位圖索引

索引雖然能加快查詢速度,但也有缺點

  • 需要占用一定的存儲空間
  • 會提高查詢速度但是會降低更新速度

(1)建立索引

語法

  • <表名>:要建立索引的基本表的名字
  • 索引可以建立在該表的一列或多列上,各列之間使用逗號分隔
  • 每個<列名>后面還可以用<次序>指定索引值的排列次序,可選ASC-升序(默認)或DESC-降序
  • UNIQUE:表明此索引的每一個索引值只對應唯一的數據記錄
  • CLUSTER:表示需要建立聚簇索引(第七章會講到)

演示

【例10】:請按以下要求建立索引

  • Student表按學號升序建立唯一索引
  • Course表按課程號升序建立唯一索引
  • SC表按學號升序和課程號降序建立唯一索引
CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

(2)修改索引

語法

演示

【例11】:將SC表的SCno索引改名為SCSno

ALTER INDEX SCno RENAME TO SCSno

(3)刪除索引

語法

演示
【例12】:刪除SC表的SCSno索引

DROP INDEX SCSno//如果失敗,也可這樣寫 DROP INDEX SCSno on SC; DROP INDEX SC.SCSno;

總結

以上是生活随笔為你收集整理的(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第二、三节:数据定义的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。