SQL(一、資料庫和SQL)
1、資料庫
資料庫管理系統(DBMS)
:用來管理資料庫的計算機系統稱為資料庫管理系統。
DBMS
主要透過資料的儲存格式(資料庫的種類)來進行分類,DBMS主要有5種類型
(1)層次資料庫(HDB)
(2)關係資料庫(RDB)
採用由行和列組成的二維資料表來管理資料,使用專門的SQL(Structured Query Language,結構化查詢語言)對資料進行操作。
這種型別的DBMS稱為關係型資料庫管理系統(Relational Database Management System),較具代表性的RDBMS有如下5種。
Oracle Database: 甲骨文公司的RDBMS
SQL Server: 微軟公司的RDBMS
DB2:IBM公司的RDBMS
PostgreSQL:開源的RDBMS
MySQL:開源的RDBMS
(3)面向物件資料庫(OODB)
(4)XML資料庫(XMLDB)
(5)鍵值儲存系統(KVS)
資料庫的結構
伺服器指的是用來接收其他程式發出的請求,並對該請求進行相應處理的程式,或者是安裝了此類程式的裝置(計算機)。
客戶端指的是向伺服器發出請求的程式(軟體),或者是安裝了該程式的裝置(計算機)。
RDBMS也是一種伺服器,它能夠從儲存在硬碟上的資料庫中讀取資料並返回,還可以把資料變成指定內容。訪問由RDBMS管理的資料庫,進行資料讀寫的程式稱為RDBMS客戶端。
RDBMS既可以和其客戶端同時安裝在同一臺計算機上,也可以分別安裝在不同的計算機上。這樣一來,透過網路不僅可以使二者相互關聯,還可以實現多個客戶端訪問同一個RDBMS。
表儲存在RDBMS管理的資料庫中,一個數據庫中可以儲存多個表。
表的列稱為欄位,表的行稱為記錄。
2、SQL語句及其種類(後續均以適用於MySQL資料庫的語句為標準)
SQL語句可以分為以下三類:
(1)DDL(data definition language,資料定義語言)用來建立或刪除儲存資料用的資料庫以及資料庫中的表等物件。
CREATE:建立資料庫和表等物件
DROP:刪除資料庫和表等物件
ALTER:修改資料庫和表等物件的結構
(2)
DML(data manipulation language, 資料操作語言)用來查詢或者變更表中的記錄。
SELECT:查詢表中的資料
INSERT:向表中插入新資料
UPDATE:變更表中的資料
DELETE:刪除表中的資料
(3)DCL(data control language,資料控制語言)用來確認或取消對資料庫中的資料進行的變更。此外,還可以對RDBMS的使用者是否有許可權操作資料庫中的物件(資料庫表等 )進行設定。
COMMIT:確認對資料庫中的資料進行的變更
ROLLBACK:取消對資料庫中的資料進行的變更
CRANT:賦予使用者操作許可權
REVOKE:取消使用者的操作許可權
SQL的基本書寫規則:
(1)SQL語句要以分號(;)結尾
(2)SQL語句不區分大小寫
(3)常數的書寫方式是固定的
字串和日期常數需要使用(‘)括起來。例如,’abc‘, ’2010-01-26‘。
資料常數無需加註單引號(直接書寫數字即可)。例如:1。
(4)SQL語句的單詞間需使用半形空格或換行符來進行分隔。
3、表的建立
(1)建立資料庫
CREATE DATABASE 資料庫名稱;
例:CREATE DATABASE shop;
(2)建立表
資料庫名稱、表名和列名可以使用以下三種字元。
1)半形英文字母;2)半形數字;3)下劃線(_)
名稱必須以半形英文開頭。
資料型別的指定:
資料型別表示資料的種類,包括數字型、字元型和日期型。
四種基本的資料型別:
INTEGER型:用來指定儲存整數的列的資料型別(數字型),不能儲存小數。
CHAR型:CHAR(M),M為指定該列可以儲存的字串的最大長度。字串以
定長字串
的形式儲存在被指定的CHAR型的列中,當該列中儲存的字串長度達不到最大長度的時候,使用半形空格進行補足。
VARCHAR型:VARCHAR(M),M為指定該列可以儲存的字串的最大長度,字串以
可變長字串
的形式來儲存字串的。
DATA型:用來指定儲存日期(年月日)的列的資料型別(日期型)。
約束的設定
約束是指除了資料型別之外,對列中儲存的資料進行限制或者追加條件的功能。表中設定了兩種約束。
(1)NOT NULL:該列設定不能輸入空白,設定在該列資料型別的右側。
(2)PRIMARY KEY(column):該列設定主鍵,設定在該列CREAT TABLE語句的後面。
鍵:在指定資料時使用的列的組合。
主鍵:可以特定一行資料的列。
CREATE TABLE Product
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER,
purchase_price INTEGER,
regist_date DATE,
PRIMARY KEY(product_id));
其中,上面每行均為對列的定義。
4、表的刪除和更新
刪除表:
DROP TABLE 表名;
表定義的更新:
新增列:ALTER TABLE 表名 ADD COLUMN 列的定義;
ALTER TABLE Product ADD COLUMN product_name_ pinyin VARCHAR(100);
刪除列:ALTER TABLE 表名 DROP COLUMN 列名;
ALTER TABLE Product ADD COLUMN product_name_ pinyin;
向表中插入資料(Product)
注:MySQL使用START TRANSACTION;
更改表名:RENAME TABLE Poduct to Product;