學習SQL【2】-資料庫與SQL
一:資料庫是什麼?
1:定義 ● 將大量數據通過計算機加工而成的可以進行高效訪問的數據集合稱為資料庫(DB)。
● 用來管理資料庫的計算機系統稱為資料庫管理系統(DBMS)。● 關係資料庫通過關係型資料庫管理系統(RDBMS)進行管理。2:為什麼DBMS那麼重要?
答:DBMS能夠實現多個用戶同時安全簡單的操作大量數據。3:DBMS的種類
● 層次資料庫(HDB):最古老的資料庫之一,現在已經很少使用了。● 關係資料庫(RDB):關係資料庫是現在應用最廣泛的資料庫。它採用由行和列組成的二維表來管理數據。同時,它使用SQL(結構化查詢語言)對數據進行操作。4:關係資料庫管理系統(RDBMS)的種類
● oracle :甲骨文公司的RDBMS。● SQL server:微軟公司的RDBMS。● DB2:IBM公司的RDBMS。● PostgreSQL:開源的RDBMS。● MySQL:開源的RDBMS。
二:資料庫的結構
1:RDBMS的常見結構
RDBMS最常見的系統結構是客戶端/伺服器類型(C/S)結構。2:表的結構
● 用來管理數據的二維表在關係資料庫中簡稱為表。● 根據SQL語句的內容返回的數據同樣是二維表格式。● 表的行稱為記錄,表的列稱為欄位。● 關係資料庫必須以行作為單位進行數據讀寫。● 一個單元格內只能輸入一個數據。如下圖:
三:SQL概要
1:標準SQL
國際標準化組織(ISO)為SQL制定了相應的標準,以此為基準的SQL稱為標準SQL雖然不同的RDBMS存在一些特使的SQL語句,但學會標準SQL就可以在各種RDBMS中書寫SQL語句了。
2:SQL語句及其種類
SQL使用關鍵字、表名、列名等組合成一句SQL語句來描述操作的內容。根據指令種類不同,SQL語句可分為三種:
● DDL(數據定義語言):用來創建和刪除資料庫或表等對象。DDL包含以下指令:
① CREATE:創建資料庫或表。
② DROP:刪除資料庫或表。③ ALTER:修改資料庫或表。● DML(數據操縱語言):用來查詢或變更表中的記錄。DML包含以下指令:
① SELECT:查詢表中的數據。② INSERT:向表中插入數據。③ UPDATE:更新表中的數據。④ DELETE:刪除表中的數據。● DCL(數據控制語言):用來確認或取消對數據進行的更改。DCL包含以下幾種指令:
① COMMIT:確認數據的變更。② ROLLBACK:取消數據的變更。
③ GRANT:賦予用戶操作許可權。④ REVOKE:取消用戶的操作許可權。3:SQL的基本書寫規則
● SQL語句要以分號(;)結尾。● SQL不區分關鍵字的大小寫,但是插入到表中的數據是區分大小寫的。
通常情況下,約定: ① 關鍵字大寫 ② 表名的首字母大寫。 ③ 其餘(列名等)小寫。●字元串和日期常數需要使用單引號(『)括起來。
如』abc』這樣的字元串,或』2017-12-01』這樣的日期。● 數據常數無需加單引號(直接書寫數字即可)。
如1000這樣的數字直接書寫即可。● 單詞需要半形空格或換行符來分隔。
如:CREATE TABLE Product;四:表的創建
1:資料庫的創建
CREATE DATABASE <資料庫名稱>;
如我創建一個名為shop的資料庫:
CREATE DATABASE shop;
2:表的創建
創建表的語句:
CREATE TABLE <表名>( <列名1> <數據類型> <約束條件>, <列名2> <數據類型> <約束條件>, <列名3> <數據類型> <約束條件>, <列名4> <數據類型> <約束條件>, .... <該表的的約束條件1> <該表的的約束條件2>...);
例如我創建的Product表:
3:命名規則
● 資料庫名稱、表名、列名可以使用英文字母、數字和下劃線三種字元組成。● 名稱必須以英文字母開頭。● 名稱不能重複。如下圖所示:4:數據類型的指定
● 所有列都必須指定數據類型。
● 數據類型包括數字型、字元型和日期型等。我們常用的有如下四種數據類型:
① INTEGER型:指定存儲整數的列,不能存放小數。② CHAR型:定長字元串型,所謂定長字元串,就是當列中存儲的字元串長度達不到最大長度時,使用半形空格進行補齊。
例如,我們向CHAR(8)類型的列輸入』abc』的時候,會以』abc 『(後面跟5個空格)的形式保存下來。③ VARCHAR型:可變長字元串型,顧名思義,即使字元串未達到最大長度,也不會使用空格補齊。
④ DATE型:指定存儲日期的數據類型。
如下圖:5:約束的設置
約束是除了數據類型之外,對列中存儲的數據進行限制或者追加條件的功能。例如:product_id CHAR(4) NOT NULL;product_name VARCHAR(100) NOT NULL;product_type VARCHAR(32) NOT NULL;
數據類型的右側設置了NOT NULL 約束,NULL是代表空白的關鍵字,NOT NULL 就代表不能輸入空白,也就是必須輸入數據的約束。
再例如:
PRIMARY KEY (product_id)
這是用來給 product_id 列設置主鍵約束的,主鍵就是特定一行數據的列,也是唯一確定的一行數據的列。
五:表的更新和刪除
1:表的刪除
使用語句:DROP TABLE <表名>;
刪除了表是無法恢復的。
2:表定義的更新
添加列的語句:ALTER TABLE <表名> ADD COLUMN <列的定義>;
刪除列的語句:
ALTER TABLE <表名> DROP COLUMN <列名>;
表定義變更之後無法恢復。
3:向Product表中插入數據
語句如下:BEGIN TRANSACTION;INSERT INTO Product VALUES (0001, T衫, 衣服, 1000, 500, 2017-09-20);INSERT INTO Product VALUES (0002, 打孔器, 辦公用品, 500, 320, 2017-09-11);..............................COMMIT;
注釋:在MySQL中,需要把第一行的 BEGIN TRANSACTION; 改寫為:
START TRANSACTION;
向Product插入數據後,結果如下圖所示:
下一節我們再學習SQL的查詢語句。
歡迎關注我微信公眾號:小白客
每天學習一點點,每天進步一點點。
推薦閱讀:
※傳統關係資料庫高可用的缺失
※資料庫系統概念筆記(1)引言(上)
※關於高並發解決問題的一點總結
※Access資料庫應用思維導圖
※Python採集微博熱評進行情感分析祝你狗年脫單