要全面介绍 MySQL 中的所有常用语句,我们需要涵盖以下几大类:
- 数据定义语言(DDL, Data Definition Language):创建和修改数据库结构的语句。
- 数据操作语言(DML, Data Manipulation Language):用于查询和更改数据库中数据的语句。
- 数据控制语言(DCL, Data Control Language):管理数据库用户权限的语句。
- 事务控制语言(TCL, Transaction Control Language):管理事务处理的语句。
进入mysql shell
mysql -u root -p
1. 数据定义语言 (DDL)
1.1 CREATE 语句
CREATE
语句用于创建数据库、表、视图、索引等对象。
-
创建数据库
CREATE DATABASE my_database;
-
创建表
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, age INT, position VARCHAR(100), hire_date DATE, salary DECIMAL(10, 2) );
-
创建索引
CREATE INDEX idx_name ON employees (name);
1.2 ALTER 语句
ALTER
语句用于修改现有数据库对象的结构。
-
添加列
ALTER TABLE employees ADD COLUMN phone VARCHAR(20);
-
修改列的数据类型
ALTER TABLE employees MODIFY COLUMN age SMALLINT;
-
重命名列
ALTER TABLE employees CHANGE COLUMN phone contact_number VARCHAR(20);
-
删除列
ALTER TABLE employees DROP COLUMN contact_number;
1.3 DROP 语句
DROP
语句用于删除数据库对象,如数据库、表、视图等。
-
删除表
DROP TABLE employees;
-
删除数据库
DROP DATABASE my_database;
-
删除索引
DROP INDEX idx_name ON employees;
1.4 TRUNCATE 语句
TRUNCATE
语句用于删除表中的所有数据,但保留表结构。
TRUNCATE TABLE employees;
2. 数据操作语言 (DML)
2.1 SELECT 语句
SELECT
语句用于从一个或多个表中检索数据。
-
查询所有数据
SELECT * FROM employees;
-
带条件的查询
SELECT name, age FROM employees WHERE age > 30;
-
聚合查询
SELECT position, AVG(salary) AS avg_salary FROM employees GROUP BY position;
-
连接查询(内连接和左连接)
SELECT e.name, d.department_name FROM employees e INNER JOIN departments d ON e.department_id = d.id; SELECT e.name, d.department_name FROM employees e LEFT JOIN departments d ON e.department_id = d.id;
-
子查询
SELECT name FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
2.2 INSERT 语句
INSERT
语句用于向表中插入新数据。
-
插入单行数据
INSERT INTO employees (name, age, position, hire_date, salary) VALUES ('John Doe', 30, 'Developer', '2022-01-01', 60000.00);
-
插入多行数据
INSERT INTO employees (name, age, position, hire_date, salary) VALUES ('Jane Smith', 28, 'Designer', '2023-01-01', 55000.00), ('Mike Johnson', 35, 'Manager', '2021-05-10', 80000.00);
2.3 UPDATE 语句
UPDATE
语句用于修改表中的现有数据。
-
更新特定行的数据
UPDATE employees SET salary = salary * 1.10 WHERE name = 'John Doe';
-
更新所有行的数据
UPDATE employees SET age = age + 1;
2.4 DELETE 语句
DELETE
语句用于删除表中的数据。
-
删除特定行的数据
DELETE FROM employees WHERE name = 'John Doe';
-
删除所有行的数据
DELETE FROM employees;
3. 数据控制语言 (DCL)
3.1 GRANT 语句
GRANT
语句用于授予用户对数据库对象的权限。
GRANT SELECT, INSERT, UPDATE ON my_database.employees TO 'user'@'localhost';
3.2 REVOKE 语句
REVOKE
语句用于撤销用户对数据库对象的权限。
REVOKE INSERT, UPDATE ON my_database.employees FROM 'user'@'localhost';
4. 事务控制语言 (TCL)
4.1 START TRANSACTION, COMMIT 和 ROLLBACK 语句
这些语句用于管理数据库事务,确保数据的一致性和完整性。
-
开始事务
START TRANSACTION;
-
提交事务
COMMIT;
-
回滚事务
ROLLBACK;
4.2 SAVEPOINT 和 ROLLBACK TO SAVEPOINT
SAVEPOINT
语句用于在事务中创建一个保存点,可以回滚到该点而不影响整个事务。
-
创建保存点
SAVEPOINT savepoint1;
-
回滚到保存点
ROLLBACK TO SAVEPOINT savepoint1;
5. 索引和视图操作
5.1 CREATE VIEW 语句
CREATE VIEW
语句用于创建一个视图(虚拟表)。
CREATE VIEW employee_view AS
SELECT name, position, salary FROM employees WHERE salary > 50000;
5.2 DROP VIEW 语句
DROP VIEW
语句用于删除视图。
DROP VIEW employee_view;
6. 实用程序命令
6.1 SHOW 语句
SHOW
语句用于显示数据库的状态信息,如表、列、索引等。
-
显示所有数据库
SHOW DATABASES;
-
显示当前数据库的所有表
SHOW TABLES;
-
显示表的结构
SHOW COLUMNS FROM employees;
6.2 DESCRIBE 语句
DESCRIBE
语句用于显示表结构的详细信息。
DESCRIBE employees;
6.3 打开和关闭Mysql服务
- Windows
net start mysql // 打开MySQL服务
net stop mysql // 关闭MySQL服务
- Linux
sudo systemctl start mysql
sudo systemctl stop mysql
sudo systemctl restart mysql
sudo service mysql start
sudo service mysql stop
总结
这些 SQL 语句涵盖了 MySQL 中的所有主要操作。通过掌握这些语句,你可以有效地管理数据库的创建、修改、查询、控制和优化。每种类型的语句都有其特定的用途和功能,它们共同组成了一个完整的数据库管理系统操作集。