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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

『数据库』震惊,某博主为吸引眼球拿出压箱底SQL总结,如果你没看那就吃亏了!(超级详细的SQL基础,你还不会的话就别学数据库了)

發(fā)布時(shí)間:2023/12/15 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 『数据库』震惊,某博主为吸引眼球拿出压箱底SQL总结,如果你没看那就吃亏了!(超级详细的SQL基础,你还不会的话就别学数据库了) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這里還有數(shù)據(jù)庫(kù)相關(guān)的優(yōu)質(zhì)文章:快戳我,快戳我😳

前言:

使用SQL語(yǔ)言時(shí),要注意SQL語(yǔ)言對(duì)大小寫(xiě)并不敏感,一般使用大寫(xiě)。所有符號(hào)一定是西文標(biāo)點(diǎn)符號(hào)(雖然是常識(shí),但我還是提一嘴)
文章有點(diǎn)長(zhǎng),大家要耐心看完呀!👍👍👍👍👍👍

1、模式的定義與刪除

1.1 定義模式

在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句,語(yǔ)句如下:

CREATE SCHEMA <模式名> AUTHORIZATION <用戶名>[<表定義子句>|<視圖定義子句>|<授權(quán)定義子句>]

注:如果沒(méi)有指定<模式名>,那么<模式名>隱含為<用戶名> 。

例子: 為用戶ZHANG創(chuàng)建了一個(gè)模式TEST,并且在其中定義一個(gè)表TAB1
其中這個(gè)TAB1的表有5列,第一列為短整型,第二列為整型,第三列為定長(zhǎng)字符串,第四列為定點(diǎn)數(shù),第五列跟第四列一樣。稍微了解一下,后面將會(huì)詳細(xì)的介紹,表的定義。

CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1 (COL1 SMALLINT, COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2) );
1.2 刪除模式

語(yǔ)句格式:

DROP SCHEMA <模式名> <CASCADE|RESTRICT>
  • CASCADE(級(jí)聯(lián))連帶將模式中的數(shù)據(jù)庫(kù)對(duì)象都刪除
    刪除模式的同時(shí)把該模式中所有的數(shù)據(jù)庫(kù)對(duì)象全部刪除 ,即 所有依賴(lài)此模式的對(duì)象都會(huì)被刪除。
  • RESTRICT(限制)有下屬數(shù)據(jù)庫(kù)對(duì)象時(shí),不刪除
    如果該模式中定義了下屬的數(shù)據(jù)庫(kù)對(duì)象(如表、視圖等),則拒絕該刪除語(yǔ)句的執(zhí)行。 僅當(dāng)該模式中沒(méi)有任何下屬的對(duì)象時(shí)才能執(zhí)行。
  • 例子:

    --刪除模式ZHANG, 則刪除失敗,因?yàn)槟J街卸x了TAB1 DROP SCHEMA ZHANG RESTRICT; --刪除模式ZHANG, 同時(shí)該模式中定義的表TAB1也被刪除 DROP SCHEMA ZHANG CASCADE;

    2、基本表的定義、刪除與修改

    數(shù)據(jù)類(lèi)型
    數(shù)據(jù)類(lèi)型含義
    CHAR(n)長(zhǎng)度為n的定長(zhǎng)字符串,也可寫(xiě)作CHARACTER(n)
    VARCHAR(n)最大長(zhǎng)度為n的變長(zhǎng)字符串,也可寫(xiě)作CHARACTERVARCHAR(n)
    CLOB字符串大對(duì)象
    BLOB二進(jìn)制大對(duì)象
    INT長(zhǎng)整數(shù),4字節(jié)(也可以寫(xiě)作INTEGER)
    SMALLINT短整數(shù),2字節(jié)
    BIGINT大整數(shù),8字節(jié)
    NUMERIC(p,d)定點(diǎn)數(shù),由p位數(shù)字(不包括符號(hào)、小數(shù)點(diǎn))組成,小數(shù)后面有d位數(shù)字
    DECIMAL(p,d)含義和NUMBER一樣,也可以寫(xiě)作DEC(p,d)
    REAL取決于機(jī)器單精度的浮點(diǎn)數(shù)
    DOUBLE PRECSION取決于機(jī)器精度的雙精度浮點(diǎn)數(shù)
    FLOAT(n)浮點(diǎn)數(shù),精度至少為n位數(shù)字
    BOOLEAN布爾邏輯變量
    DATE日期,包含年、月、日,格式為YYYY-MM-DD
    TIME時(shí)間,包含一日的時(shí)、分、秒,格式為HH:MM:SS

    其他的

    數(shù)據(jù)類(lèi)型含義
    TIMES TAMP時(shí)間戳類(lèi)型
    INTERVAL時(shí)間間隔類(lèi)型
    2.1 定義表

    語(yǔ)句格式:

    CREATE TABLE <表名> (<列名> <數(shù)據(jù)類(lèi)型>[ <列級(jí)完整性約束條件> ] [,<列名> <數(shù)據(jù)類(lèi)型>[ <列級(jí)完整性約束條件>] ] ...... [,<表級(jí)完整性約束條件> ] );

    注: 如果完整性約束條件涉及到該表的多個(gè)屬性列,則必須定義在表級(jí)上,否則既可以定義在列級(jí)也可以定義在表級(jí)。

    例子:

    --建立一個(gè)學(xué)生選課表SC CREATE TABLE SC( Sno CHAR(9), Cno CHAR(4) UNIQUE, --只涉及一個(gè)屬性,可以定義為列級(jí)完整性約束條件Grade SMALLINTPRIMARY KEY (Sno,Cno), --主碼由/*約束條件涉及到該表的兩個(gè)屬性列,必須作為表級(jí)完整性進(jìn)行定義*/FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表級(jí)完整性約束條件,Sno是外碼,被參照表是Student */FOREIGN KEY (Cno)REFERENCES Course(Cno) /* 表級(jí)完整性約束條件, Cno是外碼,被參照表是Course*/);

    常見(jiàn)的五種完整性約束:

    1.NOT NULL(非空)約束: 只用于定義列約束。

    CREAT TABLE  Employee (Emp_id int not null,Emp_name varchar(10) not null,EMP_address varchar(40) , )

    創(chuàng)建之后,如果往表Employee表中非空約束中插入空值將會(huì)出錯(cuò)。

    INSERT INTO Employee VALUES(1,NULL,'neimeng') /* 報(bào)錯(cuò) Cannot insert the value NULL into column 'emp_name', table 'Student.dbo.Employee'; column does not allow nulls. INSERT fails. */

    2.UNIQUE(惟一)約束:用于指明創(chuàng)建惟一約束的列上的取值必須惟一。

    CREAT TABLE  Employee (Emp_id int UNIQUE,Emp_name varchar(10) NOT NULL,EMP_address varchar(40) , )

    如果向Employee插入數(shù)據(jù)時(shí),如果兩條記錄的Emp_id不惟一,則會(huì)出現(xiàn)錯(cuò)誤。

    INSERT INTO Employee VALUES(123,'xiaoming','neimeng') INSERT INTO Employee VALUES(123,'xiaoWang','hebei')/*Violation of UNIQUE KEY constraint 'UQ__Employee__0051DEAE8'.Cannot insert duplicate key in object 'dbo.Employee'.*/

    除了在定義列時(shí)添加UNIQUE約束外,也可以將unique約束作為表約束添加。即把它作為表定義的元素。
    語(yǔ)法如下:

    [CONSTRAINT constraint_name] UNIQUE (COL1,COL2,.....) CREAT TABLE  Employee (Emp_id int UNIQUE,Emp_name varchar(10) NOT NULL,EMP_address varchar(40) , constraint p_uniq unique(Emp_id ) )

    3.Primary KEY(主鍵)約束:
    用于定義基本表的主鍵,起惟一標(biāo)識(shí)作用,其值不能為null,也不能重復(fù),以此來(lái)保證實(shí)體的完整性。

    CREAT TABLE  Employee (Emp_id int Primary KEY,Emp_name varchar(10) NOT NULL,EMP_address varchar(40) , )

    如果向Employee表插入的Emp_id 重復(fù)了或者插入時(shí)Emp_id 為NULL值,則會(huì)出錯(cuò)。
    可以在創(chuàng)建表時(shí),創(chuàng)建主鍵約束,也可創(chuàng)建表完成以后,創(chuàng)建主鍵。

    例如:

    alter table EmployeeInfo add constraint e_prim primary key(emp_id)

    PRIMARY KEY與 UNQIUE 的區(qū)別:
    1.在一個(gè)表中,只能定義一個(gè)PRIMARY KEY約束,但可定義多個(gè)UNQIUE 約束。

    2.對(duì)于指定為primary key的一個(gè)列或多個(gè)列的組合,其中任何一個(gè)列都不能出現(xiàn)空值,而對(duì)于unique所約束的惟一鍵,則允許為null,只是null值最多有一個(gè)。

    ** 4.FOREGIN KEY(外鍵)約束:**

    定義了一個(gè)表中數(shù)據(jù)與另一個(gè)表中的數(shù)據(jù)的聯(lián)系。
    FOREGIN KEY約束指定某一個(gè)列或一組列作為外部鍵,其中包含外部鍵的表稱(chēng)為子表,包含外部鍵所引用的主鍵的表稱(chēng)為父表。系統(tǒng)保證,表在外部鍵上的取值要么是父表中某一主鍵,要么取空值,以此保證兩個(gè)表之間的連接,確保了實(shí)體的參照完整性。

    通俗的說(shuō),外鍵是對(duì)另一個(gè)表中主鍵的引用。 如果公共關(guān)鍵字在一個(gè)關(guān)系中是主關(guān)鍵字,那么這個(gè)公共關(guān)鍵字被稱(chēng)為另一個(gè)關(guān)系的外鍵(FK)。即,當(dāng)一張二維表(如表A)的主關(guān)鍵字被包含在另一張二維表(如表B)中時(shí),A表中的主關(guān)鍵字便成為B表的外關(guān)鍵字。

    2.2 定義表的所屬模式

    方法一:在表名中明顯地給出模式名

    Create table"S-T".Student(......); /*模式名為 S-T*/ Create table "S-T".Cource(......); Create table "S-T".SC(......);

    方法二:在創(chuàng)建模式語(yǔ)句中同時(shí)創(chuàng)建表

    CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1 (COL1 SMALLINT, COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2) );

    方法三:設(shè)置所屬的模式

    • 創(chuàng)建基本表(其他數(shù)據(jù)庫(kù)對(duì)象也一樣)時(shí),若沒(méi)有指定模式,系統(tǒng)根據(jù)搜索路徑來(lái)確定該對(duì)象所屬的模式
    • 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)會(huì)使用模式列表中第一個(gè)存在的模式作為數(shù)據(jù)庫(kù)對(duì)象的模式名
    • 若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯(cuò)誤
      顯示當(dāng)前的搜索路徑: SHOW search_path; 搜索路徑的當(dāng)前默認(rèn)值是:$user, PUBLIC

    設(shè)置搜索路徑,然后定義基本表:

    SET search_path TO "S-T",PUBLIC; //設(shè)置搜索路徑Create table Student(......); //定義基本表

    結(jié)果建立了S-T.Student基本表

    2.3 修改表

    語(yǔ)句格式:

    ALTER TABLE <表名>[ADD <新列名><數(shù)據(jù)類(lèi)型>[完整性約束]][DROP <完整性約束名>][ALTER COLUMN <列名> <數(shù)據(jù)類(lèi)型>]; 指令含義
    ADD子句用于增加新列、新的列級(jí)完整性約束條件和新的表級(jí)完整性約束條件
    DROP COLUMN子句用于刪除表中的列

    如果指定了CASCADE短語(yǔ),則自動(dòng)刪除引用了該列的其他對(duì)象
    如果指定了RESTRICT短語(yǔ),則如果該列被其他對(duì)象引用,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)將拒絕刪除該列
    DROP CONSTRAINT子句用于刪除指定的完整性約束條件
    ALTER COLUMN子句用于修改原有的列定義,包括修改列名和數(shù)據(jù)類(lèi)型

    例子:
    向 Course表增加“開(kāi)始時(shí)間”列,將其數(shù)據(jù)類(lèi)型為日期型

    ALTER TABLE Course ADD C_start DATE;

    將Ccredit 分?jǐn)?shù)的數(shù)據(jù)類(lèi)型由短整數(shù)改為整數(shù)

    ALTER TABLE Course ALTER COLUMN Ccredit INT ;

    增加課程名稱(chēng)必須取唯一值得約束條件

    ALTER TABLE Course ADD UNIQUE(Cname);
    2.4 刪除表

    語(yǔ)句格式:

    DROP TABLE <表名>[RESTRICT| CASCADE];

  • RESTRICT:刪除表是有限制的
    欲刪除的基本表不能被其他表的約束所引用;
    如果存在依賴(lài)該表的對(duì)象,則此表不能被刪除
  • CASCADE:刪除該表沒(méi)有限制
    在刪除基本表的同時(shí),相關(guān)的依賴(lài)對(duì)象(表定義、數(shù)據(jù)、索引、視圖、觸發(fā)器等)一起刪除
  • 3.索引的建立與刪除

    • 建立索引的目的:加快查詢(xún)速度

    • 誰(shuí)可以建立索引
      DBA 或 表的屬主(即建立表的人)
      DBMS一般會(huì)自動(dòng)建立以下列上的索引
      PRIMARY
      KEY UNIQUE

    • 索引的維護(hù):
      DBMS自動(dòng)完成

    • 索引的使用
      DBMS自動(dòng)選擇是否使用索引以及使用哪些索引

    • RDBMS中索引一般采用B+樹(shù)、HASH索引來(lái)實(shí)現(xiàn)
      B+樹(shù)索引具有動(dòng)態(tài)平衡的優(yōu)點(diǎn)
      HASH索引具有查找速度快的特點(diǎn)

    • 采用B+樹(shù),還是HASH索引 則由具體的RDBMS來(lái)決定

    • 索引是關(guān)系數(shù)據(jù)庫(kù)的內(nèi)部實(shí)現(xiàn)技術(shù),屬于內(nèi)模式的范疇

    • CREATE INDEX語(yǔ)句定義索引時(shí),可以定義索引是唯一索引、非唯一索引或聚簇索引

    3.1 創(chuàng)建索引

    語(yǔ)句格式:

    CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]);
    • <表名>:要建索引的基本表的名字

    • 索引:可以建立在該表的一列或多列上,各列名之間用逗號(hào)分隔

    • <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC

    • UNIQUE:此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄

    • CLUSTER:表示要建立的索引是聚簇索引

    例子:
    為學(xué)生-課程數(shù)據(jù)庫(kù)中的Student,Course,SC三個(gè)表建立索引

    Student表按學(xué)號(hào)升序建唯一索引
    Course表按課程號(hào)升序建唯一索引
    SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引

    CREATE UNIQUE INDEX Stusno ON Student(Sno); //默認(rèn)升序 CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

    聚簇索引:

    將數(shù)據(jù)存儲(chǔ)與索引放到了一塊,找到索引也就找到了數(shù)據(jù)

    非聚簇索引:

    將數(shù)據(jù)存儲(chǔ)于索引分開(kāi)結(jié)構(gòu),索引結(jié)構(gòu)的葉子節(jié)點(diǎn)指向了數(shù)據(jù)的對(duì)應(yīng)行,myisam通過(guò)key_buffer把索引先緩存到內(nèi)存中,當(dāng)需要訪問(wèn)數(shù)據(jù)時(shí)(通過(guò)索引訪問(wèn)數(shù)據(jù)),在內(nèi)存中直接搜索索引,然后通過(guò)索引找到磁盤(pán)相應(yīng)數(shù)據(jù),這也就是為什么索引不在key buffer命中時(shí),速度慢的原因。

    注:如果索引建的不對(duì)速度會(huì)大受影響

    3.2 修改索引

    語(yǔ)句格式:

    ALTER INDEX <舊索引名> RENAME TO <新索引名>

    例子:
    將SC表的SCno索引名改為SCSno

    ALTER INDEX SCno RENAME TO SCSno;
    3.3 刪除索引

    刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述
    語(yǔ)句格式:

    DROP INDEX <索引名>;

    例子:
    刪除Student表的Stusname索引

    DROP INDEX Stusname;

    4.視圖的創(chuàng)建與刪除

    4.1 創(chuàng)建視圖

    語(yǔ)句格式

    CREATE VIEW <視圖名> [(<列名> [,<列名>])] AS <子查詢(xún)> [WITH CHECK OPTION];
  • 子查詢(xún)可以是任意的SELECT語(yǔ)句,是否可以含有ORDER BY子句和DISTINCT短語(yǔ),則決定具體系統(tǒng)的實(shí)現(xiàn)
  • WITH CHECK OPTION:對(duì)視圖進(jìn)行UPDATE,INSERT和DELETE操作時(shí)要保證更新、插入或刪除的行滿足視圖定義中的謂詞條件(即子查詢(xún)中的條件表達(dá)式)
  • 注:

  • 修改基表的結(jié)構(gòu)后,可能導(dǎo)致表與視圖的映象關(guān)系被破壞,從而導(dǎo)致該視圖不能正確工作
  • 組成視圖的屬性列名:全部省略或全部指定
  • 子查詢(xún)不允許含有ORDER BY子句和DISTINCT短語(yǔ)
  • 全部省略或全部指定
    省略:由子查詢(xún)中SELECT目標(biāo)列中的諸字段組成
    明確指定視圖的所有列名:
    • 某個(gè)目標(biāo)列是集函數(shù)或列表達(dá)式
    • 目標(biāo)列為 *
    • 多表連接時(shí)選出了幾個(gè)同名列作為視圖的字段
    • 需要在視圖中為某個(gè)列啟用新的更合適的名字
  • 例1:建立信息系學(xué)生的視圖

    CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS';

    例2:建立信息系學(xué)生的視圖,并要求進(jìn)行修改和插入操作時(shí)仍需保證該視圖只有信息系的學(xué)生

    CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS' WITH CHECK OPTION;

    透過(guò)視圖進(jìn)行增刪改操作時(shí),不得破壞視圖定義中的謂詞條件(即子查詢(xún)中的條件表達(dá)式)

    對(duì)IS_Student視圖的更新操作:

    • 修改操作:自動(dòng)加上Sdept= 'IS’的條件
    • 刪除操作:自動(dòng)加上Sdept= 'IS’的條件
    • 插入操作:自動(dòng)檢查Sdept屬性值是否為’IS’
    • 如果不是,則拒絕該插入操作
    • 如果沒(méi)有提供Sdept屬性值,則自動(dòng)定義Sdept為’IS’
    4.1.1 基于多個(gè)基表的視圖

    例3:建立信息系選修了1號(hào)課程的學(xué)生的視圖(包括學(xué)號(hào)、姓名、成績(jī))

    CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= 'IS' AND Student.Sno=SC.Sno AND SC.Cno= '1';
    4.1.2 基于視圖的視圖

    例4:建立信息系選修了1號(hào)課程且成績(jī)?cè)?0分以上的學(xué)生的視圖

    // IS_S2 基于視圖IS_s1:FROM IS_S1 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade>=90;
    4.1.3 帶表達(dá)式的視圖

    例5:定義一個(gè)反映學(xué)生出生年份的視圖

    // 表達(dá)式:2014-Sage CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2014-Sage FROM Student;
    4.1.4分組視圖

    例6:將學(xué)生的學(xué)號(hào)及平均成績(jī)定義為一個(gè)視圖

    // 分組:GROUP BY CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;
    4.2 刪除視圖

    語(yǔ)句的格式:

    DROP VIEW <視圖名>[CASCADE];
    • 該語(yǔ)句從數(shù)據(jù)字典中刪除指定的視圖定義
    • 如果該視圖上還導(dǎo)出了其他視圖,使用CASCADE級(jí)聯(lián)刪除語(yǔ)句,把該視圖和由它導(dǎo)出的所有視圖一起刪除
    • 刪除基表時(shí),由該基表導(dǎo)出的所有視圖定義都必須顯式地使用DROP VIEW語(yǔ)句刪除

    例子:

    CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade>=90;--刪除視圖BT_S DROP VIEW BT_S;--刪除視圖IS_S1: DROP VIEW IS_S1;--拒絕執(zhí)行--級(jí)聯(lián)刪除: DROP VIEW IS_S1 CASCADE;
    4.3 查詢(xún)視圖

    用戶角度: 查詢(xún)視圖與查詢(xún)基本表相同
    RDBMS實(shí)現(xiàn)視圖查詢(xún)的方法:
    視圖消解法(View Resolution)
    - 進(jìn)行有效性檢查
    - 轉(zhuǎn)換成等價(jià)的對(duì)基本表的查詢(xún)
    - 執(zhí)行修正后的查詢(xún)

    例子:
    在信息系學(xué)生的視圖中找出年齡小于20歲的學(xué)生

    CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS';SELECT Sno,Sage FROM IS_Student WHERE Sage<20;

    視圖消解轉(zhuǎn)換后的查詢(xún)語(yǔ)句為:

    SELECT Sno,Sage FROM StudentWHERE Sdept= 'IS' AND Sage<20

    有些情況下,視圖消解法不能生成正確查詢(xún)

    在S_G視圖中查詢(xún)平均成績(jī)?cè)?0分以上的學(xué)生學(xué)號(hào)和平均成績(jī)

    SELECT * FROM S_G WHERE Gavg>=90;S_G視圖的子查詢(xún)定義: CREATE VIEW S_G (Sno,Gavg)AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;

    錯(cuò)誤:

    SELECT Sno,AVG(Grade) FROM SC WHERE AVG(Grade)>=90 GROUP BY Sno;

    正確:

    SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>=90
    4.4 更新視圖

    更新視圖和更新基本表相同

    注:一些視圖是不可更新的——當(dāng)對(duì)視圖的更新無(wú)法轉(zhuǎn)換成對(duì)基本表SC的更新時(shí),如修改平均成績(jī)視圖中某個(gè)學(xué)生的平均成績(jī)不可實(shí)現(xiàn)
    舉例:

    向信息系學(xué)生視圖IS_S中插入一個(gè)新的學(xué)生記錄:200215129,趙新,20歲

    INSERT INTO IS_Student VALUES(95029’,‘趙新’,20)

    轉(zhuǎn)換為對(duì)基本表的更新:

    INSERT INTO Student(Sno,Sname,Sage,Sdept) VALUES(200215129 ','趙新',20,'IS' )

    刪除信息系學(xué)生視圖IS_Student中學(xué)號(hào)為200215129的記錄

    DELETE FROM IS_Student WHERE Sno= ' 200215129 '

    轉(zhuǎn)換為對(duì)基本表的更新:

    DELETE FROM Student WHERE Sno= ' 200215129 ' AND Sdept= 'IS'
    更新視圖的限制:

    一些視圖是不可更新的,因?yàn)閷?duì)這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新

    例:視圖S_G為不可更新視圖。

    UPDATE S_G SET Gavg=90 WHERE Sno=200215121’;

    這個(gè)對(duì)視圖的更新無(wú)法轉(zhuǎn)換成對(duì)基本表SC的更新
    實(shí)際系統(tǒng)對(duì)視圖更新的限制

    DB2對(duì)視圖更新的限制:
    (1) 若視圖是由兩個(gè)以上基本表導(dǎo)出的,則此視圖不允許更新。
    (2) 若視圖的字段來(lái)自字段表達(dá)式或常數(shù),則不允許對(duì)此視圖執(zhí)行INSERT和UPDATE操作,但允許執(zhí)行DELETE操作。
    (3) 若視圖的字段來(lái)自集函數(shù),則此視圖不允許更新。
    (4) 若視圖定義中含有GROUP BY子句,則此視圖不允許更新。
    (5) 若視圖定義中含有DISTINCT短語(yǔ),則此視圖不允許更新。
    (6) 若視圖定義中有嵌套查詢(xún),并且內(nèi)層查詢(xún)的FROM子句中涉及的表也是導(dǎo)出該視圖的基本表,則此視圖不允許更新。
    (7) 一個(gè)不允許更新的視圖上定義的視圖也不允許更新


    別吝嗇一個(gè)👍。
    別吝嗇一個(gè)👍。
    別吝嗇一個(gè)👍。




    寫(xiě)在最后:
    我叫風(fēng)骨散人,名字的意思是我多想可以不低頭的自由生活,可現(xiàn)實(shí)卻不是這樣。家境貧寒,總得向這個(gè)世界低頭,所以我一直在奮斗,想改變我的命運(yùn)給親人好的生活,希望同樣被生活綁架的你可以通過(guò)自己的努力改變現(xiàn)狀,深知成年人的世界里沒(méi)有容易二字。目前是一名在校大學(xué)生,預(yù)計(jì)考研,熱愛(ài)編程,熱愛(ài)技術(shù),喜歡分享,知識(shí)無(wú)界,希望我的分享可以幫到你!
    如果有什么想看的,可以私信我,如果在能力范圍內(nèi),我會(huì)發(fā)布相應(yīng)的博文!
    謝謝大家的閱讀!😘

    總結(jié)

    以上是生活随笔為你收集整理的『数据库』震惊,某博主为吸引眼球拿出压箱底SQL总结,如果你没看那就吃亏了!(超级详细的SQL基础,你还不会的话就别学数据库了)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产又粗又猛又爽又黄 | 欧美少妇在线 | 97在线视频人妻无码 | 国产三级91 | 一级黄毛片 | 91在线日本 | 精品人伦一区二区三区蜜桃网站 | 精品夜夜澡人妻无码av | 国产露脸国语对白在线 | 久久久久成人精品免费播放动漫 | 538国产精品视频一区二区 | 私库av在线 | 久久久久久久久久网站 | 夜夜av| 手机在线播放av | 成人黄色一级片 | 中文字幕 日本 | 国产精品区一区二 | 欧美一级二级三级视频 | 成人国产精品视频 | 亚洲av成人片无码 | 亚洲97色| 韩国19主播内部福利vip | 国产精品igao视频 | 亚洲精品一区二区三区新线路 | 日本一道本在线 | 日本免费黄色网址 | 丝袜老师让我了一夜网站 | 国产精品第6页 | 午夜影院试看 | 欧美性色视频 | 久久精品视频一区二区三区 | 中文字幕第3页 | 亚洲图片中文字幕 | 伊人久久青青 | 黄色aaa毛片 | 久久久久区 | www黄色片 | 久久午夜网 | 成色视频| 精品96久久久久久中文字幕无 | 精品在线视频免费观看 | 男女猛烈无遮挡免费视频 | 奇米第四色影视 | 国产精品高潮AV无码 | 污污内射在线观看一区二区少妇 | 欧美自拍偷拍一区 | 91精品国产成人观看 | 一区视频在线 | av天天色 | 综合五月婷婷 | 免费av不卡在线观看 | 久久久久久久99 | 你懂的视频在线播放 | 亚洲激情影院 | 欧美精品二区三区四区免费看视频 | 五个女闺蜜把我玩到尿失禁 | 青青草狠狠操 | 91亚洲精品国偷拍自产在线观看 | 99re在线观看| 成人一区二区三区 | 欧美三级视频在线观看 | 日韩色影院 | 久久国产精品久久久久久电车 | 超碰狠狠干 | 超碰2025 | 一区二区三区四区视频在线观看 | 无码国产精品高潮久久99 | 亚欧洲精品视频 | 国产jzjzjz丝袜老师水多 | 亚洲情趣 | 美女精品视频 | 亚洲破处视频 | 欧美视频色 | 亚洲男女 | 中文字幕在线观看日韩 | 亚洲天堂二区 | 天天躁日日躁狠狠躁av麻豆男男 | 性欧美日韩| 欧美一区二区在线视频观看 | 日韩国产在线播放 | 91高清免费 | 色综合av在线 | 国产精品网站视频 | 91精品网 | 97福利网| 91精品免费看 | 琪琪女色窝窝777777 | 青青青av | 中文字幕国产剧情 | 99久久99九九99九九九 | 大肉大捧一进一出好爽 | 放几个免费的毛片出来看 | 日韩大片免费观看 | 黄色小视频在线观看 | 国产精品国产三级国产普通话对白 | 一区二区三区四区中文字幕 | 蜜桃av久久久亚洲精品 | 国产精品久久久久无码av色戒 |