日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL语句快速回忆——SQL基础知识点汇总

發布時間:2025/3/15 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 數據類型, .... ) 數據類型描述
  • integer(size)
  • int(size)
  • smallint(size)
  • tinyint(size)
僅容納整數。在括號內規定數字的最大位數。
  • decimal(size,d)
  • numeric(size,d)

容納帶有小數的數字。

"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 (當前建表的列名) REFERENCES2(主鍵)

刪除外鍵約束

ALTER TABLE 表名 DROP FOREIGN KEY fk_PerOrders

DML

SELECT - 從數據庫表中獲取數據 UPDATE - 更新數據庫表中的數據 DELETE - 從數據庫表中刪除數據 INSERT INTO - 向數據庫表中插入數據

SQL 常用數據類型匯總

字符串類: CHAR(N),CHARACTER(n) 字符/字符串。固定長度 n。 VARCHAR(n),CHARACTER VARYING(n) 字符/字符串??勺冮L度。最大長度 n。數字類: BINARY(n) 二進制串,固定長度 n。 BOOLEAN 存儲 TRUE 或 FALSE 值 VARBINARY(n) 或BINARY VARYING(n) 二進制串??勺冮L度。最大長度 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 / ORSELECT 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
BETWEENSELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASECREATE DATABASE database_name
CREATE INDEXCREATE INDEX index_name
ON table_name (column_name)
CREATE TABLECREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
.......
)
CREATE UNIQUE INDEXCREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE VIEWCREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
DELETE FROMDELETE FROM table_name
(Note: Deletes the entire table!!)

or

DELETE FROM table_name
WHERE condition

DROP DATABASEDROP DATABASE database_name
DROP INDEXDROP INDEX table_name.index_name
DROP TABLEDROP TABLE table_name
GROUP BYSELECT column_name1,SUM(column_name2)
FROM table_name
GROUP BY column_name1
HAVINGSELECT column_name1,SUM(column_name2)
FROM table_name
GROUP BY column_name1
HAVING SUM(column_name2) condition value
INSELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTOINSERT INTO table_name
VALUES (value1, value2,....)

or

INSERT INTO table_name
(column_name1, column_name2,...)
VALUES (value1, value2,....)

LIKESELECT column_name(s)
FROM table_name
WHERE column_name
LIKE pattern
ORDER BYSELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]
SELECTSELECT column_name(s)
FROM table_name
SELECT *SELECT *
FROM table_name
SELECT DISTINCTSELECT 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)
INTO new_table_name
FROM original_table_name

TRUNCATE TABLE
(deletes only the data inside the table)
TRUNCATE TABLE table_name
UPDATEUPDATE table_name
SET column_name=new_value
[, column_name=new_value]
WHERE column_name=some_value
WHERESELECT 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(列名稱1DESC,屬性名2(列名稱2ASC

GROUP BY

有些情況下比如訂單表中要統計消費最多的用戶和他的總花費金額。
當我們使用SUM()時必須按照名字進行分組,不然就會出現把訂單金額全加起來,而且每人都是金額總和的情況。

GROUP BY可以按照給定的列名分組進行聚合操作

GROUP BY 語句用于結合聚合函數,根據一個或多個列對結果集進行分組。 SELECT 列名, 聚合函數(列名) FROM 表名 WHERE 條件表達式 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 B

Alias/as 指定別名

列名指定別名

SELECT 列名 as 別名 FROM 表名 WHERE 列名 BETWEEN A AND B

表名指定別名

SELECT 列名 FROM 表名 as 別名 WHERE 列名 BETWEEN A AND B

多表聯動查詢

直接比對

SELECT1.列名 ,2.列名 FROM1,2 WHERE1.列a =2.列b

join操作

SELECT1.列名 ,2.列名 FROM1 INNER JOIN2 ON1.列a =2.列b

JOIN類型

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 語句中的列的順序必須相同。

SELECT1 FROM1 UNION SELECT2 FROM2

UNION 操作符選取不同的值,即默認具有DISTINCT的效果。UNION ALL允許重復。

SELECT INTO 從一個表中選取數據,然后把數據插入另一個表中

SELECT INTO 語句常用于創建表的備份復件或者用于對記錄進行存檔。

SELECT * INTO 表的備份 FROM 原始表

有選擇的備份

SELECT 列名 INTO 備份表 FROMWHERE 條件表達式

總結

以上是生活随笔為你收集整理的SQL语句快速回忆——SQL基础知识点汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。