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

[Day 02] 工廠模式,策略模式,裝飾者模式

[Day 02] 工廠模式,策略模式,裝飾者模式

Ruby 沒有 i++ (increment operator)

Ruby 沒有 i++ (increment operator)

[Note] HTML簡介

[Note] HTML簡介


Comments