<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
對MySQL資料庫的查詢,除了基本的查詢外,有時候需要對查詢的結構集進行處理。例如只取10條資料,對查詢結果進行排序或分組等等
實用select語句可以講需要的資料從mMySQL資料庫中查詢出來,如果對插敘的結果進行排序,可以實用order by語句來對語句實現排序,並最終講排序的結果返回給使用者,這個語句的排序不光可以針對某一個 欄位,也可以針對多個欄位
語法:
select 欄位1,欄位2... from 表名 order by 欄位1,欄位2... asc #查詢結果以升序方式顯示,asc可以省略 select 欄位1,欄位2... from 表名 order by 欄位1,欄位2,... desc #查詢結果以降序方式顯示
1、ASC是按照升序進行排序,是預設的排序方式,即ASC可以省略。
2、select語句中如果沒有制定具體的排序方式,即預設按ASC方式進行排序
3、DESC是按照降序方式進行排列,當然order by前面也可以實用where子句對查詢結果進一步過濾。
select name,power from name order by power;
select name,power from name order by power desc;
select name,power,phone from name where phone=1234566777 order by power;
ORDER BY語句也可以使用多個欄位來進行排序,當排序的第一個欄位相同的記錄有多條的情況下,這些多條的記錄再按照第二個欄位進行排序,ORDER BY後面跟多個欄位時,欄位之間使用英文逗號隔開,優先順序是按先後順序來定,但是order by之後的第一個引數只有再出現相同值時,第二個欄位才有意義。
select name,power,phone from name order by phone,power desc;
在大型資料庫中,有時查詢資料需要資料符合某些特定條件
AND/OR且/或和shell指令碼中一樣的使用方法
mysql> select name,address,power from name where power>66 and power<999; select name,address,power from name where power>66 or power<999;
select distinct 欄位 from 表名﹔ distinct 必須放在最開頭 distinct 只能使用需要去重的欄位進行操作 distinct 去重多個欄位時,含義是:幾個欄位同時重複時才能被過濾,會預設按左邊第一個欄位為依據。
通過SQL查詢出來的結果,還可以對其進行分組,使用GROUP BY語句來實現,GROUP BY通常都是結合聚合函數一起使用的,常用的聚合函數包括:計數(COUNT)、求和(SUM)、求平均數(AVG)、最大值(MAX)、最小值(MIN),GROUP BY分組的時候可以按一個或多個欄位對結果進行分組處理
1、對group by後面的欄位的查詢結果進行彙總分組,通常是結合聚合函數一起使用的
2、group by有一個原則,就是select後面的所有列中,沒有使用聚合函數的列必須出現在group by的後面
select 欄位,聚合函數 from 表名 (where 欄位名(匹配) 數值) group by 欄位名;
limit限制輸出的結果記錄
在使用MySQL select語句進行查詢時,結果集返回的是所有匹配的記錄(行)。有時候僅需要返回第一行或者前幾行,這時候就需要limit子句
語法格式: select 欄位 from 表名 limit [offset,] number limit 的第一個引數是位置偏移量(可選引數),是設定 mysql 從哪一行開始 如果不設定第一個引數,將會從表中的第一條記錄開始顯示。 第一條偏移量是0,第二條為1 offset 為索引下標 number 為索引下標後的幾位
在mysql查詢時,當表的名字比較長或者表內某些欄位比較長時,為了方便書寫或者多次使用相同的表,可以給欄位列或表設定別名,方便操作,增強可讀性
列的別名 select 欄位 as 欄位別名 表名
表的別名 select 別名.欄位 from 表名 as 別名
as 可以省略
使用場景:
對複雜的表進行查詢時,別名可以縮短查詢語句的長度
奪標相連查詢的時候(通俗易懂,減短sql語句)
在為表設定別名時,要保證別名不能與資料庫中的其他表的名稱衝突
列的別名在結果中有顯示的,而表的別名在結果中沒有顯示,只在執行查詢時使用
查詢表的記錄數量,以別名顯示
利用as,將查詢的資料匯入另一個表內
create table test2 as select * from name; select * from test2; select * from name;
這裡as起到的作用
1、建立了一個新表,並定義表結構,插入表資料(與school表相同)
2、但是約束沒有被完全複製過來,但是如果原表設定了主鍵,那麼附表的:default欄位會預設設定一個0
1、萬用字元主要用於替換字串中的部分字元,通過部分字元的匹配將相關結果查詢出來
2、通常萬用字元都是跟LIKE一起使用的,並協同WHERE
3、子句共同來完成查詢任務,常用的萬用字元有兩個,分別為
%:百分號表示零個、一個或多個字元
_:下劃線表示單個字元
1、自查詢也被稱作內查詢或者巢狀查詢,是指在一個查詢語句裡面還巢狀著另一個查詢語句
2、子查詢語句是先於主查詢進行下一步的查詢過濾
3、在自查詢中可以與主語句查詢相同的表,也可以是不同的表‘
子語句可以與主語句所查詢的表相同,也可以是不同表
語法格式
select 欄位1,欄位2 from 表名1 where 欄位 in (select 欄位 from 表名 where 條件);
主語句:select 欄位1,欄位2 from 表名1 where 欄位
in:將主表和子表關聯/連線的語法
子語句(集合):select 欄位 from 表名 where 條件
select name,address from test2 where id in (select id from test2 where power>0);
select name,power from test2 where id in (select id from test1 where power<100);
select name,power from test2 where id not in (select id from test1 where power<100);
子查詢還可以用在insert語句中,子查詢的結果集可以通過insert語句插入到其它表中
create table test3 like test2; desc test3; insert into test3 select * from test2 where id in (select id from test2 where power<100);
update語句也可以使用子查詢,update內的子查詢,在set更新內容時,可以是單獨的一列,也可以是多列
update test2 set power=555 where id in (select id from test3 where power<0);
selete也使用與子查詢
delete from test2 where id in (select id from test3 where power<50);
exists這個關鍵字在子查詢時,主要用於判斷子查詢的結果集是否為空,如果不為空,則返回ture,反之則返回false
注:在使用exists時,當子查詢有結果時,不關心子查詢的內容,執行主查詢操作,當子查詢沒有結果時,則不執行主查詢操作
檢視是一張虛擬表,這張虛擬表中不包含真實資料,只是做了真實資料的對映
功能:
1、簡化查詢結果集、靈活查詢,可以針對不同使用者呈現不同結果集,相對有更高的安全性
2、本質而言,檢視是一種select(結果集的呈現)
注意:檢視適合於多表瀏覽時使用,不適合增,刪,改
#建立檢視 create view 檢視表名 sa select * from 表名 where 條件; #檢視檢視 select * from 檢視表名 #檢視表狀態 show table statusG #檢視檢視結構 desc 檢視表名
當資料傳送變化時,若資料與之前建立檢視表時的關聯條件不一致時,檢視表的資料將會傳送改變
update name_view set power=300 where id=4; select * from name_view; select * from name;
update name_view set power=100 where id=2; select * from name_view; select * from name;
在SQL語句使用過程中,接觸會碰到NULL這幾個字元。通常使用NULL來表示缺失的值,也就是在表中該欄位是沒有值的。如果在建立表時,限制某些欄位不為空,則可以使用NOT NULL關鍵字,不使用則預設可以為空。在向表內插入記錄或者更新記錄或者更新記錄時,如果該欄位沒有NOT NULL並且沒有值,這時候新記錄的該欄位將被儲存為NULL。需要注意的是,NULL值與數位0或者空白(spaces)的欄位是不同的,值為NULL的欄位是沒有值的。在SQL語句中,使用IS NULL可以判斷表內的某個欄位是不是NULL值,相反的用IS NOT NULL可以判斷不是NULL值。
注:NULL是佔用記憶體空間的,而空值則不佔用記憶體空間
alter table name add card char(10); select * from name; select count(card) from name;
update name set card=' ' where id=3; select * from name; select count(card) from name;
select * from name where card is null; select * from name where card is not null;
MySQL 的連線查詢,通常都是將來自兩個或多個表的記錄行結合起來,基於這些表之間的 共同欄位,進行資料的拼接。首先,要確定一個主表作為結果集,然後將其他表的行有選擇 性的連線到選定的主表結果集上。
使用較多的連線查詢包括:內連線、左連線和右連線
內連查詢:通過inner join的方式將兩張表指定的相同欄位的記錄行輸出出來
select 表名1.欄位1,表名1.欄位2 from 表名1 inner join 表名2 on 表名1.欄位 = 表名2.欄位; select name.id,name.name,name.address from name inner join test2 on name.id=test2.id;
select * from name left join test2 on name.id=test2.id;
在MySQL中,檢視表與索引一樣,都是MySQL資料庫的一種優化,其可以加快查詢速度,但需要注意的時,檢視表一般只作查詢使用,不對其進行增、刪、改;檢視表並不佔用實際記憶體
在表中的NULL值與空值,NULL值是佔用記憶體空間,但是不計入資料統計,而空值是不佔記憶體空間,但是算資料,計入資料統計的。
內連線inner join,顯示的資料為左右表都同時滿足條件。
左連線 left join ,是以左表為基礎顯示,右表需滿足條件。
右連線right join ,是以右表為基礎顯示,左表需滿足條件。
到此這篇關於MySQL進階語句的文章就介紹到這了,更多相關MySQL進階語句內容請搜尋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