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
相关推荐
Kt&Rs44 分钟前
MySQL复制技术的发展历程
数据库·mysql
手握风云-1 小时前
MySQL数据库精研之旅第十六期:深度拆解事务核心(上)
数据库·mysql
叫我龙翔2 小时前
【MySQL】从零开始了解数据库开发 --- 库的操作
数据库·mysql·数据库开发
pan3035074793 小时前
mysql 回表查询(二次查询,如何检查,如何规避)
数据库·mysql
Sally璐璐4 小时前
Go正则表达式实战指南
数据库·mysql·golang
一叶飘零_sweeeet4 小时前
从 0 到 1 攻克订单表分表分库:亿级流量下的数据库架构实战指南
java·数据库·mysql·数据库架构·分库分表
苹果醋34 小时前
数据库索引设计:在 MongoDB 中创建高效索引的策略
java·运维·spring boot·mysql·nginx
ホロHoro6 小时前
学习笔记:MYSQL(4)
笔记·学习·mysql
计算机学长felix6 小时前
基于Django的“酒店推荐系统”设计与开发(源码+数据库+文档+PPT)
数据库·python·mysql·django·vue
007php0079 小时前
某大厂MySQL面试之SQL注入触点发现与SQLMap测试
数据库·python·sql·mysql·面试·职场和发展·golang