【云駐共創】輕松學習華為云數據庫之SQL語言
一、 引言

數據庫對于計算機專業的人來說是非常熟悉的,非專業的人來說肯定也聽到過。那么什么是數據庫呢?專業的來說,數據庫其實就是一種電子的倉庫,專門用來存儲數據和管理數據的一種處所,用戶可以對數據庫進行一系列的增刪改查。
華為云數據庫是基于華為多年數據庫研發、搭建、維護經驗打造,產品包括云數據庫RDS for MySQL,RDS for PostgreSQL,GaussDB,文檔數據庫服務DDS,數據復制服務DRS等。
我們今天重點講述的內容是其中的一項SQL語言。
二、 SQL語言概述
2.1 SQL語言簡介
SQL是一種結構化查詢語言, 同時也是高級的非過程化編程語言。它除了數據查詢,它還具有很多別的功能,如可以定義數據結構、維護數據庫中的數據,以及定義安全性約束等。在1974年由California研究實驗室研制的一種關系數據庫管理系統,研制出一套規范語言SEQUEL,并在1976年公布新版本的SEQUEL2,在1980年才正式更名為SQL。
2.2 SQL語言的特點
(1)語言功能的一體化:SQL語言風格統一,集數據操縱,數據定義,數據控制功能于一體,可以完成數據庫活動中的全部工作,包括創建數據庫、定義模式、更改和查詢數據以及安全控制和維護數據庫等。
(2)高度非過程化:SQL語言是一種高度非過程化的語言,在使用SQL語句訪問數據庫時,用戶沒有必要告訴計算機如何一步步完成任務,只需要用SQL語言描述要做什么就行了,數據庫管理系統會自動完成全部工作。
(3)面向集合的操作方式:SQL語言采用集合操作方式,不僅查詢結果是記錄的集合,而且插入、 刪除和更新操作也是記錄的集合。用戶只要使用一條操作命令,其操作對象和操作結果都可以是行的集合。數據操縱語言包括插入、刪除、修改、查詢、統計、分組、排序。
(4)提供多種方式使用:SQL既是自含式語言,又是嵌入式語言。自含式語言可以獨立地聯機交互,即用戶可以直接以命令的方式交互使用。嵌入式語言是指SQL可以嵌入到向Java、C#等高級程序設計語言中使用。
(5)語言簡潔: SQL語法簡單,易學易用。
(6)支持三級模式結構:視圖和部分基本表,對應的是外模式,全體表結構對應的是模式,數據庫的存儲文件和它們的索引文件構成關系數據庫的內模式。
2.3 SQL語言的功能
(1)數據定義
能夠定義數據庫的三級模式結構,即外模式、內模式和全局模式,其中外模式也叫做視圖,全局模式簡稱模式,內模式由系統根據數據庫模式自動實現,一般無需用戶過問。也可以實現對基本表、視圖、索引文件的定義,也可以實現模式的修改和刪除等操作。
(2)數據操作
提供了數據查詢和數據維護兩種功能,尤其是很強的數據查詢能力。數據查詢就是對數據庫中的數據查詢、統計、分組、排序等操作;數據維護就是對數據的插入、刪除、更新等數據維護操作。后文我們也會詳細介紹這些SQL語言的操縱語句,現在先簡單認識一下。
(3)數據控制
數據控制包括對基本表和視圖的授權,完整性規則定義和更新的描述,以及事務控制語句等,其目的就是保證系統的安全性。
三、 SQL語言操縱語句
3.1 Excel和傳統數據庫的組織結構
整個Excel表叫做工作簿,users、books叫做工作表,users有三行數據,每一行數據有六列信息組成,每列信息都有其相對應的信息類型。傳統數據庫的組織結構包含數據庫、數據庫表、數據行和字段。數據庫就類似于Excel的工作簿,數據表就類似于Excel的工作表,數據行就類似于Excel的每一行數據,字段就類似于列信息。
3.2 定義數據庫
創建一個新的數據庫的,語句格式為:CREATE DATABASE
例如:
CREATE DATABASE base1;
創建了一個名為 base1,在數據庫軟件中執行本條語句之后就會顯示“命令已成功完成”。
3.3 定義及維護數據表
定義一個數據表的語句格式為:CREATE TABLE
例如:
CREATE TABLE tab1;
一個數據庫最重要的還是數據,在我們創建數據表的時候就可以開始添加各個屬性列了,此時需要說明各屬性列的數據類型。在創建表的同時通常還可以定義與該表有關的完整性約束,這些完整性約束條件被存入系統的數據字典中,當用戶操作表中的數據時由DBMS自哦懂檢查該表操作是否違背了這些完整性約束條件。如果完整性約束條件涉及該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。
表級約束一共有六種:
(1) DEFAULT:默認值約束;
(2) UNIQUE:惟一性約束;
(3) PRIMARY KEY:主鍵約束;
(4) FOREIFN KEY:外鍵約束;
(5) REFERENCES:參照完整性約束;
(6) CHECK:檢查約束;
例如:
CREATE TABLE MY_school ( School_id CHAR(5) NOT NULL, School_name CHAR(10) NULL , School_dean CHAR(10) NULL , School_tel CHAR(13) NULL , School_addr CHAR(8) NULL, PRIMARY KEY (School_id));
執行完成這些語句之后,我們通過查詢語句就可以看到在數據庫中已經存在我們創建的數據表的列信息了。
3.4 基本表的修改
在基本表建立之后,用戶可以根據實際需要對基本表的結構進行修改。SQL語言用ALERT TABLE語句修改基本表,其一般格式為:
ALERT TABLE
其中<表名>是要修改的基本表,ADD子句用于增加新列和新的完整性約束條件;DROP子句用于刪除指定列和指定的完整性約束條件;ALERT子句用于修改原先的列定義,包括修改列名和數據類名。
例如:
ALTER TABLE MY_school ADD School_brief CHAR(50) NULL;
現在再查詢基本表的話,就會多出一個信息列,就是剛剛添加的School_brief.
3.5 基本表的刪除
當某個基本表不再需要時,可以使用DROP TABLE語句刪除。
其一般格式為:
DROP TABLE [IF EXISTS] <表名1> [<表名2>,<表名3>……]
DROP TABLE可以同時刪除多個表,只要將表得名字依次寫在后面,相互之間用逗號隔開。 IF EXISTS 用于在刪除表之前判斷該表是否存在。如果不加IF EXISTS, 當數據庫表不存在時MySQL將提示錯誤,中斷SQL語句的執行;加上IF EXISTS后,當數據庫表不存在時SQL語句可以順利執行,但是會發出警告(warning) .而且基本表的刪除也是有限制條件的,要刪除的基本表不能被其他表的約束所引用。如果存在這些依賴該表的對象,則表不能被刪除。
3.6 定義視圖
視圖是關系數據庫系統提供給用戶以多種角度觀察數據庫中數據的重要機制。視圖是從一個或幾個基本表導出的表,它與基本表不同,是一個虛表。數據庫中只存放視圖的定義,不存放視圖對應的數據,這些數據仍存放在原來的基本表中,所以基本表中的數據發生變化,從視圖中查詢出的數據也會發生改變。
SQL語言用CREATE VIEW命令建立視圖,其一般格式為:
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
其中view_name指定視圖的名字,該名稱在數據庫中必須是唯一的,不能與其他數據庫或視圖同名;
例如:
CREATE VIEW v_school AS SELECT school_id,school_name FROM MY_school
3.7 定義觸發器
觸發器是用戶定義在關系表上的一類由事件驅動的特殊過程,也是一種保證數據完整性的方法。觸發器實際上是一類特殊的存儲過程,其特殊性表現在一旦定義,無須用戶調用,任何對表的修改操作均由服務器自動激活相應的觸發器。
定義觸發器的格式為:
CREATE < Trigger_ name > < BEFORE| AFTER > < INSERT| UPDATE| DELETE > ON < table_ name > FOR EACH Row< Trigger body >
< BEFORE| AFTER >指觸發器在動作前觸發還是之后觸發,< INSERT| UPDATE| DELETE >是要進行什么操作,EACH Row< Trigger body >觸發器觸發檢驗的條件。
3.8 數據庫表數據輸入
SQL的INSERT語句用于向數據表中插入數據,既可以插入單行,也可以插入多行,甚至可以插入子查詢的結果。
插入單行元組的INSERT語句的格式為:
INSERT INTO < table_ name > [(
INTO指定要插入數據的表名及字段,字段的順序可與表定義中的順序不一致,沒有指定字段表示要插入的是一條完整的記錄,且字段屬性與表定義中的順序一致,指定部分字段表示插入的記錄在其余字段上取空值。
例如我們在第一個表格中插入一條數據就會出現第二個表格:
INSERT INTO MY_school(School_id,School_name,School_dean,School_tel,School_addr) VALUES('H','媒體與設計','王佳佳','010-81794522','H-MTSJ');
3.9 數據庫表數據修改
修改操作語句的一般格式為:
UPDATE < table name > SET < column name1 >=< new value 1> [,< column name2 >=< new value 2>]... [WHERE column_ name=some_ value]
其功能是修改指定表中滿足WHERE子句條件的數據。其中,SET指定修改方式要修改的字段,修改后取值;WHERE指定要修改的記錄,缺省表示要修改表中的所有記錄。
例如我們要修改第一個表中的數據進行如下操作:
UPDATE MY_ school SET School_ dean= '王佳佳’ WHERE School id= 'G';
3.10 數據庫表數據刪除
刪除數據的一般格式為:
DELETE FROM < table name > [WHERE < condition >];
DELETE語句的功能是從指定表中刪除滿足WHERE子句條件的所有數據,如果省略WHERE子句表示刪除表中的所有數據,但表的定義仍在數據字典中,也就是說DELETE語句刪除的是表中的數據,而不是關于表的含義。
例如進行以下刪除操作:
DELETE FROM MY_ school WHERE School_ name= '媒體與設計';
四、 結語
SQL是一種通用的,功能強大同時又是簡單易學的關系數據庫語言,集數據查詢、數據操作、數據定義和數據控制四大功能為一體。自SQL成為國際標準語言以來,各個數據庫廠家紛紛推出各自的SQL軟件或與SQL的接口軟件。這就使大多數數據庫均用SQL作為共同的數據存放語言和標準接口,使不同數據庫系統之間的互相操作有了共同的基礎。SQL已成為數據庫領域中的一個主流語言,被廣泛應用在商用系統中,現已成為數據開發的標準語言。
本文整理自華為云社區【內容共創】活動第15期。
https://bbs.huaweicloud.com/blogs/345822
任務21:華為云數據庫之SQL語言
上云必讀 SQL 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。