常見MySQL語法

(參考Mysql)

Menu

Type CRUD
Table Create
Read
Update
Delete
Data Create
Read
Update
Delete
Index Create
Delete
Column Create
Read
Update
Delete
Trigger Create
Read
Delete
Procedure Create
Read
Delete
Variable Create
Read
Delete

Create Table

1
2
3
4
5
6
7
8
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL COMMENT 'user name',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `index_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Read Table

1
SHOW CREATE TABLE `users`;

Update Table

1
2
ALTER TABLE `old_table_name`
RENAME TO `new_table_name`;

Delete Table

1
DROP TABLE IF EXISTS `users`;

(Back to Menu)


Create Data

1
2
3
INSERT INTO `users` (`id`, `name`, `created_at`, `updated_at`)
VALUES (1, 'Bear', NOW(), NOW()),
(2, 'Aries', NOW(), NOW());
1
2
3
4
INSERT INTO `foods` (`name`, `country`)
SELECT 'sushi', `name`
FROM `countries`
WHERE `id` = 2;

Read Data

1
SELECT * FROM `users`;

Update Data

1
2
UPDATE `users` SET `name`='Lin'
WHERE `id` = 1;
  • JSON 欄位 (extension_item 不能為 null)

只更新 json 中的特定 key

1
2
UPDATE `foods` SET `extension_item` = json_set(`extension_item`, "$.created_at", '2022-09-27')
WHERE `id` = 1;

取代整個 json 欄位的資料

1
2
UPDATE `foods` SET `extension_item` = json_object("created_at", '2022-09-28', "updated_at", '2022-09-29')
WHERE `id` = 2;

Delete Data

1
2
3
4
5
6
SET SQL_SAFE_UPDATES = 0;

DELETE FROM `users`
WHERE `name` = 'Lin';

SET SQL_SAFE_UPDATES = 1;

(Back to Menu)


Create Index

1
2
3
4
ALTER TABLE `users`
ADD INDEX `index_name` (`name`),
ALGORITHM = INPLACE,
LOCK = NONE;

Delete Index

1
2
3
4
ALTER TABLE `users`
DROP INDEX `index_name`,
ALGORITHM = INPLACE,
LOCK = NONE;

(Back to Menu)


Create Column

1
ALTER TABLE `users` ADD COLUMN `email` varchar(255);

Read Column

1
2
DESC `users`;
SHOW COLUMNS FROM `users`;

Update Column

1
ALTER TABLE `users` MODIFY COLUMN `email` varchar(63);

Delete Column

1
ALTER TABLE `users` DROP COLUMN `email`;

(Back to Menu)


Create Trigger

1
2
3
4
5
6
7
8
CREATE TRIGGER `trigger_insert_posts`
AFTER INSERT ON `posts`
FOR EACH ROW
BEGIN
UPDATE `stats`
SET `post_count` = 'post_count' + 1
WHERE user_id = new.user_id;
END;

Read Trigger

1
2
3
SHOW TRIGGERS;

SHOW CREATE TRIGGER `trigger_name`;

Delete Trigger

1
DROP TRIGGER IF EXISTS `trigger_name`;

(Back to Menu)


Create Procedure

1
2
3
4
5
CREATE PROCEDURE `procedure_users_name` (IN input_name varchar(255), OUT count INT)
BEGIN
SELECT count(*) INTO count FROM `users`
WHERE `name` = input_name;
END;

Read Procedure

1
2
3
SHOW PROCEDURE STATUS;

SHOW CREATE PROCEDURE `procedure_name`;

Delete Procedure

1
DROP PROCEDURE IF EXISTS `procedure_name`;

(Back to Menu)


Create Variable

1
2
3
SET @name = 'bear';

SET @id = LAST_INSERT_ID();

Read Variable

1
select @id;

Delete Variable

1
SET @id = NULL;

(Back to Menu)


ʕ •ᴥ•ʔ:記錄一些常見語法,需要時方便查詢。
大寫及``為非必要,僅用來區分語法及關鍵字。