MySQL 数据库基础详细解释和示例

目录

数据库操作关键字

[CREATE DATABASE](#CREATE DATABASE)

USE

[DROP DATABASE](#DROP DATABASE)

表操作关键字

[CREATE TABLE](#CREATE TABLE)

DESCRIBE

[ALTER TABLE](#ALTER TABLE)

[DROP TABLE](#DROP TABLE)

数据操作关键字

[INSERT INTO](#INSERT INTO)

SELECT

UPDATE

DELETE

索引操作关键字

[CREATE INDEX](#CREATE INDEX)

[DROP INDEX](#DROP INDEX)

事务处理关键字

[START TRANSACTION](#START TRANSACTION)

COMMIT

ROLLBACK

多表操作关键字

JOIN


数据库操作关键字

CREATE DATABASE
  • 解释:用于在 MySQL 中创建一个新的数据库。数据库是存储表、视图、存储过程等数据库对象的容器。
  • 示例
sql 复制代码
CREATE DATABASE school_db;

此语句创建了一个名为 school_db 的数据库。

USE
  • 解释:用于指定当前要使用的数据库。在执行对表的操作之前,需要先选择相应的数据库。
  • 示例
sql 复制代码
USE school_db;

执行此语句后,后续的表操作将在 school_db 数据库中进行。

DROP DATABASE
  • 解释:用于删除指定的数据库。删除后,该数据库及其包含的所有对象(如表、视图等)将被永久删除,操作需谨慎。
  • 示例
sql 复制代码
DROP DATABASE school_db;

表操作关键字

CREATE TABLE
  • 解释:用于创建新的表。在定义表时,需要指定表名和各个列的名称、数据类型以及列的约束条件。
  • 示例
sql 复制代码
CREATE TABLE students (
    student_id INT AUTO_INCREMENT PRIMARY KEY,
    student_name VARCHAR(100) NOT NULL,
    age INT,
    gender CHAR(1),
    class_id INT
);
  • AUTO_INCREMENT:为 student_id 列设置自动递增属性,插入新记录时该列会自动生成唯一的递增整数。
  • PRIMARY KEY:将 student_id 列设置为主键,保证每一行记录的 student_id 唯一且不为 NULL
  • NOT NULL:表示 student_name 列的值不能为空。
DESCRIBE
  • 解释 :用于查看表的结构,包括列名、数据类型、是否允许 NULL 值、默认值等信息。
  • 示例
sql 复制代码
DESCRIBE students;
ALTER TABLE
  • 解释:用于修改已存在表的结构,如添加列、删除列、修改列的数据类型等。
  • 示例
    • 添加列
sql 复制代码
ALTER TABLE students ADD COLUMN email VARCHAR(100);
  • 修改列的数据类型
sql 复制代码
ALTER TABLE students MODIFY COLUMN age TINYINT;
  • 删除列
sql 复制代码
ALTER TABLE students DROP COLUMN gender;
DROP TABLE
  • 解释:用于删除指定的表。表删除后,表中的所有数据和相关的索引、约束等都会被永久删除。
  • 示例
sql 复制代码
DROP TABLE students;

数据操作关键字

INSERT INTO
  • 解释:用于向表中插入新记录。可以指定要插入数据的列名和对应的值。
  • 示例
sql 复制代码
INSERT INTO students (student_name, age, class_id)
VALUES ('Alice', 18, 1);

如果要插入多行数据,可以使用以下语法:

sql 复制代码
INSERT INTO students (student_name, age, class_id)
VALUES ('Bob', 19, 2), ('Charlie', 20, 1);
SELECT
  • 解释:用于从表中查询数据。可以指定要查询的列、查询条件、排序方式等。
  • 示例
    • 查询所有列
sql 复制代码
SELECT * FROM students;
  • 查询指定列
sql 复制代码
SELECT student_name, age FROM students;
  • 带条件查询
sql 复制代码
SELECT * FROM students WHERE age > 18;
  • 排序查询
sql 复制代码
SELECT * FROM students ORDER BY age ASC;
  • 分页查询
sql 复制代码
SELECT * FROM students LIMIT 5 OFFSET 10;

此语句从第 11 条记录开始取 5 条记录。

UPDATE
  • 解释:用于修改表中已存在的记录。需要指定要更新的表、更新的列和新值,以及更新的条件。
  • 示例
sql 复制代码
UPDATE students
SET age = age + 1
WHERE class_id = 1;
DELETE
  • 解释:用于从表中删除记录。需要指定要删除记录的表和删除条件。如果不指定条件,将删除表中的所有记录。
  • 示例
sql 复制代码
DELETE FROM students WHERE student_name = 'Alice';

索引操作关键字

CREATE INDEX
  • 解释:用于在表的列上创建索引,以提高查询效率。索引可以加快数据的查找速度,但会增加插入、更新和删除操作的开销。
  • 示例
sql 复制代码
CREATE INDEX idx_student_name ON students (student_name);
DROP INDEX
  • 解释:用于删除已存在的索引。
  • 示例
sql 复制代码
DROP INDEX idx_student_name ON students;

事务处理关键字

START TRANSACTION
  • 解释:用于开始一个新的事务。事务是一组 SQL 语句的集合,这些语句要么全部成功执行,要么全部不执行。
  • 示例
sql 复制代码
START TRANSACTION;
COMMIT
  • 解释 :用于提交事务。当事务中的所有 SQL 语句都成功执行后,使用 COMMIT 语句将事务中的更改永久保存到数据库中。
  • 示例
sql 复制代码
-- 开始事务
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
-- 提交事务
COMMIT;
ROLLBACK
  • 解释 :用于回滚事务。当事务中的某个 SQL 语句执行失败或出现错误时,使用 ROLLBACK 语句将事务中的所有更改撤销,使数据库恢复到事务开始前的状态。
  • 示例
sql 复制代码
-- 开始事务
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
-- 模拟错误
-- 发现余额不足等情况,回滚事务
ROLLBACK;

多表操作关键字

JOIN
  • 解释:用于将多个表中的数据根据指定的条件进行组合。常见的连接类型有内连接、左连接、右连接等。
  • 示例
    • 内连接
sql 复制代码
-- 假设存在 classes 表,包含 class_id 和 class_name 列
SELECT students.student_name, classes.class_name
FROM students
JOIN classes ON students.class_id = classes.class_id;
  • 左连接
sql 复制代码
SELECT students.student_name, classes.class_name
FROM students
LEFT JOIN classes ON students.class_id = classes.class_id;
  • 右连接
sql 复制代码
SELECT students.student_name, classes.class_name
FROM students
RIGHT JOIN classes ON students.class_id = classes.class_id;

以上就是 MySQL 数据库基础操作中常见关键字的详细解释和示例,通过掌握这些关键字和操作,你可以对 MySQL 数据库进行基本的管理和数据处理。

相关推荐
JavaGuide14 小时前
公司来的新人用字符串存储日期,被组长怒怼了...
后端·mysql
怒放吧德德16 小时前
MySQL篇:MySQL主从集群同步延迟问题
后端·mysql·面试
数据智能老司机17 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
Eip不易也不e18 小时前
教程之同时安装两个版本的 mysql
mysql
数据智能老司机18 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿18 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
Kagol18 小时前
macOS 和 Windows 操作系统下如何安装和启动 MySQL / Redis 数据库
redis·后端·mysql
无名之逆18 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s91236010118 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机19 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构