共計 2485 個字符,預計需要花費 7 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關 mysql 中怎么實現查詢操作,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
1、選擇所有的記錄
select * from table_name;
其中 * 表示表中的所有字段。
2、查詢不重復的記錄
用關鍵字 distinct
select distinct 字段名 from 表名;
3、條件查詢
用關鍵字 where
select * from 表名 where 條件;
where 后面的條件是一個字段的比較,可以使用 =、、、=、=、!= 等比較運算符;多個條件還可以使用 or、and 等邏輯運算。
4、排序和限制
用關鍵字 order by desc(降序),asc(升序),limit(排序結果顯示一部分)
order by 后面可以跟多個不同的排序字段,并且每個排序字段可以有不同的排序順序。
例如:把 emp 表中的記錄按照工資 sal 的高低順序排序。
select * from emp order by sal;
select * from emp order by sal,deptno desc;(sal 升序,septno 降序)
先按第一個字段排序,當第一個字段相同時,按照第二個字段排序。
select······limit offset_start, row_count;
offset_start 表示起始偏移量,默認值為 0。row_count 表示顯示的行數。
例如:select * from emp order by sal limit 1,3;
顯示前 3 條記錄,起始偏移量為 1,從第二條記錄開始顯示。
order by 和 limit 通常一起使用來控制記錄的分頁顯示。
5、聚合
很多情況下,用戶需要一些匯總操作,例如統計整個公司的人數或者每個部門的人數。
語法:
select 字段 1,字段 2.。。函數名 from 表名 where where_condition1 group
by 字段 11,字段 12 with rollup having where_condition2;
函數名表示要做的聚合操作,就是聚合函數,常用的有 sum(求和)、count(*)(記錄數)、max(最大值)、min(最小值)。
group by 關鍵字表示要進行分類聚合的字段、
having 關鍵字表示對分類后的結果在進行條件的過濾。
having 和 where 的區別是 having 是對聚合后的結果進行條件的過濾,而 where 是在聚合前就對記錄進行過濾,如果邏輯允許,我們可以用 where 先進行過濾,這樣結果集變小了,將對聚合的效率大大的提高,最后在根據邏輯看是否用 having 進行再過濾。
select sum(sal), max(sal), min(sal) from emp;
6、表連接
當需要同時顯示多個表中的字段時,就可以用表連接來實現這樣的功能。
從大類上分,表連接分為內連接和外連接,它們之間的最主要的區別是內連接僅選出兩張表中互相匹配的記錄,而外連接會會選出其他不匹配的記錄。我們最常用的是內連接。
例如:查詢出所有雇員的名字和所在的部門名稱,因為雇員名稱和部門分別放在表 emp 和表 dept 中,因此,需要使用表連接來進行查詢。
select ename, deptname from emp, dept where emp.deptno=dept.deptno;
(ename 是表 emp 中的字段,deptname 是 dept 表中的字段)
外連接又分為左鏈接和右連接(關鍵字 left join 和 right join)
左連接:包含所有的左邊表中的記錄甚至是右邊表中沒有和他匹配的記錄。
右連接:包含所有的右邊表中的記錄甚至是左邊表中沒有和他匹配的記錄。
例如:select ename, deptname from emp left
join dept on emp.deptno=dept.deptno;
select ename, deptname from dept right join emp on emp.deptno=dept.deptno;
ename 是表 emp 中的字段,deptname 是 dept 表中的字段。 就是包含表 emp 中的所有記錄。 以上兩條語句等價。
7、字查詢
在某些情況下,當進行查詢的時候,需要的條件是另外一個 select 語句的結果,這個時候,就要用到子查詢。用于子查詢的關鍵字主要包括 in、not in、=、!=、exists、not exists 等。
select * from emp where deptno in (select deptno from dept);
(表示的意思就是就表 emp 中的所有記錄,除去 dept 表對應的部門不存在的刪掉。)
在某些情況下,子查詢可以轉化成表連接。例如,上面的語句可以寫成:
select emp.* from emp, dept where emp.deptno=dept.deptno;
8、記錄聯合
我們經常會碰到這樣的應用,將兩個表的數據按照一定的查詢條件查詢出來后,將結果合并到一起顯示出來。這個時候,就需要用到 union 和 union all 關鍵字來實現這樣的功能。union 和 union all 的區別:union all 是把結果集合并在一起,而 union 是將 union all 后的結果進行一次 distict,去除重復記錄。
select * from table1 union| union all select * from table2;
例如:
① select deptno from emp union
all select deptno from dept;
② select deptno from emp union
select deptno from dept;
①中的記錄將會有重復記錄,②中沒有重復記錄。
關于 mysql 中怎么實現查詢操作就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。