1. 数据库的基本操作
1.1. MYSQL登录与退出
D:\phpstudy_pro\Extensions\MySQL5.7.26\bin
输入 mysql -uroot -proot -h127.0.0.1
退出的三种方法
mysql > exit;
mysql > quit;
mysql > \q;
1.2. MYSQL数据库的一些解释
注意:数据库就相当于文件夹
表就相当于文件
1.3. mysql注释符有三种:
1、#...
2、"-- ..."
3、/.../
2. 数据库的一些基本操作
2.1. 创建数据库
create database db1;
2.2. 删除数据库
drop database db1;
2.3. 显示所有数据库
show databases;
2.4. 选择数据库
use db1
3. table 表的操作
3.1. 创建数据表
假设我们要创建一个名为 students
的数据表,包含学生的基本信息:
CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, gender ENUM('Male', 'Female'), email VARCHAR(100) UNIQUE );
3.2. 插入数据
向 students
表中插入一条数据:
INSERT INTO students (name, age, gender, email) VALUES ('John Doe', 20, 'Male', 'john@example.com');
3.3. 查询数据
查询所有学生的信息:
SELECT * FROM students;
查询年龄大于 18 的学生信息:
SELECT * FROM students WHERE age > 18;
3.4. 更新数据
将 John Doe 的年龄更新为 21:
UPDATE students SET age = 21 WHERE name = 'John Doe';
3.5. 删除数据
删除名为 'John Doe' 的学生信息:
DELETE FROM students WHERE name = 'John Doe';
3.6. 修改数据表结构
为 students
表添加一个 birthdate
字段:
ALTER TABLE students ADD birthdate DATE;
修改 email
字段的长度为 150:
ALTER TABLE students MODIFY COLUMN email VARCHAR(150);
重命名 email
字段为 contact_email
:
ALTER TABLE students CHANGE email contact_email VARCHAR(150);
3.7. 数据表索引操作
为 students
表的 name
字段创建唯一索引:
CREATE UNIQUE INDEX idx_name ON students(name);
查看 students
表的所有索引:
SHOW INDEXES FROM students;
3.8. 数据表删除
删除 students_copy
表:
DROP TABLE students_copy;
4 mysql常用的查询方式
4.1. 基本查询
查询 students
表中的所有记录:
SELECT * FROM students;
4.2. 条件查询
查询年龄大于 20 的学生:
SELECT * FROM students WHERE age > 20;
查询名字为 'John Doe' 的学生:
SELECT * FROM students WHERE name = 'John Doe';
4.3. 排序查询
查询所有学生并按年龄降序排列:
SELECT * FROM students ORDER BY age DESC;
4.4. 分页查询
查询年龄大于 20 的学生,每页显示 5 条记录,显示第 2 页的内容:
SELECT * FROM students WHERE age > 20 LIMIT 5 OFFSET 5;
或者使用简化的写法:
SELECT * FROM students WHERE age > 20 LIMIT 10, 5;
4.5. 聚合查询
查询学生的总数:
SELECT COUNT(*) FROM students;
查询学生的平均年龄:
SELECT AVG(age) FROM students;
查询年龄最大的学生:
SELECT * FROM students ORDER BY age DESC LIMIT 1;
4.6. 分组查询
按性别分组并计算每组的学生数:
SELECT gender, COUNT(*) as student_count FROM students GROUP BY gender;
4.7. 连接查询
假设有一个 courses
表记录学生选课信息,通过 student_id
与 students
表关联。查询每个学生的选课情况:
SELECT students.name, courses.course_name FROM students JOIN courses ON students.id = courses.student_id;
4.8. 子查询
查询年龄大于平均年龄的学生:
SELECT * FROM students WHERE age > (SELECT AVG(age) FROM students);
4.9. LIKE 查询
查询名字以 'John' 开头的学生:
SELECT * FROM students WHERE name LIKE 'John%';
查询名字中包含 'Doe' 的学生:
SELECT * FROM students WHERE name LIKE '%Doe%';
4.10. IN 查询
查询 id 为 1, 3, 5 的学生:
SELECT * FROM students WHERE id IN (1, 3, 5);
4.11. 使用 DISTINCT 去重
查询所有不重复的性别:
SELECT DISTINCT gender FROM students;
4.12. 使用 CASE 进行条件选择
根据学生的年龄进行分类:
SELECT name, CASE WHEN age <= 18 THEN 'Teenager' WHEN age BETWEEN 19 AND 30 THEN 'Young Adult' ELSE 'Adult' END as age_group FROM students;