MySQL的變數長相為@zzzxxxyyy,小老鼠+你想取的名稱,整串@zzzxxxyyy為一個變數。
宣告分兩種,其一外在宣告,其二內在宣告
首先介紹內在宣告,以下將舉例講解︰
先新增測試假資料
CREATE TABLE heyf_t10 (
empid INT ,
deptid INT ,
salary DECIMAL(10, 2)
);
公告版位
目前分類:MySQL-進階系列教學 (15)
- Dec 28 Wed 2011 17:58
[MySQL]2-15 宣告變數及其應用
- Dec 27 Tue 2011 15:18
[MySQL]2-14 UNION ALL 及 UNION 使用比較(附加FULL JOIN)
UNION ALL 與UNION 是MySQL能使用的聯集查詢,兩種語法相同但是效果不同,以下將會舉例介紹。
語法︰
<SELECT查詢一>
UNION [ALL]
<SELECT查詢二>
使用UNION ALL,會將上下兩個查詢的結果全部都列出來。
SELECT *
- Dec 27 Tue 2011 10:24
[MySQL]2-13 DISTINCT vs GROUP BY 的差異比較
DISTINCT 及GROUP BY 都是用來做去除重複資料的關鍵字,但用法不同,以下將針對這兩種做比較介紹
使用DISTINCT,必須放在SELECT區塊內第一個欄位的前方,如下列語句所示位置,其代表的意義是後面所跟的所有欄位都必須相同才能算重複的資料,換言之如果確認欲查出的欄位必須同時去除重複資料才能使用這個。
SELECT DISTINCT id, user_id, order_date, order_status
FROM user_order
ORDER BY id
結果︰
- Dec 26 Mon 2011 18:33
[MySQL]2-12使用COUNT及GROUP BY
計算出每筆訂單有幾筆商品
SELECT
user_order_A.id,
user_order_A.name,
COUNT(user_order_A.id)
FROM user_order_A
JOIN products_table
- Dec 26 Mon 2011 18:27
[MySQL]2-11使用SUM及GROUP BY
使用SUM及GROUP BY
SUM是總合,將此欄位加總
GROUP BY 是群組,也可以說是分組。
GROUP BY 可以配合SUM ,COUNT。
此查詢將同一訂單編號,的金額加總。
SELECT
- Dec 26 Mon 2011 17:22
[MySQL]2-10使用MAX及MIN及GROUP BY
使用MAX
找出每個訂單裡的最貴的商品價格
SELECT MAX(p.price),p.order_id,p.product_name
FROM products_table ASp
GROUP BY p.order_id;
- Dec 26 Mon 2011 16:48
[MySQL]2-9使用子查詢
子查詢,意即查詢中還有另一個查詢,子查詢放置的位置可以在select、from、where中,有其個別用法及意義。
位置
|
Select區間
|
From區間
|
Where區間
|
意義
|
一個子查詢回傳資料給母查詢當作一個欄位使用,只能回傳一筆單欄資料,此時的where條件能與母查詢的from區塊比對。
|
- Dec 26 Mon 2011 14:34
[MySQL]2-8表格連接用法(NATURAL JOIN)
NATURAL JOIN 自動依據相同名稱的欄位來做聯集,方式與INNER JOIN相同,結果略為不同
使用一般JOIN
語句︰
SELECT *
FROM occupation AS occ
JOIN
user_order AS uo
ON
occ.user_id = uo.user_id
- Dec 26 Mon 2011 12:08
[MySQL]2-7表格連接用法(STRAIGHT_JOIN)
STRAIGHT_JOIN 強迫MySQL使用我們的順序去做JOIN,其JOIN結果跟INNER JOIN相同
首先先CREATE新關聯TABLE以及INSERT資料
CREATE TABLE user_order (
id bigint(20) NOT NULL AUTO_INCREMENT ,
user_id varchar(20) NOT NULL ,
order_date datetime NOT NULL,
order_status int(20) NOT NULL DEFAULT 0 COMMENT '0未確認訂單,1待付款,2已結案',
- Dec 24 Sat 2011 17:19
[MySQL]2-6 表格連接用法(RIGHT JOIN)
RIGHT JOIN是將右邊表格全顯示,意即以右邊表格的資料為主關聯左邊表格,若左邊表格有右邊表格的對應則顯示對應資料,若左邊沒右邊的資料則顯示null。
我們將occupation table insert 一筆資料,是沒有與user關連。
INSERT INTO occupation (occupation,salary,user_id)
VALUES ('程式設計師',40000,7);
SELECT *
FROM user AS u
- Dec 24 Sat 2011 17:17
[MySQL]2-5 表格連接用法(LEFT JOIN)
LEFT JOIN 是將左邊表格全顯示,意即以左邊表格為主關聯右邊表格,若右邊有左邊的資料則顯示對應資料,若右邊沒有左邊的資料則顯示null。
我們將user table insert 一筆資料,是沒有occupation關連。
INSERT INTO user (id,username,account_number)
VALUES (5,'Mr. Jack','Jack123');
SELECT *
FROM user AS u
INNER JOIN occupation AS o
- Dec 24 Sat 2011 16:47
[MySQL]2-4 表格連接用法(Cartesian Joins)
Cartesian Joins 笛卡兒聯接
SELECT *
FROM 表格A ,表格B
將表格所有可能聯接,全都資料聯接。
如果要限制,可以在WHERE加條件。
例:
SELECT *
- Dec 24 Sat 2011 16:28
[MySQL]2-3 表格連接用法(JOIN)
SELECT *
FROM 表格A INNER JOIN 表格B
ON(表格A.欄位 = 表格B.欄位 )
注意
及JOIN 是一樣的
例:
SELECT *
- Dec 24 Sat 2011 15:09
[MySQL]2-2使用LIKE 查詢資料用法
在 LIKE 前面加上 NOT ,NOT LIKE表示与 LIKE 相反的意思。
LIKE 通常配 % 一起使用,
% 表示不比對,全部都要。
MYSQL LIKE是不分大小寫的,以下的查詢會查出一樣的。
查詢名字是mr 開頭的。
SELECT * FROM user AS u WHERE u.username LIKE 'mr%';
SELECT * FROM user AS u WHERE u.username LIKE 'Mr%';
- Dec 24 Sat 2011 13:47
[MySQL]2-1 表格的關連及限制用法_PK_FK_UK_INDEX
表格的關連及限制用法_PK_FK_UK_INDEX
例:
建立user table
CREATE TABLE user (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '這是PK_ID',
username varchar(20) NOT NULL DEFAULT '名字',
account_number varchar(20) NOT NULL COMMENT '帳號',
password varchar(255) NOT NULL DEFAULT '123' COMMENT '密碼預設為123',
PRIMARY KEY(id),
UNIQUE KEY account_number (account_number)