前言
學習MySQL資源有許多,在youtube也有許多影片教學。在這會紀錄我在GrandmaCan - 我阿嬤都會與菜鳥教程中學習到的指令與紀錄
MySQL結構是n個資料庫 -> n個表格
指令大致可以區分新增、修改、刪除、查詢四大功能,其中關鍵字使用大寫、變數使用 `` 包圍,並且使用 ; 結尾。當然,使用小寫直接撰寫也不會影響程式的執行。
資料庫(Database)
1 2 3 4
| SHOW DATABASES; CREATE DATABASE `database_name`; DROP DATABASE `database_name`; USE `database_name`;
|
表格(Table)
1 2 3 4 5 6 7 8 9 10 11
| SHOW TABLES; CREATE TABLE `table_name`( `int_variable_name` INT, `float_variable_name` DECIMAL(3,2), `string_variable_name` VARCHAR(10), `date_variable_name` DATE, `time_variable_name` TIMESTAMP, `file_variable_name` BLOB ); DESCRIBE `table_name`; DROP TABLE `table_name`;
|
創建並關聯表格
創建一個四個屬性的”學生”表格
| 學號 |
姓名 |
主修 |
GPA |
成績 |
| 001 |
李白 |
文學 |
1.92 |
90 |
1 2 3 4 5 6 7
| CREATE TABLE `student`( `student_id` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(20) UNIQUE, `major` VARCHAR(20) NULL, `gpa` DECIMAL(3,2) DEFAULT 0 `score` INT );
|
更改”學生”表格
1 2
| ALTER TABLE `student` ADD `note` VARCHAR(20); ALTER TABLE `student` DROP COLUMN `note`
|
新增、更改、刪除數據
1 2 3 4 5 6 7 8 9 10
| INSERT INTO `student` VALUES(001, "李白", "文學", 1.92, 90); INSERT INTO `student`(`student_id`, `name`, `major`, `score`) VALUES(002, "郭台銘", "商管", 60);
UPDATE `student` SET `gpa` = 4.0 WHERE `name` = "郭台銘";
DELETE FROM `student` WHERE `student_id` = 2; DELETE FROM `student`;
|
查詢數據
1 2 3 4 5 6
| SELECT * FROM `student`;
SELECT `name` FROM `student` WHERE `score` > 60 AND `gpa` > 1 ORDER BY `student_id` DESC LIMIT 3;
|
聚合函數(Aggregate Functions)
1 2
| SELECT COUNT(*) FROM `student`;
|
另外聚合函數也可搭配分組(Group By),條件篩選(Having) + 聚合函數使用
萬用字元(Wildcards)
1 2 3
| SELECT * FROM `student` WHERE `name` LIKE "李%";
|
關聯
關聯是將兩個有相同屬性的表格連接在一起,這裡我們先新建兩個新的表格
1. 學生表格
| 學生編號 |
學生姓名 |
課程編號 |
| s001 |
李帽 |
c005 |
| s002 |
楊梅 |
c001 |
| s003 |
黃尚 |
c003 |
2. 課程表格
| 課程編號 |
教師編號 |
教師姓名 |
| c001 |
t001 |
寶傑 |
| c003 |
t002 |
達叔 |
創建並關聯兩表格
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE `student`( `sno` VARCHAR(10) PRIMARY KEY, `sname` VARCHAR(20), `cno` VARCHAR(10), ); CREATE `course`( `cno` VARCHAR(10) PRIMARY KEY, `tno` VARCHAR(10), `tname` VARCHAR(20), ); ALTER TABLE `student` ADD FOREIGN KEY(`cno`) REFERENCES `course`(`cno`) ON DELETE SET NULL;
|
1 2 3 4 5 6
| SELECT * FROM `student` JOIN `course` ON `student`.`cno` = `course`.`cno`;
|
聯集
1 2 3 4
| SELECT `sname` FROM `student` UNION SELECT `tname` FROM `course`;
|
子查詢
1 2 3 4 5
| SELECT * FROM `student` WHERE `cno` = ( SELECT `cno` FROM `course` WHERE `tname` = "寶傑" );
|