大数据WEB阶段(六)MySql详解(二)
生活随笔
收集整理的這篇文章主要介紹了
大数据WEB阶段(六)MySql详解(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MySql詳解(二)
一、分組查詢
語法:
select col_name1,col_name2... from tb_name group by having ...;練習:
執行下面的SQL,創建orders表并插入數據create table orders(id int,product varchar(20),price float);insert into orders(id,product,price) values(1,'小米手機',900);insert into orders(id,product,price) values(2,'奧妙洗衣液',60);insert into orders(id,product,price) values(3,'樂視TV',90);insert into orders(id,product,price) values(4,'聯想鍵盤',80);insert into orders(id,product,price) values(5,'奧妙洗衣液',60);insert into orders(id,product,price) values(6,'小米手機',900);~對訂單表中商品歸類后,顯示每一類商品的總價select * from orders group by product;select count(*) from orders group by product;select sum(price) from orders group by product;~查詢購買了幾類商品,并且每類總價大于100的商品select product,sum(price) 總價 from orders group by product having sum(price)>100;~查詢單價小于100而總價大于100的商品的名稱. select * from orders where price<100 group by product having sum(price) > 100;二、數據庫備份與恢復
三、外鍵約束
案例:
create table dept(id int primary key auto_increment,name varchar(20));insert into dept values(null, '財務部');insert into dept values(null, '人事部');insert into dept values(null, '科技部');insert into dept values(null, '銷售部');create table emp(id int primary key auto_increment,name varchar(20),dept_id int,foreign key(dept_id) references dept(id));insert into emp values(null, '張三', 1);insert into emp values(null, '李四', 2);insert into emp values(null, '老王', 3);insert into emp values(null, '趙四', 4);insert into emp values(null, '劉能', 4);要求: (1)執行上面的SQL語句,創建兩張表(dept和emp),在創建時先不指定dept_id為外鍵,嘗試刪除部門表中的某一個部門。 (2)將dept和emp表刪除重建,在創建時指定dept_id為外鍵,再次嘗試刪除部門表中的某一個部門。四、多表設計
- *(多對多):在一張第三方的表中分別保存兩張表的主鍵作為外鍵, 來保存兩張表之間的關系,可以把多對多的關系拆分成兩個一對多的關系來理解
五、多表查詢
案例:
create table dept(id int primary key auto_increment,name varchar(20));insert into dept values(null, '財務部');insert into dept values(null, '人事部');insert into dept values(null, '科技部');insert into dept values(null, '銷售部');create table emp(id int primary key auto_increment,name varchar(20),dept_id int);insert into emp values(null, '張三', 1);insert into emp values(null, '李四', 2);insert into emp values(null, '老王', 3);insert into emp values(null, '劉能', 5);需求1:查詢出部門表和員工表,同時列出部門信息和員工信息。select * from dept,emp;(笛卡爾積查詢)select * from dept, emp where emp.dept_id=dept.id;或者select * from dept inner join emp on emp.dept_id=dept.id; 需求2:查詢出部門信息和部門所對應的員工信息,同時列出那些沒有員工的部門select * from dept left join emp on emp.dept_id=dept.id; 需求3:查詢出部門信息和部門所對應的員工信息,同時列出那些沒有部門的員工select * from dept right join emp on emp.dept_id=dept.id; 需求4:查詢出部門信息和部門所對應的員工信息, 同時列出沒有員工的部門和那些沒有部門的員工select * from dept full join emp on emp.dept_id=dept.id;###mysql不支持笛卡爾積查詢
內連接查詢:查詢出左邊表(dept)有且右邊表(emp)也有的記錄。
select * from emp inner join dept on dept.id=dept_id;左外連接查詢:在內連接查詢的基礎上,加上左邊表有而右邊表沒有的記錄
**查詢出部門所對應的員工信息, 同時列出那些沒有員工的部門
select * from dept left join emp on dept.id=dept_id;右外連接查詢:在內連接查詢的基礎上,加上右邊表有而左邊表沒有的記錄。
**查詢出部門所對應的員工信息, 同時列出那些沒有部門的員工
select * from dept right join emp on dept.id=dept_id;全外連接查詢:在內連接查詢的基礎上,加上左邊表有而右邊表沒有的記錄 和 右邊表有而左邊表沒有的記錄。
**查詢出部門所對應的員工信息,同時列出那些沒有員工的部門及些沒有部門的員工
select * from dept full join emp on dept.id=dept_id;###mysql不支持全外連接查詢使用union模擬全外連接查詢:
select * from dept left join emp on dept.id=dept_id union select * from dept right join emp on dept.id=dept_id;總結
以上是生活随笔為你收集整理的大数据WEB阶段(六)MySql详解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据WEB阶段 (六)MySql详解(
- 下一篇: 大数据WEB阶段(八)Tomcat服务器