mysql 学习记录--增删改查

前置基础

  1. 在MySQL中,可以使用CREATE DATABASE语句创建一个新的数据库。以下是一个简单的示例: 这将创建一个名为mydb的新数据库。你可以根据需要更改数据库名称
sql 复制代码
CREATE DATABASE mydb;

在创建数据库时,可以使用CHARACTER SET子句指定字符集,如下所示:

sql 复制代码
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  1. 使用图形界面工具创建数据库

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
相关推荐
Neoooo2 分钟前
数据库备份攻略:支持Docker/本地部署
后端·mysql
教游泳的程序员36 分钟前
【JDBC】系列文章第一章,怎么在idea中连接数据库,并操作插入数据?
java·ide·mysql·intellij-idea
Crazy________1 小时前
13MySQL主从复制原理与搭建指南
数据库·mysql
学习编程的Kitty2 小时前
MySQL——数据库基础与库的操作
数据库·mysql
musk12124 小时前
sysbench mysql 单表 insert 压测 , 自定义lua测试脚本
mysql·sysbench·insert tps
小时候的阳光5 小时前
不停服务快速创建一个MySQL从库
mysql·主从·克隆·复制·clone
奥尔特星云大使5 小时前
ALTER 与 UPDATE、DROP 与 DELETE区别
linux·运维·数据库·mysql
六月闻君5 小时前
MySQLdump 常用参数说明
数据库·mysql
喃寻~8 小时前
java面试
数据库·sql·mysql
lang2015092810 小时前
MySQL I/O线程优化:提升性能的关键配置
数据库·mysql