
数据库的数据层级:
据库操作核心概念 “CRUD”:
INSERT [INTO] table_name
[(column [, column] ...)]
VALUES
(value_list) [, (value_list)] ...
value_list: value, [, value] ...SQL 插入数据语句(INSERT INTO),用于在数据库表中新增一条数据行,分点解读如下:
;。其中insert into是关键字,指定要操作的表名,[字段1, 字段2]可选,用于指定要插入数据的列,values后紧跟要插入的具体数值。insert into 表名 [字段1, 字段2] values (值, 值, 值);
//简写的全列 直接把字段省略,然后所有列的值都列出来insert into:SQL 关键字,标识 “插入数据” 操作。[字段1, 字段2]:可选,指定要插入数据的表字段(即表的列名),数量可单个或多个,需与表定义时的字段名一致。values (值, 值):指定要插入的具体数据,值的顺序必须与前面字段名的顺序严格对应。字段名的列表与values后的数值列表是一一映射的关系,即 “字段 1 对应第一个值,字段 2 对应第二个值”,以此确保数据插入到正确的列中。


注意:字符串类型是用的单引号,跟Java不太一样
插入数据的时候,一定要数据类型符合还有数据列的个数一样

这是关于 MySQL 中INSERT INTO语句两种插入数据方式的示例,分点提取如下:
INSERT INTO student VALUES (100, 10000, '唐三藏', NULL);
INSERT INTO student VALUES (101, 10001, '孙悟空', '11111');value_list的数量、顺序必须与表定义的列完全一致。语法特点:指定要插入的字段(如id, sn, name),同时插入多条数据(用逗号分隔多个value_list)。
示例语句:
INSERT INTO student (id, sn, name) VALUES
(102, 20001, '曹孟德'),
(103, 20002, '孙仲谋');网络开销:执行每条 SQL 都会产生网络通信成本,一次插入多条可减少通信次数,降低总开销。
磁盘 IO 开销:写入数据时的磁盘读写操作,批量插入可减少 IO 次数,提升效率。
事务开销:每条 SQL 默认开启一个事务,事务的开启和关闭会消耗系统资源,批量插入可减少事务操作次数,节约资源。
4.重现字符集设置错误导致插入数据异常?
改默认配置即可
4.1 点击 此电脑 的管理

把这个MySQL 的运行停止

4.3 找到my.ini 配置文件
这是我的地址:D:\ProgramData\MySQL\MySQL Server 8.0

4.4 修改my.ini 配置即可 假设改成 latin1 (latin1 是一种字符集(Character Set),主要用于存储西欧语言(如英语、德语、法语等)的字符,不支持中文、日文、韩文等多字节字符。)

5.重启MySQL服务,检查是否改变


已经改变了我们可以看到
6.那如果我在这和默认的不想用 ,想改 character_set_database 改成latin1呢
创建表时指定:
CREATE TABLE test (...) CHARACTER SET latin1;手动设置新的数据库编码集
ALTER TABLE test MODIFY name VARCHAR(50) CHARACTER SET latin1;CREATE DATABASE test_db CHARACTER SET latin1;
因数据库、表或字段的字符集不支持中文(如使用latin1字符集),导致插入中文时编码不兼容,出现 “Incorrect string value” 报错。

utf8mb4)是可行的,步骤为:
DROP DATABASE 原库名;CREATE DATABASE 新库名 CHARACTER SET utf8mb4;ALTER DATABASE、ALTER TABLE等语句),无需删除库即可修复编码问题。
语法:
select * from 表名注意:在生产过程中,不要进行这样的操作
生产环境中,数据库表可能存在极大的数据量(甚至达到 TB 级),这种情况下,一些操作会带来严重的资源消耗风险。
一方面,查询操作会产生磁盘开销和网络开销。而磁盘与网络在生产环境中属于非常紧缺的资源,一旦被过量消耗,会直接导致系统性能大幅下降。
另一方面,高危 SQL 语句的执行可能耗尽服务器的 CPU、内存等资源,使得其他程序或数据库操作被迫处于等待状态,进而引发业务阻塞。
注意:在生产过程中不要不加任何的限制条件的查询
对特定的列选择性查询
语法:
SELECT column [AS] alias_name [, ...] FROM table_name格式:
select 列名,列名,列名 from 表名
1.2 查询结果表达式 列于列之间也可以实现

计算成总分我们可以给他起一个别名 用 as(as 后面的中文加单引号也可以)这个as 也是可以省略的

别名中间有空格 ‘总 分 ’,就要用单引号给他包裹起来
MySQL所有的查询结果都会通过临时表来返回给用户
select distinct 列名,列名,列名 from 表名
在 MySQL 中,distinct关键字用于处理重复数据,其核心规则是:
distinct后,重复的记录仅保留一条。也就是我选择的列再加上 id 那就是行不一样了,列一样,不符合去重

select 列名 as 新列名 from 表名;最好在别名上加的单引号,这是比较规范的操作
select 列名 from 表名 order by 以什么排序的列名 [ASC | DESC];ORDER BY用于对查询结果按指定列排序。ASC表示升序(默认,可省略),DESC表示降序。注意 :desc
在表查询的时候,查看表的结构 desc describle
在order 排序的时候,desc descend
ORDER BY子句时,MySQL 返回结果集的默认排序是不确定的。ORDER BY子句指定排序字段及升降序(ASC升序、DESC降序)。对英语成绩排序

若查询中使用了计算表达式(如字段运算、函数处理等),可直接在 ORDER BY 后写该表达式进行排序。
SELECT
sname,
math + english AS total -- 表达式:math + english(计算总分)
FROM
student
ORDER BY
math + english DESC; -- 直接用表达式排序(降序)若为表达式或字段起了别名(AS 别名),ORDER BY 子句中可直接使用别名排序,更简洁。
SELECT
sname,
math + english AS total -- 为表达式起别名 total
FROM
student
ORDER BY
total DESC; -- 直接用别名排序(降序)MySQL 中 NULL 特性的说明,分点解读如下:
在 MySQL 中,可对多个字段进行排序,其规则如下:
排序优先级:与ORDER BY子句中字段的书写顺序相关,先按第一个字段排序,第一个字段值相同的行再按第二个字段排序,以此类推。
排序规则指定:可为每个字段单独指定ASC(升序,默认)或DESC(降序)的排序规则。
语法格式:order by 列名 [asc|desc], 列名 [asc|desc], 列名 [asc|desc] ...
order by 列名 [asc|desc], 列名 [asc|desc], 列名 [asc|desc] ...示例:如select id, name, chinese, math, english from exam order by math desc, chinese asc, english; 表示先按math字段降序排列,math值相同的行再按chinese字段升序排列,chinese值仍相同的行最后按english字段升序(默认)排列。
ORDER BY中第一个字段的规则(升序 / 降序)对所有数据进行排序,确定初步的排列顺序。

SELECT
select_expr [, select_expr] ... [FROM table_references]
WHERE where_condition

_匹配严格的一个任意字符
根据返回的结果可以得出一个结论:
AND 的优先级是大于 OR
的整体的优先级顺序和 JAVA 中一样
NOT > AND > OR


ORDER BY子句,返回顺序未定义,切勿依赖该顺序。ORDER BY子句中可使用列的别名进行排序。NULL进行排序时,其视为比任何值都小,升序时出现在最上面,降序时出现在最下面。作用:限制查询结果集中的条数
-- 起始下标为 0
-- 从 0 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
-- 从 start 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start, num;
-- 从 start 开始,筛选 num 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;
LIMIT num OFFSET startSQL 语句片段
