mysql 常用知识点总结

MySQL 是一种广泛使用的关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)。了解 MySQL 的语法对数据库管理和操作非常重要。以下是 MySQL 语法的详细完整解释,涵盖基本概念、创建表、查询、修改数据等内容。

1. 基础概念

数据库 (Database): 数据库是存储数据的容器,里面可以包含多个表。

表 (Table): 表是数据库中的核心元素,包含行(记录)和列(字段)。

行 (Row): 一行数据代表表中的一条记录。

列 (Column): 列是数据的属性,每个列都有一个特定的数据类型。

数据类型 (Data Types): 定义列中数据的类型,如整数、浮点数、字符串、日期等。

2. 常见数据类型

数据类型

描述

INT

整数

FLOAT

浮点数

VARCHAR

变长字符串

CHAR

固定长度字符串

TEXT

大文本

DATE

日期(格式:YYYY-MM-DD)

DATETIME

日期和时间(格式:YYYY-MM-DD HH:MM:SS)

3. 数据库管理

创建数据库

CREATE DATABASE db_name;

db_name: 数据库名称。

选择数据库

USE db_name;

查看现有数据库

SHOW DATABASES;

删除数据库

DROP DATABASE db_name;

4. 表操作

创建表

CREATE TABLE table_name (

column_name1 data_type constraints,

column_name2 data_type constraints,

...

);

table_name: 表的名称。

data_type: 列的数据类型。

constraints: 列的约束,如 PRIMARY KEY、NOT NULL 等。

示例:

CREATE TABLE students (

id INT PRIMARY KEY,

name VARCHAR(50) NOT NULL,

age INT,

enrollment_date DATE

);

查看表结构

DESCRIBE table_name;

删除表

DROP TABLE table_name;

修改表结构

添加新列:ALTER TABLE table_name ADD new_column_name data_type;

修改列类型:ALTER TABLE table_name MODIFY column_name new_data_type;

删除列:ALTER TABLE table_name DROP COLUMN column_name;

5. 数据操作

5.1 插入数据

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

示例:

INSERT INTO students (id, name, age, enrollment_date) VALUES (1, 'John Doe', 20, '2023-09-01');

5.2 查询数据

基本查询

SELECT column1, column2, ... FROM table_name;

示例:

SELECT name, age FROM students;

查询所有列

SELECT * FROM table_name;

使用条件过滤查询

SELECT column1, column2, ... FROM table_name WHERE condition;

示例:

SELECT * FROM students WHERE age > 18;

排序

SELECT * FROM table_name ORDER BY column1 [ASC|DESC];

示例:

SELECT * FROM students ORDER BY age DESC;

限制查询结果

SELECT * FROM table_name LIMIT number;

示例:

SELECT * FROM students LIMIT 5;

聚合函数

COUNT():返回记录数

SUM():返回总和

AVG():返回平均值

MIN():返回最小值

MAX():返回最大值

示例:

SELECT COUNT(*) FROM students;

5.3 更新数据

UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

示例:

UPDATE students SET age = 21 WHERE id = 1;

5.4 删除数据

DELETE FROM table_name WHERE condition;

示例:

DELETE FROM students WHERE id = 1;

6. 连接 (JOIN) 操作

内连接 (INNER JOIN): 返回两个表中匹配的记录。

SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;

左连接 (LEFT JOIN): 返回左表中的所有记录,即使右表中没有匹配。

SELECT columns FROM table1 LEFT JOIN table2 ON table1.column = table2.column;

右连接 (RIGHT JOIN): 返回右表中的所有记录,即使左表中没有匹配。

SELECT columns FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;

7. 索引 (Index)

索引用于提高查询速度。

创建索引

CREATE INDEX index_name ON table_name (column_name);

删除索引

DROP INDEX index_name ON table_name;

8. 事务 (Transaction)

事务确保一组 SQL 操作要么全部执行,要么全部不执行。

开始事务

START TRANSACTION;

提交事务

COMMIT;

回滚事务

ROLLBACK;

9. 视图 (View)

视图是基于 SQL 查询的虚拟表。

创建视图

CREATE VIEW view_name AS SELECT columns FROM table_name WHERE condition;

删除视图

DROP VIEW view_name;

10. 存储过程 (Stored Procedure)

存储过程是一组预编译的 SQL 语句,封装起来可以复用。

创建存储过程

CREATE PROCEDURE procedure_name (parameters)

BEGIN

SQL_statements;

END;

调用存储过程

CALL procedure_name(parameters);

删除存储过程

DROP PROCEDURE procedure_name;

11. 触发器 (Trigger)

触发器在某个事件(如插入、更新或删除)发生时自动执行。

创建触发器

CREATE TRIGGER trigger_name BEFORE|AFTER INSERT|UPDATE|DELETE ON table_name

FOR EACH ROW

BEGIN

SQL_statements;

END;

删除触发器

DROP TRIGGER trigger_name;

12. 权限管理

创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

赋予权限

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';

撤销权限

REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';

删除用户

DROP USER 'username'@'host';

13. 常用工具

EXPLAIN: 查看查询的执行计划。

EXPLAIN SELECT * FROM table_name;

SHOW PROCESSLIST: 查看当前运行的 SQL 查询。

SHOW PROCESSLIST;

这是 MySQL 的完整语法概述,适用于基本数据库操作、数据查询、表结构管理、索引、事务、存储过程等内容。通过学习和使用这些语法,能够有效管理和查询数据库。