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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL语句(DQL)

發(fā)布時間:2023/12/15 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL语句(DQL) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • DQL準備工作和語法
    • 語法
    • 簡單查詢
    • 條件查詢
    • 排序查詢
    • 聚合查詢
    • 分組查詢
    • 條數(shù)限制查詢

DQL準備工作和語法

準備工作

#創(chuàng)建商品表: create table product( pid int primary key, pname varchar(20), price double, category_id varchar(32) ); INSERT INTO product(pid,pname,price,category_id) VALUES(1,'聯(lián) 想',5000,'c001'); INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海 爾',3000,'c001'); INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷 神',5000,'c001'); INSERT INTO product(pid,pname,price,category_id) VALUES(4,'JACK JONES',800,'c002'); INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真維 斯',200,'c002'); INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公 ?',440,'c002'); INSERT INTO product(pid,pname,price,category_id) VALUES(7,'勁 霸',2000,'c002'); INSERT INTO product(pid,pname,price,category_id) VALUES(8,'?奈 ?',800,'c003'); INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本 草',200,'c003'); INSERT INTO product(pid,pname,price,category_id) VALUES(10,'? 霸',5,'c003'); INSERT INTO product(pid,pname,price,category_id) VALUES(11,'好想你 棗',56,'c004'); INSERT INTO product(pid,pname,price,category_id) VALUES(12,'?飄飄奶 茶',1,'c005'); INSERT INTO product(pid,pname,price,category_id) VALUES(13,'果9',1,NULL);

語法

select [distinct] * | 列名,列名 fromwhere 條件

簡單查詢

-- 查詢所有的商品. SELECT * from product; -- 查詢商品名和商品價格. select pname,price from product; -- 查詢價格,去掉重復(fù)值. select DISTINCT price from product; -- 查詢結(jié)果是表達式(運算查詢):將所有商品的價格+10元進?顯示. select pname,price+10 from product; -- 別名查詢.使?的關(guān)鍵字是as(as可以省略的).列別名 select pname,price+10 as '價格' from product; select pname,price+10 '價格' from product; -- 別名查詢.使?的關(guān)鍵字是as(as可以省略的).表別名 select * from product as p; select * from product p;

條件查詢

比較運算符< <= > >= =<>?于、?于、?于(?于)等于、不等于
BETWEEN…AND…顯示在in列表中的值,例:in(100,200)
LIKE ‘字符’模糊查詢,like語句中,% 代表零個或多個任意字符,_ 代表?個字符, 例如: first_name like ‘_a%’;
IS NULL判斷是否為空
邏輯運?符and多個條件同時成?
or多個條件任?成?
not不成?,例: where not(salary>100);
#查詢商品名稱為“花花公?”的商品所有信息: select * from product where pname='花花公?'; #查詢價格為800商品 select * from product where price=800; #查詢價格不是800的所有商品 select * from product where price<>800; select * from product where price!=800; -- mysql特有的符號 #查詢商品價格?于60元的所有商品信息 select * from product where price>60; #查詢商品價格在200到1000之間所有商品 select * from product where price>=200 and price<=1000; select * from product where price between 200 and 1000; #查詢商品價格是200或800的所有商品 select * from product where price=200 or price=800; select * from product where price in(200,800); # LIKe 中的 %代表匹配任意?度的任意字符; _代表匹配?個任意字符 #查詢商品名稱含有'霸'字的所有商品 select * from product where pname like '%霸%'; #查詢商品名稱以'?'開頭的所有商品 select * from product where pname like '?%'; #查詢商品名稱第?個字為'想'的所有商品 select * from product where pname like '_想%'; #商品沒有分類id的商品 select * from product where category_id is NULL; #查詢有分類id的商品 select * from product where category_id is NOT NULL;

排序查詢

通過order by語句,可以將查詢出的結(jié)果進?排序。暫時放置在select語句的最后。

  • 格式:
SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC; #ASC 升序 (默認), 從?到?排序 #DESC 降序, 從?到?排序 #使?價格排序(降序) select * from product order by price desc; #在價格排序(降序)的基礎(chǔ)上,以分類排序(降序) select * from product order by price desc,category_id desc; #顯示商品的價格(去重復(fù)),并排序(降序) select DISTINCT price from product order by price desc;

聚合查詢

之前我們做的查詢都是橫向查詢,它們都是根據(jù)條件????的進?判斷,?使?聚合函數(shù)查詢是縱向查詢,它是對?列的值進?計算,然后返回?個單?的值;另外聚合函數(shù)會忽略空值。
今天我們學(xué)習(xí)如下五個聚合函數(shù):

  • count:統(tǒng)計指定列不為NULL的記錄?數(shù);
  • sum:計算指定列的數(shù)值和,如果指定列類型不是數(shù)值類型,那么計算結(jié)果為0;
  • max:計算指定列的最?值,如果指定列是字符串類型,那么使?字符串排序運算;
  • min:計算指定列的最?值,如果指定列是字符串類型,那么使?字符串排序運算;
  • avg:計算指定列的平均值,如果指定列類型不是數(shù)值類型,那么計算結(jié)果為0;

練習(xí):

#查詢商品的總條數(shù) select count(*) from product; -- 不推薦 select count(pid) from product; select count(category_id) from product; #查詢價格?于200商品的總條數(shù) select count(*) from product where price>200; #查詢分類為'c001'的所有商品的價格總和 select sum(price) from product where category_id='c001'; #查詢分類為'c002'所有商品的平均價格 select avg(price) from product where category_id='c002'; #查詢商品的最?價格和最?價格 select max(price),min(price) from product;

分組查詢

分組查詢是指使?group by字句對查詢信息進?分組。
格式:SELECT 字段1,字段2… FROM 表名 GROUP BY分組字段 HAVING 分組條件;
分組操作中的having?語句,是?于在分組后對數(shù)據(jù)進?過濾的,作?類似于where條件。

having與where的區(qū)別:

  • having是在分組操作執(zhí)?后, 對分組后的數(shù)據(jù)進?過濾.
    where是在分組操作執(zhí)?前, 對分組前的數(shù)據(jù)只能使?表原始列進?條件過濾
  • having后?可以使? 聚合函數(shù) where后?不可以使? 聚合函數(shù)。
  • 當(dāng)?條SQL語句中, 既有where?有 group by \ having時, 先執(zhí)? where, 再執(zhí)? group by, 最后執(zhí)?having

練習(xí)

#統(tǒng)計各個分類商品的個數(shù) select category_id,count(*) from product group by category_id; #統(tǒng)計各個分類商品的個數(shù),且只顯示個數(shù)?于1的信息 SELECT category_id,count(*) from product GROUP BY category_id HAVING count(*)>1; #統(tǒng)計價格>200元的 各個分類商品的個數(shù),且只顯示個數(shù)?于1的信息 -- select * from product where price>200 group by category_id; -- select category_id,count(*) from product where price>200 group by category_id ; select category_id,count(*) from product where price>200 group by category_id HAVING count(*)>1;

條數(shù)限制查詢

LIMIT是MySQL內(nèi)置函數(shù),其作?是?于限制查詢結(jié)果的條數(shù)。

格式: select * from 表名 limit m,n 其中: m是指記錄開始的index,從0開始,表示第?條記錄 n是指從第m+1條開始,取n條。 例如: select * from tablename limit 2,4 -- 即取出第3條?第6條,4條記錄

應(yīng)?場合:分?

分?查詢格式: SELECT * FROM 表名 LIMIT startRow,pageSize; 例如: select * from products limit 0,5; #第??,每?顯示5條。 select * from products limit 5,5; #第??,每?顯示5條。 select * from products limit 10,5; #第三?,每?顯示5條。 select * from products limit startRow,5; #第curPage?,每?顯示5條, startRow 的值如何計算呢? -- 后臺計算出?碼、?數(shù)(???) -- 分?需要的相關(guān)數(shù)據(jù)結(jié)果分析如下, -- 注意:下?是偽代碼不?于執(zhí)? int curPage = 2; -- 當(dāng)前?數(shù) int pageSize = 5; -- 每?顯示數(shù)量 int startRow = (curPage - 1) * pageSize; -- 當(dāng)前?, 記錄開始的位置(?數(shù))計算 int totalSize = select count(*) from products; -- 記錄總數(shù)量 int totalPage = Math.ceil(totalSize * 1.0 / pageSize); -- 總?數(shù)

總結(jié)

以上是生活随笔為你收集整理的SQL语句(DQL)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。