SQL的基本語法


1、SQL語句可以單行或者多行書寫,以分號結尾。

2、MySQL數據庫的SQL語句不區分大小寫,關鍵字建議使用大寫。

3、注釋:

1) 單行注釋:-- 注釋內容 或 #注釋內容(MySQL獨有)

2) 多杭注釋:/* 注釋內容*/

 

 

SQL分類:

DDL(Data Definition Language)數據定義語言,用來定義數據庫對象:數據庫、表、列等;

DML(Data Manipulation Language)數據操作語言,用來對數據庫中表的數據進行增刪改;

DQL(Data Query Language)數據查詢語言,用來查詢數據庫中表的記錄(數據);

DCL(Data Control Language)數據控制語言,用來定義數據庫的訪問權限和安全等級、創建用戶;

DDL -- 操作數據庫

1、查詢

查看數據庫:SHOW DATABASES;

2、創建

創建數據庫:CREATE DATABASE 數據庫名;

創建數據庫(判斷,如果不存在則創建):CARETE DATABASE IF NOT EXISTS 數據庫名;

3、刪除

刪除數據庫:DROP DATABASE 數據庫名;

刪除數據庫(判斷,如果存在則刪除):DROP DATABASE IF EXISTS 數據庫名;

4、使用數據庫

使用數據庫:USE 數據庫名;

查看當前使用的數據庫:SELECT DATABASE();

DDL -- 操作表

創建(Create/ 查詢(Retrieve/ 修改(Update/ 刪除(Delete

查詢表:

查詢當前數據庫中的所有表:SHOW TABLES;

查詢表結構:DESC 表名稱;

創建表:

CREATE TABLE 表名稱(

字段1 數據類型1...

字段n 數據類型n

);

 

 

數值類型

MySQL 支持所有標准 SQL 數值數據類型。

這些類型包括嚴格數值數據類型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似數值數據類型(FLOAT、REAL 和 DOUBLE PRECISION)。

關鍵字INT是INTEGER的同義詞,關鍵字DEC是DECIMAL的同義詞。

BIT數據類型保存位字段值,並且支持 MyISAM、MEMORY、InnoDB 和 BDB表。

作為 SQL 標准的擴展,MySQL 也支持整數類型 TINYINT、MEDIUMINT 和 BIGINT。下面的表顯示了需要的每個整數類型的存儲和范圍。

日期和時間類型

表示時間值的日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每個時間類型有一個有效值范圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。

TIMESTAMP類型有專有的自動更新特性,將在后面描述。

 

 

字符串類型

字符串類型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。該節描述了這些類型如何工作以及如何在查詢中使用這些類型。

注意char(n) 和 varchar(n) 中括號中 n 代表字符的個數,並不代表字節個數,比如 CHAR(30) 就可以存儲 30 個字符。

CHAR 和 VARCHAR 類型類似,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同。在存儲或檢索過程中不進行大小寫轉換。

BINARY 和 VARBINARY 類似於 CHAR 和 VARCHAR,不同的是它們包含二進制字符串而不要非二進制字符串。也就是說,它們包含字節字符串而不是字符字符串。這說明它們沒有字符集,並且排序和比較基於列值字節的數值值。

BLOB 是一個二進制大對象,可以容納可變數量的數據。有 4 種 BLOB 類型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它們區別在於可容納存儲范圍不同。

4 種 TEXT 類型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。對應的這 4 種 BLOB 類型,可存儲的最大長度不同,可根據實際情況選擇。

刪除表

DROP TABLE 表名;

DROP TABLE IF EXISTS 表名;(刪除表時先判斷表是否存在)

修改表

1、修改表名:ALTER TABLE 表名 RENAME TO 新表名;

2、添加一列:ALTER TABLE 表名 ADD列名 數據類型;

3、修改數據類型:ALTER TABLE 表名 MODIFY 列名 新數據類型;

4、修改列名和數據類型:ALTER 表名 CHANGE 列名 新列名 數據類型;

5、刪除列:ALTER TABLE 表名 DROP 列名;

 

DML -- 添加數據 (INSERT INTO

1、給指定的列添加數據:

(1) INSERT INTO 表名稱(列名1,列名2, ...) values(1, 2, ...);

2、給全部列添加數據:

(1) INSERT INTO 表名稱 VALUES(1, 2, ...);

3、批量添加數據:

(1) INSERT INTO 表名稱(列名1,列名2, ...) VALUES(1, 2, ...), (1, 2, ...)...;

(2) INSERT INTO 表名稱 VALUES(1, 2, ...), (1, 2, ...);

 

DML -- 修改數據(UPDATE...SET

1、修改表數據:

(1) UPDATE 表名 SET 列名1=1, 列名2=2, ...[WHERE 條件];

注意:修改語句中如果不加條件,則將所有數據都修改!

DML -- 刪除數據(DELETE

1、刪除表中的數據:

(1) DELETE FROM 表名 [WHERE 條件];

注意:刪除語句中不加條件,則將表中所有的數據刪除!

DQL -- 查詢數據(SELECT

語法:

SELECT 字段列表 FROM 表名列表 WHERE 條件列表 GROUP BY 分組列表 HAVING 分組后條件 ORDER BY 排序字段 LIMIT 分頁限定;

 

1、查詢單表中所有數據:

(1) SELECT 字段名 FROM 表名稱;

(2) SELECT DISTINCT 字段名 FROM 表名稱;(去重)

(3) SELECT 字段名 FROM 表名稱;

 

2、單表條件查詢:

 

 

1、查詢單表中的總記錄數:

(1) SELECT COUNT(*) FROM 表名稱;

(2) SELECT COUNT(*) FROM 表名稱 WHERE 條件[AND/OR ...];(多條件)

 

2、單表排序查詢:

(1) SELECT 字段列表 FROM user ORDER BY 排序字段;

(2) 按照數學成績降序排列,如果數學成績形同時,則按英語成績升序排列

SELECT * FROM stu ORDER BY math DESC, english ASC;

注意:多字段排序時中間用,”隔開,當前面的條件一樣時才會啟用后面的條件。

 

3、分組查詢:將一列數據作為一個整體,進行縱向計算

語法:SELECT 字段列表 FROM 表名 [WHERE 分組前條件限定] GROUP BY分組字段名 [HAVING 分組后條件過濾];

 

 

 

Wherehaving的區別:

 

① 執行時機不一樣:where是分組之前進行限定,不滿足where條件的則不參與分組,而having是分組之后對結果進行過濾;

 

② 可判定的條件不一樣:where不能對聚合函數進行判定,having可以;

 

注意:

 

① null不參與任何聚合函數的運算;

 

② 分組之后查詢的字段為聚合函數和分組字段,查詢其他字段無意義;

 

③ 執行順序為:where > 聚合函數 > having;

 

 

 

1、單表分頁查詢:

 

分頁的關鍵字為:LIMIT

 

語法:SELECT 字段列表 FROM 表名稱LIMIT 索引開始, 查詢的記錄數;

 

起始索引:從0開始

 

計算公式:起始索引 = (當前頁碼 - 1) * 每頁顯示的條數

 

  

提示

① 分頁查詢limit MySQL數據庫獨有的(方言)

② Oracle分頁查詢使用 rownumber

③ SQL Server分頁查詢使用top

 

1、起別名:

AS: AS 也可以省略

① SELECT u.id, u.`name`, u.gender, u.address, u.`status` FROM user AS u;

② SELECT u.id, u.`name`, u.gender, u.address, u.`status` FROM user u;

③ select name, math as 數學成績, english as 英語成績 FROM stu;

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM