首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL CRUD 核心語句速查手冊:從庫表操作到多表關聯

     編輯:MySQL 綜合教學

庫/表管理

-- 庫
CREATE DATABASE db_name [CHARACTER SET utf8 COLLATE utf8_general_ci];
SHOW DATABASES;
SHOW CREATE DATABASE db_name;
ALTER DATABASE db_name CHARACTER SET gbk;
DROP DATABASE db_name;

-- 表
CREATE TABLE employee (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20),
  gender VARCHAR(6),
  birthday DATE,
  entry_date DATE,
  job VARCHAR(20),
  salary DOUBLE,
  resume TEXT
);
ALTER TABLE employee ADD image BLOB;
ALTER TABLE employee MODIFY job VARCHAR(60);
ALTER TABLE employee DROP sex;
RENAME TABLE employee TO user;
ALTER TABLE user CHARACTER SET utf8;
ALTER TABLE user CHANGE name username VARCHAR(20);
SHOW TABLES;
SHOW CREATE TABLE user;
DESC user;
DROP TABLE user;

數據增刪改查 (CRUD)

-- 增
INSERT INTO employee (id,name,sex,birthday,salary,entry_date,resume)
VALUES (1,'zhangsan','male','1987-11-23',1500,'2010-2-18','good boy');
INSERT INTO employee VALUES (2,'wangwu','male','1988-11-23',1200,'2010-2-18','good boy'),
(3,'xiaohong','female','1983-11-23',1800,'2010-2-18','good girl');

-- 改
UPDATE employee SET salary=5000;
UPDATE employee SET salary=3000 WHERE name='zhangsan';
UPDATE employee SET salary=salary+1000 WHERE name='xiaohong';

-- 刪
DELETE FROM employee WHERE name='趙楠';
TRUNCATE employee;  -- 高效清空

-- 查
SELECT * FROM student;
SELECT name, english FROM student;
SELECT DISTINCT english FROM student;
SELECT name, english+10 AS eng_bonus FROM student;
SELECT name, english+chinese+math AS total FROM student;
SELECT * FROM student WHERE english > 90;
SELECT * FROM student WHERE english BETWEEN 65 AND 85;
SELECT * FROM student WHERE math IN (89,90,91);
SELECT * FROM student WHERE name LIKE '李%';
SELECT * FROM student WHERE name LIKE '李_';
SELECT * FROM student WHERE math>80 AND chinese>80;
SELECT * FROM student WHERE english>80 OR (chinese+english+math)>200;
SELECT * FROM student ORDER BY math;
SELECT *, chinese+math+english AS total FROM student ORDER BY total DESC;

聚合與分組


SELECT COUNT(*) FROM student;
SELECT COUNT(*) FROM student WHERE math>90;
SELECT SUM(math), SUM(chinese), SUM(english) FROM student;
SELECT AVG(chinese) FROM student;
SELECT MAX(chinese), MIN(chinese) FROM student;

SELECT product, SUM(price) FROM orders GROUP BY product;
SELECT product, SUM(price) FROM orders GROUP BY product HAVING SUM(price)>100;
SELECT * FROM orders WHERE price>20 GROUP BY product ORDER BY price;

約束與關係

  • 主鍵:PRIMARY KEY (id) 或 PRIMARY KEY (firstname, lastname)
  • 自增:id INT PRIMARY KEY AUTO_INCREMENT
  • 外鍵:CONSTRAINT fk_name FOREIGN KEY (col) REFERENCES parent(id)
  • 一對多:部門-員工
  • 多對多:師生中間表 tea_stu
  • 一對一:人-身份證(共用主鍵)

多表查詢模式

-- 隱式內連接(笛卡爾積 + WHERE 過濾)
SELECT e.* FROM department d, employee e
WHERE e.departmentid = d.id AND d.name='開發部';

-- 顯式 JOIN(推薦)
SELECT e.* FROM employee e
JOIN department d ON e.departmentid = d.id
WHERE d.name='開發部';

備份與恢復


mysqldump -uroot -p db_name > backup.sql
mysql -uroot -p db_name < backup.sql
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved