SQL基礎知識 適合初學者

增刪改查
SELECT
SELECT 語句用於從表中選取數據。

SELECT 列名 FROM 表名
SELECT * FROM 表名
DISTINCT
僅列出表中不同(distinct)的值,用於返回唯一不同的值(剔重)SELECT DISTINCT 列名 FROM 表名
AS
爲列名稱和表名稱指定別名(Alias)。

SELECT * FROM 表名 AS 別名
ORDER BY
用於根據指定的列對結果集進行默認升序排序,降序DESCSELECT * FROM 表名 ORDER BY 列名 DESC
INSERT INTO
向表格中插入新的行。

INSERT INTO 表名 VALUES ('值1''值2')
INSERT INTO 表名 (1,2) VALUES ('值1', '值2')
UPDATE
修改表中的數據。

UPDATE 表名 SET 列名 = '新值' WHERE 某列名 = '某值'
UPDATE 表名 SET 列名1 = '新值1' , 列名2 = '新值2' WHERE 某列名 = '某值'
DELETE
刪除表中的行。

DELETE FROM 表名 WHERE 列名 = '值'
INTO
從一個表中選取數據,然後把數據插入另一個表中。
常用於創建表的備份復件或者用於對記錄進行存檔。

SELECT 列名
INTO 新表(需要插入的表名)
FROM 舊錶1 A
INNER JOIN 舊錶2 B ON A.1 = B.2
WHERE A.11='值1' AND B.22='值2'
CREATE
創建數據庫。

CREATE DATABASE 庫名
1
CREATE TABLE
創建數據庫中的表。

CREATE TABLE 表名(
    列名1 數據類型,
    列名2 數據類型
)
數據類型	描述
INTRGER(SIZE)	整數,SIZE規定數字的最大位數。
INT(SIZE)	整數,SIZE規定數字的最大位數。
SMALLINT(SIZE)	整數,SIZE規定數字的最大位數。
TINYINT(SIZE)	整數,SIZE規定數字的最大位數。
DECIMAL(SIZE,NUM)	帶小數的數字,SIZE規定數字的最大位數,NUM規定小數點後幾位。
NUMERIC(SIZE,NUM)	帶小數的數字,SIZE規定數字的最大位數,NUM規定小數點後幾位。
CHAR(SIZE)	固定長度字符串,SIZE規定長度
VARCHAR(SIZE,NUM)	可變長度字符串,SIZE規定最大長度
DATE(YYYYMMDD)	日期,YYYYMMDD規定格式
條件/連接
WHERE
有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句。

SELECT 列名 FROM 表名 WHERE 列 運算符 值
運算符
運算符	描述
=	等於
<>	不等於
>	大於
<	小於
>=	大於等於
<=	小於等於
BETWEEN	在某個範圍
LIKE	模糊搜索
AND	前後條件都成立
OR	前後條件其中一個
LIKEWHERE 子句中搜索列中的指定模式。

SELECT * FROM 表名 WHERE 列名 LIKE '%值%' #包含
SELECT * FROM 表名 WHERE 列名 NOT LIKE '%值%' #不包含

通配符
替代一個或多個字符。

通配符	描述
%	替代一個或多個字符
_	僅替代一個字符
[ABC]	ABC中的任何單一字符
[!ABC]	不在ABC中的任何單一字符
INWHERE 子句中規定多個值。

SELECT * FROM 表名 WHERE 列名 IN (1,2)
BETWEEN
選取介於兩個值之間的數據範圍,包含BETWEEN,不包含ANDSELECT * FROM 表名 WHERE 列名 BETWEEN '值1' AND '值2'
JOIN
根據兩個或多個表中的列之間的關係,從這些表中查詢數據。
INNER JOIN: 如果表中有至少一個匹配,則返回行
LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
FULL JOIN: 只要其中一個表中存在匹配,就返回行

SELECT a1.,a2.FROM1 AS a1,2 AS a2 
WHERE a1.id = a2.Id
INNER JOIN
在表中存在至少一個匹配時,返回行。

SELECT a1.,a2.FROM1 AS a1 
INNER JOIN2 AS a2 
ON a1.id = a2.Id

LEFT JOIN
從左表返回所有的行,即使在右表中沒有匹配的行。

SELECT a1.,a2.FROM1 AS a1 
LEFT (OUTER) JOIN2 AS a2 
ON a1.id = a2.Id

RIGHT JOIN
從右表返回所有的行,即使在左表中沒有匹配的行。

SELECT a1.,a2.FROM1 AS a1 
RIGHT (OUTER) JOIN2 AS a2 
ON a1.id = a2.Id

FULL JOIN
只要其中某個表存在匹配,就會返回行。

SELECT a1.,a2.FROM1 AS a1 
FULL (OUTER) JOIN2 AS a2 
ON a1.Id = a2.Id

取整函數
CEIL
向上取整,只返回值的整數部分,有小數都進1

CEIL(0.1) = 1

FLOOR
向下取整,只返回值的整數部分

FLOOR(0.9) = 0
ROUND
四捨五入,後面爲保留小數位數

ROUND(0.49,0) = 0
ROUND(0.5,0) = 1
ROUND(1,2) = 1.00
TOP
規定要返回的記錄的數目,並非所有的數據庫系統都支持 TOP 子句。

#MYSQL
SELECT TOP 條目數 FROM 表名
SELECT TOP 百分數 PERCENT FROM 表名

#ORACLE
SELECT * FROM 表名 WHERE ROWNUM <= TOP值

格式/規則
CAST
轉換數據格式

CAST(expression AS data_type)
數據格式	函數
二進制	BINARY
字符	CHAR
日期	DATE
時間	TIME
日期時間	DATETIME
浮點數	DECIMAL
整數	SIGNED
無符號整數	UNSIGNED
UNIONUNION ALL
UNION
UNION 操作符選取不同的值,重複的值只顯示一次。

SELECT 列名 FROM1
UNION
SELECT 列名 FROM2

UNION ALL
UNION ALL操作符選取不同的值,允許顯示重複的值。

SELECT 列名 FROM1
UNION ALL
SELECT 列名 FROM2

Constraints (約束)
NOT NULL
約束列不可爲NULL值。

CREATE TABLE 表名(
    列名1 數據類型 NOT NULL,
    列名2 數據類型 NOT NULL
)

UNIQUE/PRIMARY KEY
約束唯一標識數據庫表中的每條記錄。
每個表都有一個主鍵,並且每個表只能有一個主鍵,主鍵必須包含唯一的值。
UNIQUEPRIMARY KEY 約束均爲列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 約束
PRIMARY KEY不能爲NULLUNIQUE可爲NULL
創建UNIQUE/PRIMARY KEY約束
#MYSQL
CREATE TABLE 表名(
    列名1 數據類型 NOT NULL,
    列名2 數據類型,
    PRIMARY KEY (列名1)UNIQUE (列名2)
)

#ORACLE/SERVER/MS ACCESS
CREATE TABLE 表名(
    列名1 數據類型 NOT NULL PRIMARY KEY,
    列名2 數據類型 UNIQUE
)

#定義多列約束
CREATE TABLE 表名(
    列名1 數據類型 NOT NULL,
    列名2 數據類型 NOT NULL,
    列名3 數據類型,
    列名4 數據類型 NOT NULL,
    CONSTRAINT 約束名 PRIMARY KEY (列名1,列名2)CONSTRAINT 約束名 UNIQUE (列名3,列名4)
)

新增UNIQUE/PRIMARY KEY約束
ALTER TABLE 表名
    ADD UNIQUE (列名1),
    ADD PRIMARY KEY (列名2)

#定義多列約束
ALTER TABLE 表名
    ADD CONSTRAINT 約束名 UNIQUE (列名1,列名2),
    ADD CONSTRAINT 約束名 PRIMARY KEY (列名3,列名4)

取消UNIQUE/PRIMARY KEY約束
#MYSQL
ALTER TABLE 表名
    DROP INDEX 約束名,
    DROP PRIMARY KEY

#ORACLE/SERVER/MS ACCESS
ALTER TABLE 表名 DROP CONSTRAINT 約束名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章