言:學習過程中,不對的地方請諒解
select語句控制查看,根據限定規則匹配信息,常用的有單表查詢、多表查詢、聯合查詢
select的執行流程:from-->where-->group by-->having-->order by-->select-->limit
用法規則
SELECT
column_1, column_2, ...
FROM
table_1
//多表查詢連接類型cross join,inner join,left join和right join等
WHERE
conditions
GROUP BY column_1
HAVING group_conditions
ORDER BY column_1
LIMIT offset, length;
SELECT語句由以下列表中所述的幾個子句組成:
單表查詢---示例
mysql> show databases; //進入mysql 查看所有的數據庫
mysql> use yiibaidb; //進入yiibaidb 數據庫
mysql> show tables; //查看yiibaidb這個庫中的所有表
mysql> desc customers; //查看一下customers這個表的結構
進入示例庫
查看表結構
1、查customers表中所有數據和只要customerName(限制顯示10行)
select * from customers limit 10; //查詢全部用*
select customerName from customers limit 10 ; //查詢特定列
使用select進行單表查詢
2、查customers表中多列【使用,】(限制顯示10行)
mysql> select customerNumber,customerName,addressLine1 from customers limit 10;
使用select 查詢多列信息
3、再加一條語句的前提下再加一個限制條件where
select customerNumber,customerName,addressLine1 from customers where customerNumber >=120 limit 10;
使用where進行限制查詢
where:布爾條件表達式=# 等值比較
<=> # 等值比較,包括與NULL的安全比較
<>或!=# 不等值比較
<,<=,>,>=# 其它比較符
IS NULL # 是否為空值
IS NOT NULL # 是否不為空值
LIKE # 支持的通配符有%和_
RLIKE或REGEXP # 正則表達式匹配
IN # 判指定字段的值是否在給定的列表中
BETWEEN … AND … # 在某取值范圍內
多練習幾個
mysql> select * from customers where customerName="Mini Wheels Co."; //查詢表customers中 customerName的值是“Mini Wheels Co.”的所有信息
mysql> select city from customers where customerName="Mini Wheels Co."; //查詢表customers中 customerName的值是“Mini Wheels Co.”的所有信息中的city值
練習
上一篇文章:《mysql學習2:下載并導入示例庫》
下一篇文章:《mysql學習4:select基礎---多表查詢-1》
言:我也是在學習過程中,不對的地方請諒解
回顧:
SELECT語句由以下列表中所述的幾個子句組成:
SELECT之后是逗號分隔列或星號(*)的列表,表示要返回所有列。
FROM指定要查詢數據的表或視圖。
JOIN根據某些連接條件從其他表中獲取數據。
WHERE過濾結果集中的行。
GROUP BY將一組行組合成小分組,并對每個小分組應用聚合函數。
HAVING過濾器基于
GROUP BY子句定義的小分組。
ORDER BY指定用于排序的列的列表。
LIMIT限制返回行的數量。
多表查詢,顧名思義就是同時查詢多個表。多表查詢首先要知道各表中的關系。示例庫關系圖如下(傳送門:下載導入示例庫)
示例庫關系圖
多表查詢語法:
mysql語法:
select … from tb1 Join_Type tb2 [on (Join_Condition)]
連接類型有:cross join,inner join,left join和right join等
1、cross join :交叉連接(不學,就是tb1 x tb2,以上是我自己理解的)
2、inner join:內連接:
條件比較連接:在連接條件中使用除等號(=)運算符之外的運算符,如>,>=,<,<=,<>等
內連接練習1---關系圖
eg:查詢表products中的MSRP和orderdetails表中的priceEach。條件是他們的productCode值相等的情況下。
mysql
mysql> use yiibaidb;
mysql> show tables;
mysql> select MSRP,priceEach from products inner join orderdetails on products.productCode=orderdetails.productCode limit 5;
//解釋一下,使用內連接查詢products中的MSRP和orderdetails表中的priceEach。條件是是他們的productCode值相等的情況下。
內連接練習1
再練習一個
內連接聯系2---關系圖
select a.customerName,b.status from customers as a inner join orders as b on a.customerNumber=b.customerNumber limit 10;
//查詢客戶姓名和他的訂單狀態。表customers中客戶姓名,表orders中訂單狀態,這2個表總的用戶編號信息是一致的。
//解釋上面的語句。查詢a表中的客戶姓名,b表中的狀態,從哪個表,從表customers(比作a)和表orders(比作b),條件是這2個表中的客戶id一致
內連接練習2
as這個我感覺很好用,還可以在輸出的時候顯示為想要的意思,因為并不是每個人都知道每個值的含義,比如下面這個。
select customerName as 客戶姓名 from customers limit 5;
3、left/right join 外連接;
下面是直接的解釋(讀不懂沒關系,看圖就懂了)
LEFT JOIN(左連接):取得左表(table1)完全記錄,即是右表(table2)并無對應匹配記錄。
left join
RIGHT JOIN(右連接):與 LEFT JOIN 相反,取得右表(table2)完全記錄,即是左表(table1)并無匹配對應記錄。
right join
練習:先接受外連接概念,下一節練習的時候詳細說一下,有點繞,弄了好久才明白
上一篇文章:《mysql學習3:select基礎---單表查詢》
言:我也是在學習過程中,不對的地方請諒解
SELECT之后是逗號分隔列或星號(*)的列表,表示要返回所有列。
FROM指定要查詢數據的表或視圖。
JOIN根據某些連接條件從其他表中獲取數據。
WHERE過濾結果集中的行。
GROUP BY將一組行組合成小分組,并對每個小分組應用聚合函數。
HAVING過濾器基于
GROUP BY子句定義的小分組。
ORDER BY指定用于排序的列的列表。
LIMIT限制返回行的數量。
where 可以有條件的從表中選取數據,where的使用方法
=# 等值比較
<=> # 等值比較,包括與NULL的安全比較
<>或!=# 不等值比較
<,<=,>,>=# 其它比較符
IS NULL # 是否為空值
IS NOT NULL # 是否不為空值
LIKE # 支持的通配符有%和_
操作符 | 描述 | 實例 |
= | 等號,檢測兩個值是否相等,如果相等返回true | (A=B) 返回false。 |
<>, != | 不等于,檢測兩個值是否相等,如果不相等返回true | (A !=B) 返回 true。 |
> | 大于號,檢測左邊的值是否大于右邊的值, 如果左邊的值大于右邊的值返回true | (A > B) 返回false。 |
< | 小于號,檢測左邊的值是否小于右邊的值, 如果左邊的值小于右邊的值返回true | (A < B) 返回 true。 |
>= | 大于等于號,檢測左邊的值是否大于或等于右邊的值, 如果左邊的值大于或等于右邊的值返回true | (A >=B) 返回false。 |
<= | 小于等于號,檢測左邊的值是否小于或等于右邊的值, 如果左邊的值小于或等于右邊的值返回true | (A <=B) 返回 true。 |
練習:
mysql> show databases; //查看數據庫
mysql> use yiibaidb; //進入示例庫
mysql> show tables; //查看庫中表
mysql> select * from items; //查看items中數據
查看items中數據
1、查詢表items中id值為8的數據;
mysql> select * from items where id=8; //等號,檢測兩個值是否相等,如果相等返回true
查詢表items中id值為8的數據
2、查詢表items中id值不為8的數據;
mysql> select * from items where id !=8;
mysql> select * from items where id <> 8;
//不等于,檢測兩個值是否相等,如果不相等返回true
查詢表items中id值不為8的數據
3、查詢item_no字段包含特定查詢
mysql> select * from items where item_no like "A-1%";
mysql> select * from items where item_no like "A-1_";
mysql> select * from items where item_no like "A_1_";
mysql> select * from items where item_no like "A_1";
//LIKE # 支持的通配符有%和_ %多個匹配 _匹配單個
上一篇文章:《mysql學習5:select基礎---多表查詢-2》
*請認真填寫需求信息,我們會在24小時內與您取得聯系。