SQL入門語法


Posted by RanmoLU on 2023-10-23

一、創建資料庫

創建並展示資料庫:
CREAT DATABASE `自訂義名稱`; 
SHOW DATABASES;

實際案例:
CREAT DATABASE `student db`;
SHOW DATABASES;

刪除資料庫:
DROP `資料庫名稱`

屬性類別:
1.INT--整數
2.DECIMAL(X,Y)--浮點數,括弧內分別表示總共幾位跟小數點後有幾位。
3.VARCHAR(X)--字串,括弧內表示可輸入的位元數。
4.BLOB--圖片/影片/檔案
5.DATE--日期 YYYY-MM-DD
6.TIMESTAMP--日期與時間 YYYY-MM-DD HH-MM-SS

限制類別:
1.NOT NULL:此格不得空。
2.UNIQUE:此格唯一存在。
3.DEFAULT:此屬性有預設值。
4.AUTO_INCREMENT:往後可不用設置次格數字,自動+1,例如ID數字。

二、創建表格

創建表格:
USE `資料庫名稱`;
CREAT TABLE `表格名稱` (
    `行資料名稱(一)` 屬性 PRIMARY  KEY,
    `行資料名稱(二)` 屬性
);

刪除表格:
DROP TABLE `表格名稱`;

顯示某資料庫裡的表格:
DESCRIBE  `表格名稱`;

新增/刪減 行資料:
ALT  TABLE `表格名稱` ADD `行資料名稱(三)` 屬性;
ALT  TABLE `表格名稱` DROP COLUMN `行資料名稱(三)`;

實際案例:
USE `student db`;
CREAT TABLE `student`(
    `student id` INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(20) UNIQUE,
    `major`VARCHAR(20) DEFULT `歷史`
);
DESCRIBE  `student`;
ALT TABLE `student` ADD `gpa` DECIMAL(3,2);
DESCRIBE `student`;

三、存入資料


INSTER INTO `標格名稱`(行項目1,行項目2,行項目3) 
    VALUES(value1,value2,value3);

INSTER INTO `student`(name,major,gpa) 
    VALUES(小美,中文,3.24);

插入資料沒有輸入ID是因為已經設定自動+1,而gpa設置也要注意是否符合(3,2)的規範

四、修改、刪除、取得資料

UPDATE `表格名稱`
SET 項目1 = 值, 項目2 =值 , ...
WHERE 條件;

UPDATE `student`
SET `name` = 'miss A', `major` ='理化' , ...
WHERE `name`='小美';

不論是條件或是修改的項目都可以有複數屬性

DELETE FROM `student` WHERE `name` = 'miss A';
SELECT *  FROM `表格名稱`;                      顯示全部屬性
SELECT `行項目1`, `行項目2`  FROM `表格名稱`;    顯示行1與2的屬性

SELECT `行項目1`, `行項目2`  FROM `表格名稱` 
ORDER BY DESC/ASC;                             遞減/增顯示

SELECT `行項目1`, `行項目2`  FROM `表格名稱` 
ORDER BY DESC/ASC
LIMIT 3;                                      遞減/增顯示前3個

SELECT  *  FROM `表格名稱`
WHERE `major` = '英文';                        只顯示主修為英文的人之全部屬性

取得資料也可加入AND/OR/IN作為條件篩選所要的資料

五、聚合函數、萬用字元


SELECT COUNT(*) FROM `student`;
SELECT MAX(`gpa`) FROM `student`;
SELECT MIN(`gpa`) FROM `student`;
SELECT AVG(`gpa`) FROM `student`;
SELECT SUM(`gpa`) FROM `student`;

SELECT `name` FROM `client`
WHERE `phone` LIKE '%355';

SELECT `client_id` FROM `client`
WHERE `name` LIKE '_艾_';

聚合函數:意義分別是取得學生人數、最高/最低/平均/加總成績。
萬用字元:%表示為多個字元、底線表示一個字元。意義分別代表挑選出電話末三碼為355的客戶/中間名為艾的客戶id。

六、子查詢


SELECT `name` FROM `employee`
WHERE `emp_id` = (
    SELECT `emp_id` FROM `work_with`
WHERE `total_salse` = '50000');

意義:從銷售金額大於五萬的員工id,找出員工姓名。
子查詢就是將兩個取得資料的句子串起來。

七、聯集


SELECT `name` FROM `student` UNION SELECT `client_name` FROM `client`

聯集:取出學生姓名與客戶姓名。










Related Posts

鯨吞億萬

鯨吞億萬

Secure Apache Using Certbot with Let's Encrypt on Ubuntu 20.04

Secure Apache Using Certbot with Let's Encrypt on Ubuntu 20.04

Command line 常用指令

Command line 常用指令


Comments