)
1.MySQL GROUP BY 语句SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1;2.MySQL 连接的使用SELECT, UPDATE 和 DELETE 语句中使用 MySQL 的JOIN来联合多表查询。INNER JOIN内连接,或等值连接获取两个表中字段匹配关系的记录。LEFT JOIN左连接获取左表所有记录即使右表没有对应匹配的记录。RIGHT JOIN右连接与 LEFT JOIN 相反用于获取右表所有记录即使左表没有对应匹配的记录。2.1 INNER JOIN返回两个表中满足连接条件的匹配行2.2 LEFT JOIN返回左表的所有行并包括右表中匹配的行如果右表中没有匹配的行将返回 NULL 值2.3 RIGHT JOINRIGHT JOIN 返回右表的所有行并包括左表中匹配的行如果左表中没有匹配的行将返回 NULL 值如何区分左右表3. MySQL 正则表达式使用 REGEXP 进行模式匹配(Regular Expression)SELECT column1, column2, ... FROM table_name WHERE column_name REGEXP pattern;RLIKE 是 MySQL 中用于进行正则表达式匹配的运算符与 REGEXP 是一样的RLIKE 和 REGEXP 可以互换使用没有区别。SELECT column1, column2, ... FROM table_name WHERE column_name RLIKE pattern;4. MySQL 事务MySQL 事务主要用于处理操作量大复杂度高的数据。比如说在人员管理系统中你删除一个人员你既需要删除人员的基本资料也要删除和该人员相关的信息如信箱文章等等这些数据库操作语句就构成一个事务事务是必须满足4个条件ACID原子性Atomicity或称不可分割性、一致性Consistency、隔离性Isolation又称独立性、持久性Durability。原子性一个事务transaction中的所有操作要么全部完成要么全部不完成不会结束在中间某个环节。事务在执行过程中发生错误会被回滚Rollback到事务开始前的状态就像这个事务从来没有执行过一样。一致性在事务开始之前和事务结束以后数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。隔离性数据库允许多个并发事务同时对其数据进行读写和修改的能力隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别包括读未提交Read uncommitted、读提交read committed、可重复读repeatable read和串行化Serializable。持久性事务处理结束后对数据的修改就是永久的即便系统故障也不会丢失。事务控制语句BEGIN 或 START TRANSACTION 显式地开启一个事务COMMIT 也可以使用 COMMIT WORK不过二者是等价的。COMMIT 会提交事务并使已对数据库进行的所有修改成为永久性的ROLLBACK 也可以使用 ROLLBACK WORK不过二者是等价的。回滚会结束用户的事务并撤销正在进行的所有未提交的修改SAVEPOINT identifierSAVEPOINT 允许在事务中创建一个保存点一个事务中可以有多个 SAVEPOINTRELEASE SAVEPOINT identifier 删除一个事务的保存点当没有指定的保存点时执行该语句会抛出一个异常ROLLBACK TO identifier 把事务回滚到标记点SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。MYSQL 事务处理主要有两种方法1、用 BEGIN, ROLLBACK, COMMIT 来实现BEGIN 或 START TRANSACTION开用于开始一个事务。ROLLBACK事务回滚取消之前的更改。COMMIT事务确认提交事务使更改永久生效。2、直接用 SET 来改变 MySQL 的自动提交模式:SET AUTOCOMMIT0禁止自动提交SET AUTOCOMMIT1开启自动提交BEGIN 或 START TRANSACTION -- 用于开始一个事务BEGIN; -- 或者使用 START TRANSACTION;COMMIT -- 用于提交事务将所有的修改永久保存到数据库COMMIT;ROLLBACK -- 用于回滚事务撤销自上次提交以来所做的所有更改ROLLBACK;SAVEPOINT -- 用于在事务中设置保存点以便稍后能够回滚到该点SAVEPOINT savepoint_name;ROLLBACK TO SAVEPOINT -- 用于回滚到之前设置的保存点ROLLBACK TO SAVEPOINT savepoint_name;5. MySQL ALTER 命令ALTER 命令用于修改数据库、表和索引等对象的结构ALTER 命令允许你添加、修改或删除数据库对象并且可以用于更改表的列定义、添加约束、创建和删除索引等操作。1. 添加列ALTER TABLE table_name ADD COLUMN new_column_name datatype;以下 SQL 语句在 employees 表中添加了一个名为 birth_date 的日期列ALTER TABLE employees ADD COLUMN birth_date DATE;2. 修改列的数据类型ALTER TABLE TABLE_NAME MODIFY COLUMN column_name new_datatype;以下 SQL 语句将 employees 表中的 salary 列的数据类型修改为 DECIMAL(10,2)ALTER TABLE employees MODIFY COLUMN salary DECIMAL(10,2);3. 修改列名ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name datatype;以下 SQL 语句将 employees 表中的某个列的名字由 old_column_name 修改为 new_column_name并且可以同时修改数据类型ALTER TABLE employees CHANGE COLUMN old_column_name new_column_name VARCHAR(255);4. 删除列ALTER TABLE table_name DROP COLUMN column_name;以下 SQL 语句将 employees 表中的 birth_date 列删除ALTER TABLE employees DROP COLUMN birth_date;5. 添加 PRIMARY KEYALTER TABLE table_name ADD PRIMARY KEY (column_name);以下 SQL 语句在 employees 表中添加了一个主键ALTER TABLE employees ADD PRIMARY KEY (employee_id);6. 添加 FOREIGN KEYALTER TABLE child_table ADD CONSTRAINT fk_name FOREIGN KEY (column_name) REFERENCES parent_table (column_name);以下 SQL 语句在 orders 表中添加了一个外键关联到 customers 表的 customer_id 列ALTER TABLE orders ADD CONSTRAINT fk_customer FOREIGN KEY (customer_id) REFERENCES customers (customer_id);7. 修改表名ALTER TABLE old_table_name RENAME TO new_table_name;以下 SQL 语句将表名由 employees 修改为 staffALTER TABLE employees RENAME TO staff;6. MySQL 命令大全6.1 基础命令操作命令连接到 MySQL 数据库mysql -u 用户名 -p查看所有数据库SHOW DATABASES;选择一个数据库USE 数据库名;查看所有表SHOW TABLES;查看表结构DESCRIBE 表名;或SHOW COLUMNS FROM 表名;创建一个新数据库CREATE DATABASE 数据库名;删除一个数据库DROP DATABASE 数据库名;创建一个新表CREATE TABLE 表名 (列名1 数据类型 [约束], 列名2 数据类型 [约束], ...);删除一个表DROP TABLE 表名;插入数据INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);查询数据SELECT 列1, 列2, ... FROM 表名 WHERE 条件;更新数据UPDATE 表名 SET 列1 值1, 列2 值2, ... WHERE 条件;删除数据DELETE FROM 表名 WHERE 条件;创建用户CREATE USER 用户名主机 IDENTIFIED BY 密码;授权用户GRANT 权限 ON 数据库名.* TO 用户名主机;刷新权限FLUSH PRIVILEGES;查看当前用户SELECT USER();退出 MySQLEXIT;6.2 数据库相关命令操作命令创建数据库CREATE DATABASE 数据库名;删除数据库DROP DATABASE 数据库名;修改数据库编码格式和排序规则ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 编码格式 DEFAULT COLLATE 排序规则;查看所有数据库SHOW DATABASES;查看数据库详细信息SHOW CREATE DATABASE 数据库名;选择数据库USE 数据库名;查看数据库的状态信息SHOW STATUS;查看数据库的错误信息SHOW ERRORS;查看数据库的警告信息SHOW WARNINGS;查看数据库的表SHOW TABLES;查看表的结构DESC 表名;DESCRIBE 表名;SHOW COLUMNS FROM 表名;EXPLAIN 表名;创建表CREATE TABLE 表名 (列名1 数据类型 [约束], 列名2 数据类型 [约束], ...);删除表DROP TABLE 表名;修改表结构ALTER TABLE 表名 ADD 列名 数据类型 [约束];ALTER TABLE 表名 DROP 列名;ALTER TABLE 表名 MODIFY 列名 数据类型 [约束];查看表的创建 SQLSHOW CREATE TABLE 表名;6.3 数据表相关命令操作命令创建表CREATE TABLE 表名 (列名1 数据类型 [约束], 列名2 数据类型 [约束], ...);删除表DROP TABLE 表名;修改表结构添加列:ALTER TABLE 表名 ADD 列名 数据类型 [约束];删除列:ALTER TABLE 表名 DROP 列名;修改列:ALTER TABLE 表名 MODIFY 列名 数据类型 [约束];重命名列:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束];查看表结构DESC 表名;DESCRIBE 表名;SHOW COLUMNS FROM 表名;EXPLAIN 表名;查看表的创建 SQLSHOW CREATE TABLE 表名;查看表中的所有数据SELECT * FROM 表名;插入数据INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);更新数据UPDATE 表名 SET 列1 值1, 列2 值2, ... WHERE 条件;删除数据DELETE FROM 表名 WHERE 条件;查看表的索引SHOW INDEX FROM 表名;创建索引CREATE INDEX 索引名 ON 表名 (列名);删除索引DROP INDEX 索引名 ON 表名;查看表的约束SHOW CREATE TABLE 表名;(约束信息会包含在创建表的 SQL 中)查看表的统计信息SHOW TABLE STATUS LIKE 表名;6.4 MySQL 事务相关命令操作命令开始事务START TRANSACTION;或BEGIN;提交事务COMMIT;回滚事务ROLLBACK;查看当前事务的状态SHOW ENGINE INNODB STATUS;(可查看 InnoDB 存储引擎的事务状态)锁定表以进行事务操作LOCK TABLES 表名 WRITE;或LOCK TABLES 表名 READ;释放锁定的表UNLOCK TABLES;设置事务的隔离级别SET TRANSACTION ISOLATION LEVEL READ COMMITTED;SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;