前置基础
- 在MySQL中,可以使用
CREATE DATABASE
语句创建一个新的数据库。以下是一个简单的示例: 这将创建一个名为mydb
的新数据库。你可以根据需要更改数据库名称
sql
CREATE DATABASE mydb;
在创建数据库时,可以使用CHARACTER SET
子句指定字符集,如下所示:
sql
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 使用图形界面工具创建数据库
3. 创建表
sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT,
email VARCHAR(255) );
1. 插入(增)
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);
sql
INSERT INTO `spring+vue3`.`employee` ( `id`, `name`, `sex`, `no`, `age`, `description`, `department_id` )
VALUES
( 13, '李33434白白4', '男', '334', 55, '小魔尊', 4 );
一次性插入多条
sql
-- 一次性添加多条新记录:
INSERT INTO students (class_id, name, gender, score) VALUES
(1, '大宝', 'M', 87),
(2, '二宝', 'M', 81),
(3, '三宝', 'M', 83);
-- 查询并观察结果:
SELECT * FROM students;
2. 删除(删)
DELETE
语句的基本语法是:
sql
DELETE FROM <表名> WHERE ...;
sql
DELETE from employee WHERE id=5
删除多条
sql
-- 删除id=5,6,7的记录:
DELETE FROM students WHERE id>=5 AND id<=7;
-- 查询并观察结果:
SELECT * FROM students;
3. 更新(改)
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
sql
UPDATE `spring+vue3`.`employee`
SET `name` = '322',
`sex` = '女',
`no` = '107',
`age` = 43,
`description` = '辅导反而热热费',
`department_id` = 2
WHERE
`id` = 8;
更新多条数据
sql
-- 更新id=5,6,7的记录:
UPDATE students SET name='小牛', score=77 WHERE id>=5 AND id<=7;
-- 查询并观察结果:
SELECT * FROM students;
4. 查询(查)
1. 查询某个表的所有数据,返回的是一个列表。
sql
SELECT * FROM employee;

2. 单个查询
sql
SELECT * FROM employee WHERE NAME="李白";

3. 多条件查询
sql
SELECT * FROM employee WHERE NAME="李白"AND age=55;

4. 模糊查询
- "%" 百分号通配符: 表示任何字符出现任意次数 (可以是0次)。
- " _ " 下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。当然,也可以like "陈____",数量不限。
- like操作符:LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配进行比较;但如果like后面没出现通配符,则在SQL执行优化时将 like 默认为 "="执行
后缀模糊
sql
SELECT * FROM employee WHERE NAME LIKE '李%';
查询以李开头的 其他类似的:
sql
-- 匹配所有包含"网"的记录,全部模糊
SELECT * FROM app_info WHERE appName LIKE '%网%';
-- 匹配所有以"网"开头的记录,后缀模糊
SELECT * FROM app_info WHERE appName LIKE '网%';
-- 匹配所有以"网"结尾的记录 前缀模糊
SELECT * FROM app_info WHERE appName LIKE '%网';
5. 分页查询
sql
SELECT * FROM employee LIMIT 0, 5;

一、分页需求:
客户端通过传递start(页码) ,pageSize(每页显示的条数) 两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:
比如:
查询第1条到第10条的数据的sql是:select * from table limit 0,10;
->对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;
查询第11条到第20条的数据的sql是:select * from table limit 10,10;
->对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;
查询第21条到第30条的数据的sql是:select * from table limit 20,10;
->对应我们的需求就是查询第三页的数据:select * from table limit (3-1)*10,10;
二、总结:
通过上面的分析,可以得出符合我们需求的分页sql格式是:select * from table limit (start-1)*pageSize,pageSize;
其中start 是页码,pageSize是每页显示的条数。
6. 排序
select 查询列表 from 表(where 筛选条件)order by 排序列表 asc:升序,desc降序
sql
SELECT * FROM employee ORDER BY id DESC;//id数字越大就越新

7. 统计
一般用于统计个数
sql
SELECT count(*) FROM employee GROUP BY sex HAVING sex='男'
常用的SQL统计函数
- COUNT() : 用于统计行数或非空列值的数量。例如,
SELECT COUNT(*) FROM table_name
可以统计表中的总行数,而SELECT COUNT(column_name) FROM table_name
则统计指定列的非空值数量。 - SUM() : 用于计算数值列的总和。例如,
SELECT SUM(column_name) FROM table_name
会返回指定列的值的总和。 - AVG() : 用于计算数值列的平均值。例如,
SELECT AVG(column_name) FROM table_name
会返回指定列的平均值。 - MIN() 和 MAX() : 分别用于找到数值列中的最小值和最大值。例如,
SELECT MIN(column_name) FROM table_name
和*SELECT MAX(column_name) FROM table_name
会返回指定列的最小值和最大值。
8.分组和筛选

- GROUP BY : 用于根据一个或多个列对结果集进行分组。例如,
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name
可以统计每个不同的column_name值的数量。 - HAVING : 与GROUP BY结合使用,用于对分组后的结果进行筛选。例如,
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > 5
可以筛选出那些column_name
值的数量大于5的组。
9.关联查询
sql
SELECT
employee.*,
dept.`name` AS departmentName
FROM
employee
LEFT JOIN dept ON employee.department_id = dept.id

关联查询分页
sql
SELECT
employee.*,
dept.`name` AS departmentName
FROM
employee
LEFT JOIN dept ON employee.department_id = dept.id
LIMIT 0,5
