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 数据库进行基本的管理和数据处理。

相关推荐
小陈工3 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull7 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花7 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸7 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain7 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希8 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神8 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员8 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java8 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿9 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb