Mysql入门基础必备知识

MySQL中的SQL语句是关系型数据库管理系统操作的核心,涵盖了数据定义、数据操作、数据查询和数据控制等多个方面。
以下是对MySQL中SQL语句所有重要知识的归纳:
一、SQL语句分类
数据定义语言(DDL):用于定义数据库对象,如表、索引、视图等。
创建数据库和表:

使用CREATE DATABASE创建数据库,使用CREATE TABLE创建表。

修改数据库和表:
使用ALTER DATABASE修改数据库属性,使用ALTER TABLE修改表结构。

删除数据库和表:
使用DROP DATABASE删除数据库,使用DROP TABLE删除表。

数据操作语言(DML):用于对数据库中的数据进行增、删、改、查操作。

插入数据:使用INSERT INTO语句向表中插入数据。

更新数据:使用UPDATE语句修改表中的现有数据。

删除数据:使用DELETE FROM语句删除表中的数据。

查询数据:虽然查询通常被视为单独的一类(DQL),但在DML中也包含基本的SELECT查询语句。

数据查询语言(DQL):专门用于查询数据库中的数据。

基本查询:使用SELECT语句从表中检索数据。

条件查询:使用WHERE子句对查询结果进行过滤。

排序和分组:使用ORDER BY对查询结果进行排序,使用GROUP BY对查询结果进行分组。

聚合函数:如SUM()、AVG()、MAX()、MIN()和COUNT()等,用于对分组或整个结果集进行统计计算。

数据控制语言(DCL):用于定义数据库的访问权限和安全级别。

授予权限:使用GRANT语句为用户授予特定的数据库权限。

撤销权限:使用REVOKE语句撤销用户的数据库权限。

二、SQL语句的书写规范

大小写:MySQL的SQL语句不区分大小写,但为了提高可读性,通常建议关键字使用大写,如表名、列名等使用小写。

注释:SQL语句中可以使用单行注释(–或#)和多行注释(//)来添加说明或备注。

分号:SQL语句以分号(;)结尾,表示语句的结束。

空格和缩进:可以使用空格和缩进来增强语句的可读性。

三、高级SQL语句和概念
连接查询:包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)等,用于从多个表中检索数据。

子查询:在WHERE子句或HAVING子句中嵌套另一个SQL语句,用于实现更复杂的查询逻辑。

视图:使用CREATE VIEW语句创建视图,视图是一个虚拟表,基于SQL查询的结果集。

存储过程和函数:存储过程是一组为了完成特定功能的SQL语句集合,可以使用CREATE PROCEDURE创建存储过程。函数则通常用于执行特定的计算或操作,并返回一个值。

事务控制:使用COMMIT、ROLLBACK和SAVEPOINT等语句来管理数据库事务,确保数据的一致性和完整性。

四、注意事项和优化建议
避免SQL注入:通过使用参数化查询或预编译语句来防止SQL注入攻击。

索引优化:为经常查询的列创建索引,以提高查询性能。但需要注意索引的维护成本和存储开销。

查询优化:使用EXPLAIN语句分析查询计划,找出性能瓶颈并进行优化。例如,避免使用SELECT *来选择所有列,只选择需要的列;使用合适的连接类型和条件来减少数据扫描量等。

事务管理:合理控制事务的大小和持续时间,避免长时间占用数据库资源导致性能下降或死锁等问题。

综上所述,MySQL中的SQL语句涵盖了数据定义、操作、查询和控制等多个方面。掌握这些语句的书写规范、功能和优化建议对于提高数据库操作效率和数据安全性至关重要。

以下是对MySQL中SQL语句各个重要知识点的例子的详细归纳:
一、数据定义语言(DDL)
创建数据库和表
创建数据库

CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
创建表

CREATE TABLE students (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  age INT,
  email VARCHAR(100)
) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

修改数据库和表
修改表结构(添加字段)

ALTER TABLE students ADD COLUMN gender VARCHAR(10);

修改表结构(修改字段类型)

ALTER TABLE students MODIFY COLUMN age BIGINT;

删除数据库和表
删除数据库

DROP DATABASE db_name;

删除表

DROP TABLE students;

二、数据操作语言(DML)
插入数据
插入单条数据

INSERT INTO students (name, age, email) VALUES ('Alice', 20, '[email protected]');

插入多条数据

INSERT INTO students (name, age, email) VALUES 
('Bob', 22, '[email protected]'),
('Charlie', 23, '[email protected]');

更新数据
更新特定数据

UPDATE students SET age = 24 WHERE name = 'Alice';

删除数据
删除特定数据

DELETE FROM students WHERE name = 'Bob';

查询数据(虽然查询通常被视为DQL的一部分,但在DML中也包含基本的SELECT查询语句)
查询所有数据

SELECT * FROM students;

查询特定数据

SELECT name, age FROM students WHERE age > 20;

三、数据查询语言(DQL)
基本查询
查询特定列

SELECT name, email FROM students;

条件查询
使用WHERE子句

SELECT * FROM students WHERE age = 22;

排序和分组
排序

SELECT * FROM students ORDER BY age DESC;

分组

SELECT gender, COUNT(*) AS count FROM students GROUP BY gender;

聚合函数
计算平均年龄

SELECT AVG(age) AS average_age FROM students;

四、数据控制语言(DCL)
授予权限
授予用户SELECT权限

GRANT SELECT ON db_name.* TO 'username'@'host';

撤销权限
撤销用户SELECT权限

REVOKE SELECT ON db_name.* FROM 'username'@'host';

五、高级SQL语句和概念
连接查询
内连接

SELECT s.name, c.course_name 
FROM students s 
INNER JOIN courses c ON s.course_id = c.id;

子查询
在WHERE子句中使用子查询

SELECT * FROM students 
WHERE age > (SELECT AVG(age) FROM students);

视图
创建视图

CREATE VIEW student_view AS 
SELECT name, email FROM students WHERE age > 20;

存储过程
创建存储过程

CREATE PROCEDURE GetStudentByName(IN student_name VARCHAR(100))
BEGIN
  SELECT * FROM students WHERE name = student_name;
END;

事务控制
开始事务、提交和回滚

START TRANSACTION;

– 执行一系列SQL语句

COMMIT; -- 或 ROLLBACK;

六、注意事项和优化建议
避免SQL注入
使用参数化查询

PREPARE stmt FROM 'SELECT * FROM students WHERE name = ?';
SET @name = 'Alice';
EXECUTE stmt USING @name;

索引优化
创建索引

CREATE INDEX idx_name ON students(name);

查询优化
使用EXPLAIN分析查询计划

EXPLAIN SELECT * FROM students WHERE age > 20;

以上例子展示了MySQL中SQL语句各个重要知识点的应用。通过掌握这些知识点和技巧,可以更有效地进行数据库操作和。

你可能感兴趣的:(数据库,mysql)