SQL 初級教程

整理自菜鳥教程
基礎概念要知道一些:

  1. 創建數據庫
    CREATE DATABASE dbname;
  2. 創建表
    CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );
    3.NOT NULL 約束 約束強制字段始終包含值。這意味着,如果不向字段添加值,就無法插入新記錄或者更新記錄
    CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
  3. UNIQUE 約束唯一標識數據庫表中的每條記錄。
    UNIQUE 和 PRIMARY KEY 約束均爲列或列集合提供了唯一性的保證。
    PRIMARY KEY 約束擁有自動定義的 UNIQUE 約束。
    請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。
  • 在 “Persons” 表創建時在 “P_Id” 列上創建 UNIQUE 約束
    CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (P_Id) )
  • 命名 UNIQUE 約束,並定義多個列的 UNIQUE 約束
    CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName) )
  • 表已被創建時,如需在 “P_Id” 列創建 UNIQUE 約束,請使用下面的 SQL:
    ALTER TABLE Persons ADD UNIQUE (P_Id)
  • 如需命名 UNIQUE 約束,並定義多個列的 UNIQUE 約束,請使用下面的 SQL 語法:
    ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
  • 撤銷 UNIQUE 約束,請使用下面的 SQL
    ALTER TABLE Persons DROP INDEX uc_PersonID
  1. PRIMARY KEY 約束唯一標識數據庫表中的每條記錄。
    主鍵必須包含唯一的值。
    主鍵列不能包含 NULL 值。
    每個表都應該有一個主鍵,並且每個表只能有一個主鍵。
  • 在 “Persons” 表創建時在 “P_Id” 列上創建 PRIMARY KEY 約束:CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) )
  • 如需命名 PRIMARY KEY 約束,並定義多個列的 PRIMARY KEY 約束,請使用下面的 SQL 語法:CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) )
  • 當表已被創建時,如需在 “P_Id” 列創建 PRIMARY KEY 約束,請使用下面的 SQL:
    ALTER TABLE Persons ADD PRIMARY KEY (P_Id)
  • 如需命名 PRIMARY KEY 約束,並定義多個列的 PRIMARY KEY 約束,請使用下面的 SQL 語法:
    ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)如果您使用 ALTER TABLE 語句添加主鍵,必須把主鍵列聲明爲不包含 NULL 值(在表首次創建時)。
  • 如需撤銷 PRIMARY KEY 約束,請使用下面的 SQL:
    ALTER TABLE Persons DROP PRIMARY KEY
  1. 在 “Orders” 表創建時在 “P_Id” 列上創建 FOREIGN KEY 約束
    CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) )
    如需命名 FOREIGN KEY 約束,並定義多個列的 FOREIGN KEY 約束,請使用下面的 SQL 語法
    CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) )
    當 “Orders” 表已被創建時,如需在 “P_Id” 列創建 FOREIGN KEY 約束,請使用下面的 SQL:
    ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
    如需命名 FOREIGN KEY 約束,並定義多個列的 FOREIGN KEY 約束,請使用下面的 SQL 語法:
    ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
    撤銷 FOREIGN KEY 約束,請使用下面的 SQL:
    ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders

一、數據庫表

  1. use RUNOOB; 命令用於選擇數據庫。
  2. set names utf8; 命令用於設置使用的字符集。
  3. SELECT * FROM Websites; 讀取數據表的信息。
    在這裏插入圖片描述
  • SQL 對大小寫不敏感:SELECT 與 select 是相同的
  • 分號是在數據庫系統中分隔每條 SQL 語句的標準方法,這樣就可以在對服務器的相同請求中執行一條以上的 SQL 語句。

二、SELECT

  1. 從 “Websites” 表中選取 “name” 和 “country” 列:

SELECT name,country FROM Websites;
在這裏插入圖片描述

三、SELECT DISTINCT

在表中,一個列可能會包含多個重複值,有時您也許希望僅僅列出不同(distinct)的值。DISTINCT 關鍵詞用於返回唯一不同的值

  1. 僅從 “Websites” 表的 “country” 列中選取唯一不同的值,也就是去掉 “country” 列重複值:

SELECT DISTINCT country FROM Websites;
在這裏插入圖片描述

四、WHERE

提取那些滿足指定條件的記錄

  1. 從 “Websites” 表中選取國家爲 “CN” 的所有網站
    SELECT * FROM Websites WHERE country='CN';
    在這裏插入圖片描述

五、文本字段 vs. 數值字段

SQL 使用單引號來環繞文本值(大部分數據庫系統也接受雙引號)。
在上個實例中 ‘CN’ 文本字段使用了單引號。
如果是數值字段,請不要使用引號。

SELECT * FROM Websites WHERE id=1;

六、AND & OR

  1. 從 “Websites” 表中選取國家爲 “CN” 且alexa排名大於 “50” 的所有網站:

    SELECT * FROM Websites WHERE country=‘CN’ AND alexa >50;
    在這裏插入圖片描述

  2. 從 “Websites” 表中選取國家爲 “USA” 或者 “CN” 的所有客戶

    SELECT * FROM Websites WHERE country='CN' OR country='USA';
    在這裏插入圖片描述

  3. 把 AND 和 OR 結合起來(使用圓括號來組成複雜的表達式)。
    下面的 SQL 語句從 “Websites” 表中選取 alexa 排名大於 “15” 且國家爲 “CN” 或 “USA” 的所有網站:

    SELECT * FROM Websites WHERE alexa>15 AND (country='CN' OR country='USA');
    在這裏插入圖片描述

七、ORDER BY

1. 升序

  1. 從 “Websites” 表中選取所有網站,並按照 “alexa” 列排序:
    SELECT * FROM Websites ORDER BY alexa;在這裏插入圖片描述

2.降序

  1. 從 “Websites” 表中選取所有網站,並按照 “alexa” 列降序排序
    SELECT * FROM Websites ORDER BY alexa DESC;
    在這裏插入圖片描述

3. 多列

  1. 從 “Websites” 表中選取所有網站,並按照 “country” 和 “alexa” 列排序:
    SELECT * FROM Websites ORDER BY country,alexa;在這裏插入圖片描述

八、INSERT INTO

INSERT INTO 語句可以有兩種編寫形式。
第一種形式無需指定要插入數據的列名,只需提供被插入的值即可:

INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二種形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
  1. 向 “Websites” 表中插入一個新行
    INSERT INTO Websites (name,url,alexa,country) values ('百度','http://baidu.com','4','CN');
    在這裏插入圖片描述

  2. 在指定的列插入數據。
    下面的 SQL 語句將插入一個新行,但是隻在 “name”、“url” 和 “country” 列插入數據(id 字段會自動更新):
    INSERT INTO Websites(name,url,country) values ('stackoverflow','http://stackoverflow.com/','IND');

在這裏插入圖片描述

九、UPDATE

  1. 把 “菜鳥教程” 的 alexa 排名更新爲 5000,country 改爲 USA。
    2.
    在更新記錄時要格外小心!在上面的實例中,如果我們省略了 WHERE 子句,如下所示:
    UPDATE Websites
    SET alexa=‘5000’, country=‘USA’
    執行以上代碼會將 Websites 表中所有數據的 alexa 改爲 5000,country 改爲 USA。
    執行沒有 WHERE 子句的 UPDATE 要慎重,再慎重。

十、DELETE

  1. 從 “Websites” 表中刪除網站名爲 “百度” 且國家爲 CN 的網站

DELETE FROM Websites WHERE name='百度' AND country='CN';
在這裏插入圖片描述
2. 刪除所有數據
可以在不刪除表的情況下,刪除表中所有的行。這意味着表結構、屬性、索引將保持不變:

DELETE FROM table_name;

DELETE * FROM table_name;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章