DQL:資料查詢語句(非官方)
DQL:資料查詢語言(非官方)
關鍵詞:select
格式:select ... from 表名 where 條件 group by 分組欄位 having 條件 order by 排序欄位 ase|desc
初始化環境: -- 建立商品表 create table products( pid int primary key auto_increment, pname varchar(20), price double, pnum intView Code, cno int, pdate timestamp ); insert into products values (null,'泰國大榴蓮',98,12,1,null); insert into products values (null,'新疆大棗',38,123,1,null); insert into products values (null,'新疆切糕',68,50,2,null); insert into products values (null,'十三香',10,200,3,null); insert into products values (null,'老乾媽',20,180,3,null); insert into products values (null,'豌豆黃',20,120,2,null); 練習: 簡單查詢: 練習: 1.查詢所有的商品 select * from products; 2.查詢商品名和商品價格. -- 檢視指定的欄位 -- 格式: select 欄位名1,欄位名2 from 表名select pname,price from products; 3.查詢所有商品都有那些價格. -- 去重操作 distinct -- 格式: select distinct 欄位名,欄位名2 from 表名 select price from products; select distinct price from products; 4.將所有商品的價格+10元進行顯示.(別名) -- 可以在查詢的結果之上進行運算,不影響資料庫中的值 -- 給列起別名 格式: 欄位名 [as] 別名 select price+10 from products; select price+10 新價格 from products; select price+10 '新價格' from products; select price+10 新 價 格 from products;-- 錯誤 select price+10 '新 價 格' from products; select price+10 `新 價 格` from products; 條件查詢: 練習: 1.查詢商品名稱為十三香的商品所有資訊: select * from products where pname = '十三香'; 2.查詢商品價格>60元的所有的商品資訊: select * from products where price>60; 3.查詢商品名稱中包含”新”的商品 -- 模糊匹配 -- 格式: 欄位名 like "匹配規則"; -- 匹配內容 % "龍" 值為龍 "%龍" 值以"龍"結尾 "龍%" 值以"龍"開頭 "%龍%" 值包含"龍" -- 匹配個數 "__" 佔兩個位置 select * from products where pname like "%新%"; 4.查詢價格為38,68,98的商品 select * from products where price = 38 or price = 68 or price=98; select * from products where price in(38,68,98); where後的條件寫法: * > ,<,=,>=,<=,<>,!= * like 使用佔位符 _ 和 % _代表一個字元 %代表任意個字元. * select * from product where pname like '%新%'; * in在某個範圍中獲得值. * select * from product where pid in (2,5,8); * between 較小值 and 較大值 select * from products where price between 50 and 70; 排序查詢: 1.查詢所有的商品,按價格進行排序.(asc-升序,desc-降序) select * from products order by price desc; 2.查詢名稱有新的商品的資訊並且按價格降序排序. select * from products where pname like '%新%' order by price desc; 聚合函式: 對一列進行計算 返回值是一個,忽略null值 * sum(),avg(),max(),min(),count(); 1.獲得所有商品的價格的總和: select sum(price) from products; 2.獲得商品表中價格的平均數: select avg(price) from products; -- round(值,保留小數位) select round(avg(price),2) from products; 3.獲得商品表中有多少條記錄: select count(*) from products; 分組:使用group by 1.根據cno欄位分組,分組後統計商品的個數. select cno,count(*) from products group by cno; 2.根據cno分組,分組統計每組商品的總數量,並且總數量> 200; select cno,sum(pnum) from products group by cno; select cno,sum(pnum) from products group by cno having sum(pnum)>200; 注意: where和having區別: 1.where 是對分組前的資料進行過濾 ;having 是對分組後的資料進行過濾 2.where 後面不能使用聚合函式,having可以
資料型別:
約束:
作用:為了保證資料的有效性和完整性
mysql常用的約束:主鍵約束(primary key) 唯一約束(unique) 非空約束(not null) 外來鍵約束(foreign key)
主鍵約束:被修飾過的欄位唯一非空
注意:一張表只能由一個主鍵,這個主鍵可以包含多個欄位
方式1:建表的同時新增約束 格式:欄位名稱 欄位型別 primary key
方式2:建表的同時在約束區域新增約束
所有欄位宣告完成後就是約束區域 格式:primary key(欄位1,欄位2)
方式3:建表後,通過修改表結構新增約束
唯一約束:
被修飾過的欄位唯一,對null不起作用
方式1:建表的同時新增約束 格式: 欄位名稱 欄位型別 unique
方式2:建表的同時在約束區域新增約束
所有的欄位聲名完成後就是約束區域:unique(欄位1,欄位2)
方式3:建表之後,通過修改表結構新增約束
非空約束:
特點:被修飾過的欄位非空
方式:
truncate 清空表:
格式:
truncate 表名;幹掉表,重新建立一張新表
和delete from 區別
delete屬於DML語句 truncate屬於DDL語句
delete逐條刪除 truncate幹掉表,重新建立一張空表
auto_increment 自增:
要求:1.被修飾的欄位累心支援自增。一般為int
2.被修飾的欄位必須是一個key 一般是primary key