1. 程式人生 > 實用技巧 >DQL:資料查詢語句(非官方)

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 int
, 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可以   
View Code

    資料型別:

    約束:

        作用:為了保證資料的有效性和完整性

        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