目录
MySql语句都有哪些
MySQL常用的SQL语句主要可以分为以下几类:
- 数据查询语言(DQL): 主要包括SELECT语句,用于对数据库进行查询。
- 数据操控语言(DML): 主要包括UPDATE、DELETE、INSERT INTO语句,用于对数据库中的数据进行增加、删除、修改。
- 数据定义语言(DDL): 主要包括CREATE、DROP、ALTER等语句,用于定义或修改数据库结构。
- 数据控制语言(DCL): 主要包括GRANT、REVOKE等语句,用于对用户的权限进行控制。
以下是一些具体的MySQL语句实例:
- SELECT: 用于从数据库中选取数据,如SELECT * FROM table_name;
- UPDATE: 用于修改表中的数据,如UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
- DELETE: 用于删除表中的数据,如DELETE FROM table_name WHERE condition;
- INSERT INTO:用于向表中插入数据,如INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
- CREATE DATABASE / TABLE:用于创建数据库或表,如CREATE DATABASE db_name; 或 CREATE TABLE table_name (column1 datatype, column2 datatype, column3 datatype, ...);
- ALTER TABLE:用于修改表结构,如ALTER TABLE table_name ADD column_name datatype;
- DROP DATABASE / TABLE:用于删除数据库或表,如DROP DATABASE db_name; 或 DROP TABLE table_name;
- GRANT: 用于授权,如GRANT privilege ON db_name.table_name TO 'user'@'localhost';
- REVOKE: 用于取消用户权限,如REVOKE privilege ON db_name.table_name FROM 'user'@'localhost';
按条件查询数据的语句
在MySQL中,可以使用SELECT语句配合WHERE子句按条件查询数据。例如:
- 查询Employees表中所有Salary (工资)大于5000的员工
- SELECT * FROM Employees WHERE Salary > 5000;
- 查询Employees表中名字为"John"的员工
- SELECT * FROM Employees WHERE Name = 'John';
- 查询Employees表中部门为"Sales",并且工资大于3000的员工
- SELECT * FROM Employees WHERE Department = 'Sales' AND Salary > 3000;
- 查询Employees表中部门为"Sales"或者"Marketing"的员工
- SELECT * FROM Employees WHERE Department = 'Sales' OR Department = 'Marketing';
- 查询Employees表中名字以"J"开头的员工
- SELECT * FROM Employees WHERE Name LIKE 'J%';
- 查询Employees表中ID在某个范围内的员工(比如ID在1到10之间)
- SELECT * FROM Employees WHERE ID BETWEEN 1 AND 10;
这些都是基本的数据查询语句,使得我们可以按照不同的条件对数据库数据进行过滤和提取。
按条件修改数据的语句
在MySQL中,可以使用UPDATE语句配合WHERE子句按条件修改数据。以下是一些示例:
- 修改Employees表中名字为"John"的员工的薪资为6000:
UPDATE Employees SET Salary = 6000 WHERE Name = 'John';
- 修改Employees表中ID为5的员工的姓名和薪资:
UPDATE Employees SET Name = 'Tom', Salary = 5000 WHERE ID = 5;
- 修改Employees表中所有薪资小于3000的员工薪资为3000:
UPDATE Employees SET Salary = 3000 WHERE Salary < 3000;
- 修改Employees表中部门为"Sales"的所有员工的薪资为5500:
UPDATE Employees SET Salary = 5500 WHERE Department = 'Sales';
注意:在没有WHERE子句的情况下,UPDATE语句将修改表中的所有行。因此,务必在使用UPDATE语句的时候,要确保你的WHERE子句指定的条件是正确的,以防止误操作。
按条件删除数据的语句
在MySQL中,可以使用DELETE语句配合WHERE子句按条件删除数据。以下是一些示例:
- 从Employees表中删除名字为"John"的所有员工的记录:
DELETE FROM Employees WHERE Name = 'John';
- 从Employees表中删除薪资高于6000的所有员工的记录:
DELETE FROM Employees WHERE Salary > 6000;
- 从Employees表中删除部门是"Sales"的所有员工的记录:
DELETE FROM Employees WHERE Department = 'Sales';
注意:不带WHERE子句的DELETE语句将删除表中的所有记录。因此,使用DELETE语句时特别需要注意,确保WHERE子句的条件设置正确,避免删除错误的数据。
按条件插入数据的语句
在MySQL中,我们并不直接使用条件来插入数据,通常的INSERT语句格式如下:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
这种语句会直接将指定的值插入到表中。插入的值不取决于任何条件,而是预先给定的。
然而,我们可以用一种叫做INSERT SELECT的方法,从一个或多个其他表中选择并插入数据到目标表中。这种方法可以根据某个表中的数据情况来决定如何向另一个表插入数据。
以下是一个例子:
INSERT INTO table2 (column1, column2, ...)
SELECT column1, column2, ...
FROM table1
WHERE condition;
在这个例子中,我们是按照从table1中的某个条件选择的数据来向table2插入数据的。
例如,如果我们想要把所有工资高于5000的员工数据从Employees表复制到一个叫做HighEarners的表中,可以这样写:
INSERT INTO HighEarners (EmployeeID, Name, Salary)
SELECT EmployeeID, Name, Salary
FROM Employees
WHERE Salary 5000;
按条件修改表的语句
在MySQL中,通常会使用 ALTER TABLE 语句按条件修改表的操作,包括添加、删除和修改列。
以下为一些示例:
- 添加列 - 在 "Employees" 表中添加一个名为 "Birthdate" 的列:
- ALTER TABLE Employees ADD Birthdate DATE;
- 删除列 - 在 "Employees" 表中删除 "Birthdate" 列:
- ALTER TABLE Employees DROP COLUMN Birthdate;
- 修改列 - 在 "Employees" 表中修改 "Salary" 列的数据类型:
- ALTER TABLE Employees MODIFY COLUMN Salary DECIMAL(10,2);
- 修改表名 - 将表名从 "Employees" 更改为 "Staff":
- ALTER TABLE Employees RENAME TO Staff;
注意,对于添加列和修改列,还可以使用 "AFTER column_name" 或 "FIRST" 子句来指定新列的位置:
- ALTER TABLE Employees ADD Birthdate DATE AFTER Name; 这条语句会在 "Name" 列之后添加新的 "Birthdate" 列。
- ALTER TABLE Employees ADD Birthdate DATE FIRST; 这条语句会将新的 "Birthdate" 列添加为表的第一列。
需要注意的是,ALTER TABLE 没有直接的条件设置,所有操作对于表的所有行来说都是全局的。如果想按某种条件来更改数据,应该使用 UPDATE 语句。
按条件创建数据库的语句
在MySQL中,创建数据库通常使用 CREATE DATABASE 语句,例如:
CREATE DATABASE database_name;
但是,不能根据某些条件来创建数据库,因为数据库的创建不依赖于任何条件。只有在创建表(CREATE TABLE)或插入数据(INSERT INTO)的时候,才会根据一些条件进行。
如果你希望在数据库已经存在的时候避免错误,你可以使用 IF NOT EXISTS,例如:
CREATE DATABASE IF NOT EXISTS database_name;
这个语句将只在该名称的数据库不存在的情况下创建一个新的数据库,如果数据库已经存在,则不执行任何操作也不返回错误。
按条件删除数据库的语句
在MySQL中,删除数据库的语句是DROP DATABASE database_name;。然而请注意,数据库的删除是不能按条件进行的。一旦执行了删除数据库的命令,那么这个数据库以及其中所有的表和数据都会被永久删除,无法恢复。
因此在删除数据库之前,请确认你真的想要删除这个数据库,以防止丢失重要的数据。同时,删除数据库的操作一般需要数据库管理员权限,如果你没有足够的权限,可能无法删除数据库。
另外,如果你希望仅在数据库存在时才执行删除操作,可以使用DROP DATABASE IF EXISTS database_name;语句,如果数据库存在则删除,如果不存在不会有任何操作也不会抛出异常。
按条件授予数据库权限的语句
在MySQL中,用于授予权限的语句是GRANT,其一般格式如下:
GRANT privileges ON database.table TO 'username'@'hostname';
这其中的privileges可以是一项或多项权限,例如:SELECT, INSERT, UPDATE, DELETE, ALL等。database和table分别表示数据库和表的名称。username和hostname指的是被授予权限的用户的用户名和主机。
例如,以下语句将授予用户john在mydb数据库上的所有权限:
GRANT ALL ON mydb.* TO 'john'@'localhost';
另一个例子,以下语句仅授予用户john在mydb数据库的mytable表上执行SELECT查询的权限:
GRANT SELECT ON mydb.mytable TO 'john'@'localhost';
然而请注意,GRANT语句并不支持按条件授予权限。所有的权限设置都是针对指定的数据库、表和用户的。
按条件取消数据库权限的语句
在MySQL中,用于撤销权限的语句是REVOKE,其一般格式如下:
REVOKE privileges ON database.table FROM 'username'@'hostname';
这其中的privileges可以是一项或多项权限,例如:SELECT, INSERT, UPDATE, DELETE, ALL等。database和table分别表示数据库和表的名称。username和hostname指的是被撤销权限的用户的用户名和主机。
例如,以下语句将撤销用户john在mydb数据库上的所有权限:
REVOKE ALL ON mydb.* FROM 'john'@'localhost';
另一个例子,以下语句仅撤销用户john在mydb数据库的mytable表上进行SELECT查询的权限:
REVOKE SELECT ON mydb.mytable FROM 'john'@'localhost';
然而请注意,REVOKE语句并不支持按条件撤销权限。所有的权限撤销都是针对指定的数据库、表和用户的。操作完成后,可能需要使用FLUSH PRIVILEGES;语句使得改变立即生效。