MySQL語法

——————————————————————————–
ORDER BY
——————————————————————————–
SELECT "欄位名" FROM "表格名" [WHERE "條件"]ORDER BY "欄位名" [ASC, DESC]

——————————————————————————–
INSERT
——————————————————————————–
INSERT INTO 資料表 VALUES(值1, 值2, …, 值N) 
INSERT INTO 資料表(欄位1, 欄位2, …,欄位N) VALUES(值1, 值2, …, 值N) 
INSERT INTO 資料表[欄位列表] VALUES(值列表), (值列表)…

——————————————————————————–
UPDATE
——————————————————————————–
UPDATE 資料表 SET 欄位1= 值1, 欄位2=值2, 欄位3=值3
UPDATE 資料表 SET 欄位1= 值1, 欄位2=值2, 欄位3=值3 WHERE 條件 

——————————————————————————–
DELETE
——————————————————————————–
DELETE FROM 資料表
DELETE FROM 資料表 WHERE 條件
沒條件整個資料表刪除!!!

//======SQL查詢關聯語法1(查他介紹了哪些人)
Select I.name,M.mid,M.name
From member as I , member as M
Where I.mid = 'b0905555' and I.mid = M.introducer;
//======

//======SQL查詢關聯語法2 (會改標頭)
Select I.name AS introducer_name ,M.mid AS member_id ,M.name AS member_name
From member as I , member as M
Where I.mid = 'b0905555' and I.mid = M.introducer;
//======

//======SQL查詢關聯語法3 (查誰介紹進來的)
Select M.name,I.mid,I.name
From member as M , member as I
Where M.mid = 'b0905555' and M.introducer = I.mid;
//======

//======6個資料表
browse
cart
member
orderr
order_11
record
//======

— 資料表格式: `browse`
CREATE TABLE `browse` (
  `mId` char(8) NOT NULL DEFAULT 'a0910001',
  `pNo` char(6) NOT NULL,
  `browseTime` datetime NOT NULL,
  PRIMARY KEY (`mId`,`pNo`,`browseTime`),
  KEY `pNo` (`pNo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;

— 資料表格式: `cart`
CREATE TABLE `cart` (
  `mId` char(8) NOT NULL,
  `cartTime` datetime NOT NULL,
  `tNo` char(5) DEFAULT NULL,
  PRIMARY KEY (`mId`,`cartTime`),
  KEY `tNo` (`tNo`),
  KEY `mId` (`mId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;

— 資料表格式: `member`
CREATE TABLE `member` (
  `mId` char(8) NOT NULL,
  `pId` char(10) NOT NULL,
  `name` varchar(8) NOT NULL,
  `birthday` date DEFAULT NULL,
  `phome` varchar(10) DEFAULT NULL,
  `adderss` varchar(40) DEFAULT NULL,
  `email` varchar(20) DEFAULT NULL,
  `introducer` char(8) DEFAULT NULL,
  PRIMARY KEY (`mId`),
  UNIQUE KEY `pId` (`pId`),
  KEY `introducer` (`introducer`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;
— 列出以下資料庫的數據: `member`
INSERT INTO `member` VALUES ('a0921111', 'A100999777', 'David', '1975-11-22', '04-2468888', '台中市中港路200號', '[email protected]', 'a0911234');
INSERT INTO `member` VALUES ('a0927777', 'B123123123', 'Su', '1982-06-06', '07-2345678', '高雄市蓮海路70號', '[email protected]', 'b0905555');
INSERT INTO `member` VALUES ('b0905555', 'C200456789', 'Jennifer', '1974-03-04', '07-2221111', '高雄市五福三路300號', '[email protected]', NULL);
INSERT INTO `member` VALUES ('b0922468', 'R100200300', 'Jackson', '1980-03-30', '06-3210321', '台南縣中華路600號', '[email protected]', NULL);
INSERT INTO `member` VALUES ('a0911234', 'A122555888', 'Tony', '1980-12-12', '02-2288009', '台北市羅斯福路200號', '[email protected]', 'a0910001');
INSERT INTO `member` VALUES ('a0910001', 'A220123456', 'Jenny', '1979-01-01', '02-2222001', '台北市中山路100號', '[email protected]', 'b0905555');

— 資料表格式: `orderr`
CREATE TABLE `orderr` (
  `pNo` char(6) NOT NULL,
  `mId` char(8) NOT NULL,
  `cartTime` datetime NOT NULL,
  `amount` int(11) NOT NULL DEFAULT '1',
  PRIMARY KEY (`pNo`,`mId`,`cartTime`),
  KEY `pNoFk` (`mId`,`cartTime`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;

— 資料表格式: `order_11`
CREATE TABLE `order_11` (
  `pNo` char(6) NOT NULL,
  `mId` char(8) NOT NULL,
  `cartTime` datetime NOT NULL,
  `amount` int(11) NOT NULL DEFAULT '1',
  PRIMARY KEY (`pNo`,`mId`,`cartTime`),
  KEY `mId` (`mId`,`cartTime`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;

— 資料表格式: `record`
CREATE TABLE `record` (
  `tNo` char(5) NOT NULL,
  `pNo` char(6) NOT NULL,
  `salePrice` decimal(10,2) NOT NULL,
  `amount` int(11) NOT NULL,
  PRIMARY KEY (`tNo`,`pNo`),
  KEY `pNo` (`pNo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;

資料庫-正規化

資料庫

第一階正規化(1NF)

第一階正規劃 是所有正規劃的基礎

符合

1.資料表中有主鑑 其他所有的欄位ㄉ相依於主鍵

2.每個欄位中都只有儲存單一值

3.資料表中沒有意義相同的多個欄位 例如:姓名1 姓名2 …

第二階正規劃(2NF)

1.符合1NF

2.處理 部分相依

部分相依 主鍵是由多個欄位組成

多複合主鍵容易發生

舉例:

選課資料

課程編號 -> 課程名稱

學號 -> 學生姓名

但 學生姓名 跟 課程編號 無關

第三階正規劃(3NF)

1.符合2NF

2.各欄位與主鍵間沒有間接相依的關係

資料庫 第四章 關聯模式

DBMS 資料庫管理程式 關聯式資料庫

資料庫 Database 關聯模式

-資料表(table) *關聯

–資料表相連 用主鍵

–序列值(Tuple) *列(Row),紀錄(Record) [一整列]

–屬性(Attribute) *行(Column),欄位(Field)

–關聯綱目(Student)

–儲存格 cell [單格]

–屬性值 [一整行]

Students

 *stno  stname  cellphone
 092001   jane   09201211 
 092002   mary  0922283624
 092003  john  0928381216

紅=序列值(Tuple) *列(Row),紀錄(Record) [一整列]

綠=儲存格 cell [單格]

淺藍=屬性(Attribute) *行(Column),欄位(Field)

橘=屬性值 [一整行]

R(A1,A2,…,An) = 資料表(屬性1,屬性2,…,屬性1)

定義域限制:

每一個屬性值都是 "簡單" 且 "單值"

簡單 is power.

簡單=不是複合的 舉例:地址 跟 郵遞區號

<第四章 103頁>

序列值(紀錄)[一整列] 是沒有順序的 依照 紀錄時間排序

一個關聯中 不可以兩筆 序列值[一整列] 不能有完全一樣

屬性值[一整行] 是有順序的 可以進行排序

複合與多值屬性 不能出現在關聯中

不能出現類似

D123F45678

phone=[5252000,5364564] (雙紀錄)

主鍵不能為空值

資料庫的核心理論-ERD

ERD

1.

一筆交易至少包括一個商品,至多可有N個商品。一個商品可以不存在任何交易裡,至多可以存在N個交易。

2.

一筆交易至少包括一個商品,至多可有N個商品。一個商品可以不存在任何交易裡,至多可以存在N個交易。

3.

關鍵屬性 畫底線

作業: 3-6

3/24 下星期二 晚上12點之前上傳

假設你要為一個人力資源部門設計徵才系統,該系統需記載公司裡的各個職位、空缺職位、應徵者的資料、以及面談結果。具體說來,該系統的資料需求如下:

1. 部門 (Department):包括部門編號 (dId)、部門名稱(dName),和部門所在(dLocations),其中部門編號和部門名稱均唯一,且部門所在地可有多個。

2. 職位 (Position):用來描述一個職位,包括職位名稱(pName) 和職責敘述 (pDesc)。其中沒有一個屬性是唯一的,但同一部門的各個職位的職位名稱必不同。

3. 職缺 (Vacancy):包括職缺編號 (vId)、職缺條件 (vCond)、職缺人數 (vNo), 和出缺日期 (vDate)。其中職缺編號為唯一。此外,一個職缺必對應於一個職位,但一個職位可能會分成數個職缺來報。

4. 應徵者 (Applicant):包括身分證字號 (pId)、姓名 (name)、性別 (gender)、學歷 (degrees),和其他資料 (data)。其中身分證字號為唯一,學歷可有多個。一個應徵者可以應徵多個職缺。

5. 員工 (Employee):包括工號 (eId)、姓名 (name)、性別 (gender),和專長(expertise)。其中工號是唯一,而專長可有多個。

此外,有些應徵者申請某個職缺時需要與某些員工面談(Interview),面談的日期和面談的結果必須記載。請繪出符合以上資料需求的 ERD,必要時可以自行假設其他條件,但要寫清楚。

小毛解: