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

相关推荐
Alex Gram几秒前
MySQL实时同步到SQL Server:技术方案与实现路径
数据库·mysql
不穿格子的程序员27 分钟前
Redis篇3——Redis深度剖析:内存数据的“不死之身”——RDB、AOF与混合持久化
数据库·redis·缓存·数据持久化·aof·rdb
秋深枫叶红29 分钟前
嵌入式第三十四篇——linux系统编程——进程
linux·服务器·数据库·学习
贡献者手册41 分钟前
SQLite 的进阶版,面向边缘计算、嵌入式场景的高性能本地数据库【Turso Database】
数据库
TH_11 小时前
6、前台界面传递老数据,导致业务数据错误
数据库
光影少年1 小时前
PostgreSQL数据库学习路线
数据库·学习·postgresql
哈哈老师啊2 小时前
Springboot简单二手车网站qs5ed(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
JIngJaneIL2 小时前
基于Java+ vue图书管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue考勤管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
晚风_END2 小时前
postgresql数据库|数据库维护系列|postgresql数据库参数配置详解和数据库维护时机的选择(三)
运维·开发语言·数据库·postgresql·oracle