SQL 語言
SQL(Structured Query Language,結構化查詢語言)是使用關系模型的數據庫應用語言, 與數據直接打交道 。
SQL 有兩個重要的標準,分別是 SQL92 和 SQL99,它們分別代表了 92 年和 99 年頒布的 SQL 標準,我們今天使用的 SQL 語言依然遵循這些標準。
不同的數據庫生產廠商都支持SQL語句,但都有特有內容。
SQL 分類
DDL(Data Definition Languages、數據定義語言),這些語句定義了不同的數據庫、表、視圖、索引等數據庫對象,還可以用來創(chuàng)建、刪除、修改數據庫和數據表的結構。
DML(Data Manipulation Language、數據操作語言),用于添加、刪除、更新和查詢數據庫記錄,并檢查數據完整性。主要的語句關鍵字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT 等。SELECT是SQL語言的基礎,最為重要。
DCL(Data Control Language、數據控制語言),用于定義數據庫、表、字段、用戶的訪問權限和安全級別。
主要的語句關鍵字包括 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等。
因為查詢語句使用的非常的頻繁,所以很多人把查詢語句單拎出來一類:DQL(數據查詢語言)。還有單獨將 COMMIT 、 ROLLBACK 取出來稱為TCL (Transaction Control Language,事務控制語言)。
規(guī)則與規(guī)范
每條命令以 ;
或 \g
或 \G
結束;
關鍵字不能被縮寫也不能分行;
關于標點符號:
必須保證所有的()
、單引號、雙引號是成對結束的;
必須使用英文狀態(tài)下的半角輸入方式;
字符串型和日期時間類型的數據可以使用單引號(' '
)表示;
列的別名,盡量使用雙引號(" "
),而且不建議省略as;
大小寫
MySQL 在 Windows 環(huán)境下是大小寫不敏感的
MySQL 在 Linux 環(huán)境下是大小寫敏感的:
數據庫名、表名、表的別名、變量名是嚴格區(qū)分大小寫的
關鍵字、函數名、列名(或字段名)、列的別名(字段的別名) 是忽略大小寫的。
盡量采用統一的書寫規(guī)范:
數據庫名、表名、表別名、字段名、字段別名等都小寫
SQL 關鍵字、函數名、綁定變量等都大寫
注釋
單行注釋:#注釋文字(MySQL特有的方式)
單行注釋:-- 注釋文字(–后面必須包含一個空格。)
多行注釋:/* 注釋文字 */
命名規(guī)則
數據庫、表名不得超過30個字符,變量名限制為29個;
必須只能包含 A–Z, a–z, 0–9, _
共63個字符;
數據庫名、表名、字段名等對象名中間不要包含空格
同一個MySQL軟件中,數據庫不能同名;同一個庫中,表不能重名;同一個表中,字段不能重名;
必須保證你的字段沒有和保留字、數據庫系統或常用方法沖突。如果堅持使用,在SQL語句中使用(著重號)引起來
保持字段名和類型的一致性,在命名字段并為其指定數據類型的時候一定要保證一致性。假如數據類型在一個表里是整數,那在另一個表里可就別變成字符型了。
數據導入指令
1.在命令行客戶端登錄mysql
,使用source
指令導入:
source 文件的全部路徑名
mysql> source d:\mysqldb.sql
2.使用圖形化界面的工具導入數據
SQLyog 中選擇“工具” --“執(zhí)行sql腳本”–選中xxx.sql
即可。
基本的SELECT語句
SELECT
標識選擇哪些列: SELECT
;
標識從哪個表中選擇: FROM
;
選擇全部列:
SELECT *
FROM departments;
一般情況下,除非需要使用表中所有的字段數據,最好不要使用通配符‘*’。使用通配符雖然可以節(jié)省輸入查詢語句的時間,但是獲取不需要的列數據通常會降低查詢和所使用的應用程序的效率。通配符的優(yōu)勢是,當不知道所需要的列的名稱時,可以通過它獲取它們。
選擇特定的列:
SELECT department_id, location_id
FROM departments;
SELECT
和select
的作用是相同的。
列的別名
緊跟列名,也可以在列名和別名之間加入關鍵字AS
,別名可以使用雙引號,以便在別名中包含空格或特殊的字符并區(qū)分大小寫。AS
可以省略
SELECT employee_id AS emp_id,last_name AS lname,department_id AS "id"
FROM employees;
SELECT employee_id emp_id,last_name lname,department_id id
FROM employees;
去除重復行
在SELECT
語句中使用關鍵字DISTINCT
去除重復行
SELECT DISTINCT department_id
FROM employees;
針對于:
SELECT DISTINCT department_id,salary
FROM employees;
DISTINCT
其實是對后面所有列名的組合進行去重,通常只需要寫一列就可以了,兩列沒有實際意義。
空值參與運算
所有運算符或列值遇到null
值,運算的結果都為null
null
不等于 0
在 MySQL 里面, 空值不等于空字符串。一個空字符串的長度是 0,而一個空值的長度是空。而且,在 MySQL 里面,空值是占用空間的。
非要參與運算,可以使用 IFNULL
函數。
著重號
需要保證表中的字段、表名等沒有和保留字、數據庫系統或常用方法沖突。如果真的相同,請在SQL語句中使用一對''
(著重號)引起來
# 錯誤的
mysql> SELECT * FROM ORDER;
# 正確的
mysql> SELECT * FROM `ORDER`;
查詢常數
SELECT 'FDS' AS corporation, last_name FROM employees;
顯示表結構
使用DESCRIBE
或 DESC
命令,表示表結構
DESCRIBE employees;
或
DESC employees;
Field: 表示字段名稱。
Type: 表示字段類型,這里 barcode、goodsname 是文本型的,price 是整數類型的。
Null: 表示該列是否可以存儲NULL值。
Key: 表示該列是否已編制索引。PRI表示該列是表主鍵的一部分;UNI表示該列是UNIQUE索引的一部分;MUL表示在列中某個給定值允許出現多次。
Default: 表示該列是否有默認值,如果有,那么值是多少。
Extra: 表示可以獲取的與給定列有關的附加信息,例如AUTO_INCREMENT等
過濾數據
使用WHERE
子句,將不滿足條件的行過濾掉WHERE
子句緊隨 FROM
子句
SELECT 字段1,字段2
FROM 表名
WHERE 過濾條件
SELECT *
FROM employees
WHERE department_id = 90;
文章來源:http://www.zghlxwxcb.cn/news/detail-717916.html
數據庫學習視頻:
【MySQL數據庫入門到大牛,mysql安裝到優(yōu)化,百科全書級,全網天花板】文章來源地址http://www.zghlxwxcb.cn/news/detail-717916.html
到了這里,關于MySQL(3):基本的 SELECT 語句的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!