公告版位


關於本站 程式開發學習之路 ,這裡有Java程式開發相關技術等學習交流。

主要提高開發程式效率同時分享一些開發程式經驗、深入探討開發程式體驗等技術和教學。
相關技術等學習交流。


語言(Languages)及框架(Framework): JavaJSP/Tag/JSTL/ServletGrailsjQueryJavaScriptSpringSpringMVCSpringSecurityHibernateStrutsPHPC/C++GoogleAppEngineHTML5/CSS3Android、 Xml、 Ajax、 Json、 Ant、 UML、 ShellScripts、 AngularJS等



工具(Software)/環境(Environment): Windows7EclipseLinux、 Subversion、 mavenTomcatWeblogicJbossApache

資料庫(Database): MySQLOracle SQLPostgerSQLSQL Server


本站來自:Java程式教學甘仔店

喜歡本站可以加入粉絲~

Java鬥陣仔甘仔店粉絲頁

Google+


本站內容僅供分享學習交流之用,將不對任何資源負法律責任。如有侵犯您的版權,請來信或留言給我們,我們將盡快為您處理。


目前分類:MySQL-進階系列教學 (15)

瀏覽方式: 標題列表 簡短摘要

MySQL的變數長相為@zzzxxxyyy,小老鼠+你想取的名稱,整串@zzzxxxyyy為一個變數。
宣告分兩種,其一外在宣告,其二內在宣告

首先介紹內在宣告,以下將舉例講解︰
先新增測試假資料
CREATE TABLE heyf_t10 (
empid INT ,
deptid INT ,
salary DECIMAL(10, 2)
);

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()

UNION ALLUNION 是MySQL能使用的聯集查詢,兩種語法相同但是效果不同,以下將會舉例介紹。

語法︰
<SELECT查詢一>
UNION [ALL]
<SELECT查詢二>

※特別注意︰要執行UNION [ALL]聯集查詢,上下兩個查詢所得的欄位數及欄位屬性必須相同


使用UNION ALL,會將上下兩個查詢的結果全部都列出來。
SELECT *

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()

DISTINCTGROUP BY 都是用來做去除重複資料的關鍵字,但用法不同,以下將針對這兩種做比較介紹


使用DISTINCT,必須放在SELECT區塊內第一個欄位的前方,如下列語句所示位置,其代表的意義是後面所跟的所有欄位都必須相同才能算重複的資料,換言之如果確認欲查出的欄位必須同時去除重複資料才能使用這個。
SELECT      DISTINCT id, user_id, order_date, order_status
FROM         user_order
ORDER BY id

結果︰

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()



計算出每筆訂單有幾筆商品

SELECT 
      user_order_A.id,
      user_order_A.name,
      COUNT(user_order_A.id)
FROM  user_order_A
      JOIN products_table

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()


使用SUM及GROUP BY

SUM是總合,將此欄位加總
GROUP BY 是群組,也可以說是分組。
GROUP BY 可以配合SUM ,COUNT。

此查詢將同一訂單編號,的金額加總。

SELECT 

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()


使用MAX
找出每個訂單裡的最貴的商品價格
SELECT MAX(p.price),p.order_id,p.product_name
FROM products_table ASp
GROUP BY p.order_id;

結果:
文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()

子查詢,意即查詢中還有另一個查詢,子查詢放置的位置可以在select、from、where中,有其個別用法及意義。


        位置
Select區間
From區間
Where區間
意義
一個子查詢回傳資料給母查詢當作一個欄位使用,只能回傳一筆單欄資料,此時的where條件能與母查詢的from區塊比對。
文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()

NATURAL JOIN 自動依據相同名稱的欄位來做聯集,方式與INNER JOIN相同,結果略為不同

使用一般JOIN
語句︰
SELECT *
FROM occupation AS occ
            JOIN
                    user_order AS uo
            ON
                    occ.user_id = uo.user_id

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()

 

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已結案',

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()


RIGHT JOIN是將右邊表格全顯示,意即以右邊表格的資料為主關聯左邊表格,若左邊表格有右邊表格的對應則顯示對應資料,若左邊沒右邊的資料則顯示null。

我們將occupation table insert 一筆資料,是沒有與user關連。
INSERT INTO occupation (occupation,salary,user_id)
VALUES ('程式設計師',40000,7);


SELECT *
FROM user AS u

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()

 

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

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()


Cartesian Joins 笛卡兒聯接

SELECT *
FROM 表格A ,表格B
將表格所有可能聯接,全都資料聯接。
如果要限制,可以在WHERE加條件。

例:
SELECT *

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()


SELECT *
FROM 表格A INNER JOIN 表格B
ON(表格A.欄位 = 表格B.欄位 )
注意

INNER JOIN

JOIN 是一樣的

例:
SELECT *

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()

 

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%';

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()

表格的關連及限制用法_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)

文章標籤

PG Levin Li 發表在 痞客邦 留言(0) 人氣()