<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1946 年,世界上第一臺電腦誕生,如今,藉由這臺電腦發展起來的網際網路已經自成江湖。在這幾十年裡,無數的技術、產業在這片江湖裡沉浮,有的方興未艾,有的已經幾幕興衰。但在這片浩蕩的波動裡,有一門技術從未消失,甚至“老當益壯”,那就是 SQL。
不論是前端工程師,還是後端演演算法工程師,都一定會和資料打交道,都需要了解如何又快又準確地提取自己想要的資料。更別提資料分析師了,他們的工作就是和資料打交道,整理不同的報告,以便指導業務決策。
SQL(Structured Query Language,結構化查詢語言)是使用關係模型的資料庫應用語言,與資料直接打交道,由IBM上世紀70年代開發出來。後由美國國家標準局(ANSI)開始著手製定SQL標準,先後有SQL-86,SQL-89,SQL-92,SQL-99等標準。
不同的資料庫生產廠商都支援SQL語句,但都有特有內容。
自從 SQL 加入了 TIOBE 程式語言排行榜,就一直保持在 Top 10。
SQL語言在功能上主要分為如下3大類:
DDL(Data Definition Languages、資料定義語言) ,這些語句定義了不同的資料庫、表、檢視、索引等資料庫物件,還可以用來建立、刪除、修改資料庫和資料表的結構。
CREATE
、DROP
、ALTER
等。DML(Data Manipulation Language、資料操作語言) ,用於新增、刪除、更新和查詢資料庫記錄,並檢查資料完整性。
INSERT
、DELETE
、UPDATE
、SELECT
等。DCL(Data Control Language、資料控制語言) ,用於定義資料庫、表、欄位、使用者的存取許可權和安全級別。
GRANT
、REVOKE
、COMMIT
、ROLLBACK
、SAVEPOINT
等。因為查詢語句使用的非常的頻繁,所以很多人把查詢語句單拎出來一類:DQL(資料查詢語言)。
還有單獨將
COMMIT
、ROLLBACK
取出來稱為TCL (Transaction Control Language,事務控制語言)。
SQL 可以寫在一行或者多行。為了提高可讀性,各子句分行寫,必要時使用縮排
每條命令以 ; 或 g 或 G 結束
關鍵字不能被縮寫也不能分行
關於標點符號
MySQL 在 Windows 環境下是大小寫不敏感的
MySQL 在 Linux 環境下是大小寫敏感的
推薦採用統一的書寫規範:
可以使用如下格式的註釋結構
單行註釋:#註釋文字(MySQL特有的方式)
單行註釋:-- 註釋文字(--後面必須包含一個空格。)
多行註釋:/* 註釋文字 */
舉例:
#以下兩句是一樣的,不區分大小寫 show databases; SHOW DATABASES; #建立表格 #create table student info(...); #表名錯誤,因為表名有空格 create table student_info(...); #其中order使用``飄號,因為order和系統關鍵字或系統函數名等預定義識別符號重名了 CREATE TABLE `order`( id INT, lname VARCHAR(20) ); select id as "編號", `name` as "姓名" from t_stu; #起別名時,as都可以省略 select id as 編號, `name` as 姓名 from t_stu; #如果欄位別名中沒有空格,那麼可以省略"" select id as 編 號, `name` as 姓 名 from t_stu; #錯誤,如果欄位別名中有空格,那麼不能省略""
在命令列使用者端登入mysql,使用source指令匯入
mysql> source d:mysqldb.sql
mysql> desc employees; +----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+-------------+------+-----+---------+-------+ | employee_id | int(6) | NO | PRI | 0 | | | first_name | varchar(20) | YES | | NULL | | | last_name | varchar(25) | NO | | NULL | | | email | varchar(25) | NO | UNI | NULL | | | phone_number | varchar(20) | YES | | NULL | | | hire_date | date | NO | | NULL | | | job_id | varchar(10) | NO | MUL | NULL | | | salary | double(8,2) | YES | | NULL | | | commission_pct | double(2,2) | YES | | NULL | | | manager_id | int(6) | YES | MUL | NULL | | | department_id | int(4) | YES | MUL | NULL | | +----------------+-------------+------+-----+---------+-------+ 11 rows in set (0.00 sec)
SELECT 1; #沒有任何子句 SELECT 9/2; #沒有任何子句
SELECT 標識選擇哪些列 FROM 標識從哪個表中選擇
SELECT * FROM departments;
一般情況下,除非需要使用表中所有的欄位資料,最好不要使用萬用字元‘*’。使用萬用字元雖然可以節省輸入查詢語句的時間,但是獲取不需要的列資料通常會降低查詢和所使用的應用程式的效率。萬用字元的優勢是,當不知道所需要的列的名稱時,可以通過它獲取它們。
在生產環境下,不推薦你直接使用
SELECT *
進行查詢。
SELECT department_id, location_id FROM departments;
MySQL中的SQL語句是不區分大小寫的,因此SELECT和select的作用是相同的,但是,許多開發人員習慣將關鍵字大寫、資料列和表名小寫,讀者也應該養成一個良好的程式設計習慣,這樣寫出來的程式碼更容易閱讀和維護。
重新命名一個列
便於計算
緊跟列名,也可以在列名和別名之間加入關鍵字AS,別名使用雙引號,以便在別名中包含空格或特殊的字元並區分大小寫。
AS 可以省略
建議別名簡短,見名知意
舉例
SELECT last_name AS name, commission_pct comm FROM employees;
SELECT last_name "Name", salary*12 "Annual Salary" FROM employees;
預設情況下,查詢會返回全部行,包括重複行。
SELECT department_id FROM employees;
在SELECT語句中使用關鍵字DISTINCT去除重複行
SELECT DISTINCT department_id FROM employees;
針對於:
SELECT DISTINCT department_id,salary FROM employees;
這裡有兩點需要注意:
SELECT salary, DISTINCT department_id FROM employees
會報錯。DISTINCT department_id
即可,後面不需要再加其他的列名了。SELECT employee_id,salary,commission_pct, 12 * salary * (1 + commission_pct) "annual_sal" FROM employees;
這裡你一定要注意,在 MySQL 裡面, 空值不等於空字串。一個空字串的長度是 0,而一個空值的長度是空。而且,在 MySQL 裡面,空值是佔用空間的。
mysql> SELECT * FROM ORDER; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER' at line 1
mysql> SELECT * FROM `ORDER`; +----------+------------+ | order_id | order_name | +----------+------------+ | 1 | shkstart | | 2 | tomcat | | 3 | dubbo | +----------+------------+ 3 rows in set (0.00 sec) mysql> SELECT * FROM `order`; +----------+------------+ | order_id | order_name | +----------+------------+ | 1 | shkstart | | 2 | tomcat | | 3 | dubbo | +----------+------------+ 3 rows in set (0.00 sec)
我們需要保證表中的欄位、表名等沒有和保留字、資料庫系統或常用方法衝突。如果真的相同,請在SQL語句中使用一對``(著重號)引起來。
SELECT 查詢還可以對常數進行查詢。對的,就是在 SELECT 查詢結果中增加一列固定的常數列。這列的取值是我們指定的,而不是從資料表中動態取出的。
你可能會問為什麼我們還要對常數進行查詢呢?
SQL 中的 SELECT 語法的確提供了這個功能,一般來說我們只從一個表中查詢資料,通常不需要增加一個固定的常數列,但如果我們想整合不同的資料來源,用常數列作為這個表的標記,就需要查詢常數。
比如說,我們想對 employees 資料表中的員工姓名進行查詢,同時增加一列欄位corporation
,這個欄位固定值為“abc”,可以這樣寫: SELECT 'abc' as corporation, last_name FROM employees;
到此這篇關於MySQL的select語句的文章就介紹到這了,更多相關MySQL select語句內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45