SQL语句快速回忆——SQL基础知识点汇总
文章目錄
- DDL
- 建表
- 約束
- 已經建了表要添加約束
- 取消主鍵PRIMARY約束
- 外鍵 FOREIGN KEY
- 建表時加外鍵(表2必須已經創建,并且建表時列名已經定義)
- 已有表添加外鍵約束
- 刪除外鍵約束
- DML
- SQL 常用數據類型匯總
- 搜索
- 搜索全部
- 搜索指定屬性名的信息
- 搜索滿足條件表達式的所有數據
- 搜索滿足條件的唯一的指定屬性
- 條件表達式WHERE
- AND 和 OR 運算符
- ORDER BY 語句用于根據指定的列對結果集進行排序
- 搜索滿足條件的唯一的指定屬性并按升序輸出
- 搜索滿足條件的唯一的指定屬性并按降序輸出
- 搜索滿足條件的指定屬性并按升序輸出(如果有同名屬性,同名的屬性按第二屬性升序輸出)
- 搜索滿足條件的指定屬性并按降序輸出(如果有同名屬性,同名的屬性按第二屬性升序輸出)
- GROUP BY
- HAVING
- INSERT插入
- 對表插入
- 對表的指定列插入
- UPDATE 修改
- 對表修改
- DELETE刪除
- 刪除行
- 刪除所有行
- TOP
- 選取最上方指定條數
- 選取最上方百分之xx的數據
- LIKE 匹配搜索
- 通配符
- IN 規定多個值
- BETWEEN AND查找介于兩個值之間的數據
- Alias/as 指定別名
- 列名指定別名
- 表名指定別名
- 多表聯動查詢
- 直接比對
- join操作
- JOIN類型
- UNION合并多個 SELECT 語句的結果集
- SELECT INTO 從一個表中選取數據,然后把數據插入另一個表中
- 有選擇的備份
SQL 指結構化查詢語言,全稱是 Structured Query Language。
RDBMS 指的是關系型數據庫管理系統。
SQL 對大小寫不敏感!
SQL 分為兩個部分:數據操作語言 (DML) 和 數據定義語言 (DDL)。
DDL
DDL主要是對數據庫和表的創建,修改,刪除。
CREATE DATABASE - 創建新數據庫 ALTER DATABASE - 修改數據庫 CREATE TABLE - 創建新表 ALTER TABLE - 變更(改變)數據庫表 DROP TABLE - 刪除表 CREATE INDEX - 創建索引(搜索鍵) DROP INDEX - 刪除索引建表
CREATE TABLE 表名稱 ( 列名稱1 數據類型, 列名稱2 數據類型, 列名稱3 數據類型, .... )
| 僅容納整數。在括號內規定數字的最大位數。 |
| 容納帶有小數的數字。 "size" 規定數字的最大位數。"d" 規定小數點右側的最大位數。 |
| char(size) | 容納固定長度的字符串(可容納字母、數字以及特殊字符)。 在括號中規定字符串的長度。 |
| varchar(size) | 容納可變長度的字符串(可容納字母、數字以及特殊的字符)。 在括號中規定字符串的最大長度。 |
| date(yyyymmdd) | 容納日期。 |
約束
NOT NULL 不能為空 UNIQUE 唯一(不重復) PRIMARY KEY 主鍵:包含唯一的值,不能為空,每個表都應該有一個主鍵,并且每個表只能有一個主鍵。 FOREIGN KEY CHECK DEFAULT已經建了表要添加約束
ALTER TABLE 表名 ADD 約束名 (列名)取消主鍵PRIMARY約束
ALTER TABLE 表名DROP PRIMARY KEY外鍵 FOREIGN KEY
FOREIGN KEY 約束用于預防破壞表之間連接的動作。
FOREIGN KEY 約束也能防止非法數據插入外鍵列,因為它必須是它指向的那個表中的值之一。
建表時加外鍵(表2必須已經創建,并且建表時列名已經定義)
FOREIGN KEY (列名) REFERENCES 表2(主鍵)已有表添加外鍵約束
ALTER TABLE Orders ADD FOREIGN KEY (當前建表的列名) REFERENCES 表2(主鍵)刪除外鍵約束
ALTER TABLE 表名 DROP FOREIGN KEY fk_PerOrdersDML
SELECT - 從數據庫表中獲取數據 UPDATE - 更新數據庫表中的數據 DELETE - 從數據庫表中刪除數據 INSERT INTO - 向數據庫表中插入數據SQL 常用數據類型匯總
字符串類: CHAR(N),CHARACTER(n) 字符/字符串。固定長度 n。 VARCHAR(n),CHARACTER VARYING(n) 字符/字符串。可變長度。最大長度 n。數字類: BINARY(n) 二進制串,固定長度 n。 BOOLEAN 存儲 TRUE 或 FALSE 值 VARBINARY(n) 或BINARY VARYING(n) 二進制串。可變長度。最大長度 n。 INT,INTEGER 長整數,4字節 SMALLINT 短整數,2字節 BIGINT 大整數,8字節定點數: NUMERIC(p,d) 定點數,有p為數字(不包含符號和小數點)組成,小數點后d位 DECIMAL(p,d),DEC(p,d) 同上浮點數: REAL 單精度浮點數,取決于機器精度 DOUBLR PRECISION 雙精度浮點數 FLOAT (n) 可選精度的浮點數日期: DATE 存儲年、月、日的值。YYYY-MM-DD TIME 存儲小時、分、秒的值。HH:MM:SS TIMESTAMP 存儲年、月、日、小時、分、秒的值。 INTERVAL 由一些整數字段組成,代表一段時間,取決于區間的類型。集合: ARRAY 元素的固定長度的有序集合 MULTISET 元素的可變長度的無序集合 XML 存儲 XML 數據以下是引用W3School 的 SQL 快速參考。
| AND / OR | SELECT column_name(s) FROM table_name WHERE condition AND|OR condition |
| ALTER TABLE (add column) | ALTER TABLE table_name ADD column_name datatype |
| ALTER TABLE (drop column) | ALTER TABLE table_name DROP COLUMN column_name |
| AS (alias for column) | SELECT column_name AS column_alias FROM table_name |
| AS (alias for table) | SELECT column_name FROM table_name? AS table_alias |
| BETWEEN | SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 |
| CREATE DATABASE | CREATE DATABASE database_name |
| CREATE INDEX | CREATE INDEX index_name ON table_name (column_name) |
| CREATE TABLE | CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, ....... ) |
| CREATE UNIQUE INDEX | CREATE UNIQUE INDEX index_name ON table_name (column_name) |
| CREATE VIEW | CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition |
| DELETE FROM | DELETE FROM table_name (Note: Deletes the entire table!!) or DELETE FROM table_name |
| DROP DATABASE | DROP DATABASE database_name |
| DROP INDEX | DROP INDEX table_name.index_name |
| DROP TABLE | DROP TABLE table_name |
| GROUP BY | SELECT column_name1,SUM(column_name2) FROM table_name GROUP BY column_name1 |
| HAVING | SELECT column_name1,SUM(column_name2) FROM table_name GROUP BY column_name1 HAVING SUM(column_name2) condition value |
| IN | SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,..) |
| INSERT INTO | INSERT INTO table_name VALUES (value1, value2,....) or INSERT INTO table_name |
| LIKE | SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern |
| ORDER BY | SELECT column_name(s) FROM table_name ORDER BY column_name [ASC|DESC] |
| SELECT | SELECT column_name(s) FROM table_name |
| SELECT * | SELECT * FROM table_name |
| SELECT DISTINCT | SELECT DISTINCT column_name(s) FROM table_name |
| SELECT INTO (used to create backup copies of tables) | SELECT * INTO new_table_name FROM original_table_name or SELECT column_name(s) |
| TRUNCATE TABLE (deletes only the data inside the table) | TRUNCATE TABLE table_name |
| UPDATE | UPDATE table_name SET column_name=new_value [, column_name=new_value] WHERE column_name=some_value |
| WHERE | SELECT column_name(s) FROM table_name WHERE condition |
搜索
如果綁定了指定數據庫,可以直接用表名稱。
如果有多個數據庫情況下,應該用數據庫名.表名稱,如學生課程管理系統.學生信息,學生課程管理系統是數據庫名,學生信息是表名稱。
搜索全部
select * from 表名稱搜索指定屬性名的信息
select 屬性名(列名稱) from 表名稱搜索滿足條件表達式的所有數據
select * from 表名稱 where 條件表達式搜索滿足條件的唯一的指定屬性
select DISTINCT 屬性名(列名稱) from 表名稱 where 條件表達式條件表達式WHERE
| = | 等于 |
| <> | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN | 在某個范圍內 |
| LIKE | 搜索某種模式 |
SQL 使用單引號來環繞文本值(大部分數據庫系統也接受雙引號)。如果是數值不用引號。
AND 和 OR 運算符
AND 和 OR 可在 WHERE 子語句中把兩個或多個條件結合起來。
用AND連接的條件表達式須全部滿足才會輸出,OR連接的表達式任意一個滿足都會有輸出。
用AND連接相當于多個條件合成一個條件,要么滿足輸出,要么不滿足輸出空。
用OR連接相當于多條指令執行后把各條語句的結果合并起來。
ORDER BY 語句用于根據指定的列對結果集進行排序
ORDER BY 語句默認按照升序ASC對記錄進行排序,ASC一般不寫,語句中同時出現升序和降序要求升序寫ASC,降序寫DESC。
如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。
搜索滿足條件的唯一的指定屬性并按升序輸出
select DISTINCT 屬性名(列名稱) from 表名稱 where 條件表達式 ORDER BY 屬性名(列名稱)搜索滿足條件的唯一的指定屬性并按降序輸出
select DISTINCT 屬性名(列名稱) from 表名稱 where 條件表達式 ORDER BY 屬性名(列名稱) DESC搜索滿足條件的指定屬性并按升序輸出(如果有同名屬性,同名的屬性按第二屬性升序輸出)
select 屬性名(列名稱) from 表名稱 where 條件表達式 ORDER BY 屬性名1(列名稱1),屬性名2(列名稱2)搜索滿足條件的指定屬性并按降序輸出(如果有同名屬性,同名的屬性按第二屬性升序輸出)
select 屬性名(列名稱) from 表名稱 where 條件表達式 ORDER BY 屬性名1(列名稱1)DESC,屬性名2(列名稱2)ASCGROUP BY
有些情況下比如訂單表中要統計消費最多的用戶和他的總花費金額。
當我們使用SUM()時必須按照名字進行分組,不然就會出現把訂單金額全加起來,而且每人都是金額總和的情況。
GROUP BY可以按照給定的列名分組進行聚合操作
HAVING
聚合函數不能在where中使用,所以增加了having
GROUP BY 語句用于結合聚合函數,根據一個或多個列對結果集進行分組。 SELECT 列名, 聚合函數(列名) FROM 表名 WHERE 條件表達式 GROUP BY 列名 HAVING 聚合函數(列名) 操作符 值INSERT插入
對表插入
INSERT INTO 表名稱 VALUES (值1, 值2,....)對表的指定列插入
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)UPDATE 修改
對表修改
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值DELETE刪除
刪除行
DELETE FROM 表名稱 WHERE 列名稱 = 值刪除所有行
DELETE FROM 表名稱 或 DELETE * FROM 表名稱TOP
選取最上方指定條數
SELECT TOP 條數 * FROM 表名選取最上方百分之xx的數據
SELECT TOP xx PERCENT * FROM 表名LIKE 匹配搜索
SELECT 列名 FROM 表明 WHERE 列名 LIKE xxx 'A%' A開頭的值 '%A' A結尾的值 '%A%' 包含A的值 NOT LIKE 'A%' 不包含A的值 '_ABC' 第一個字符后是ABC的值 'A_B_C' 第一個字符是A,第三個字符是B,第五個字符是C的值 '[ABC]%' 第一個字符是ABC中任意一個(且只有一個)的值,如A你,B我,C他通配符
| % | 代表零個或多個字符 |
| _ | 僅替代一個字符 |
| [charlist] | 字符列中的任何單一字符(有且只有其中的一個) |
| [^charlist] 或者 [!charlist] | 不在字符列中的任何單一字符 |
IN 規定多個值
SELECT 列名 FROM 表名 WHERE 列名 IN (value1,value2,...)BETWEEN AND查找介于兩個值之間的數據
SELECT 列名 FROM 表名 WHERE 列名 BETWEEN A AND BAlias/as 指定別名
列名指定別名
SELECT 列名 as 別名 FROM 表名 WHERE 列名 BETWEEN A AND B表名指定別名
SELECT 列名 FROM 表名 as 別名 WHERE 列名 BETWEEN A AND B多表聯動查詢
直接比對
SELECT 表1.列名 ,表2.列名 FROM 表1,表2 WHERE 表1.列a = 表2.列bjoin操作
SELECT 表1.列名 ,表2.列名 FROM 表1 INNER JOIN 表2 ON 表1.列a = 表2.列bJOIN類型
INNER JOIN(內連接):在表中存在至少一個匹配時,返回行。JOIN: 如果表中有至少一個匹配,則返回行INNER JOIN 與 JOIN 是相同的。LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行從左表返回所有的行的意思是在匹配完正確的結果后,如果左表中還有一些沒有匹配的數據,也會將這些數據輸出。比如要選擇左表.姓,左表.名,右表.性別如果條件語句沒有配置成功,左表中剩下的那些依舊要輸出(會按序輸出在正確結果的下方),并且性別為空(因為沒有匹配成功,性別是右表的屬性)RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行從右表返回所有的行和LEFT JOIN相反FULL JOIN: 只要其中一個表中存在匹配,就返回行FULL JOIN就是在正確的結果基礎上,把左表和右表( LEFT JOIN和RIGHT JOIN的結果都放在正確結果下方)UNION合并多個 SELECT 語句的結果集
UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。
SELECT 列1 FROM 表1 UNION SELECT 列2 FROM 表2UNION 操作符選取不同的值,即默認具有DISTINCT的效果。UNION ALL允許重復。
SELECT INTO 從一個表中選取數據,然后把數據插入另一個表中
SELECT INTO 語句常用于創建表的備份復件或者用于對記錄進行存檔。
SELECT * INTO 表的備份 FROM 原始表有選擇的備份
SELECT 列名 INTO 備份表 FROM 表 WHERE 條件表達式總結
以上是生活随笔為你收集整理的SQL语句快速回忆——SQL基础知识点汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斐波那契回调线怎么画_Lionheart
- 下一篇: 农行笔试,直接寄了,经验总结