1、MySQL默认的字符集及修改
(1)默认字符集
MySQL默认的字符集是拉丁文,我们通过SQL命令进行查看当前的字符串类型
show variables like'%character%';
![请添加图片描述](https://img-blog.csdnimg.cn/a05b11d230404f5ebb1a449ad0d0b4f2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
(博主之前就修改了MySQL字符集的类型,该图是修改后的)
(2)修改字符集类型
要想插入中文的字符,我们必须修改字符集类型。
1、在电脑开始界面找到MySQL(安装操作在博主的数据库系列一),找到MySQL 5.7 Command Line Client,右键,点击更多,再点击打开文件位置,如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/81ac75748f3e4c1d9732c2862ee72aa1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_19,color_FFFFFF,t_70,g_se,x_16)
2、选中第一个(后面带有-Unicode)的,右键,点击属性,将目标里的全部复制到记事本上。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ac8e970fcc7d4821bcfc43811c5fa757.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/0f1ae843aabe4feeb49bc041267f6eed.png)
3、找到 “–defaults-file=C:\ProgramData\MySQL\MySQL Server 5.7\my.ini” 这行,通过这行找到my.ini的路径,找到my.ini后,先复制一份,避免接下来配置修改出错的情况。
![在这里插入图片描述](https://img-blog.csdnimg.cn/10ee2a10ea2945ceb87cb5afa1f1ff0c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
4、选中my.ini右键用记事本打开,找到以下字样 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b6d895dc3b164b21800e4af04e819b99.png)
在下面加入一行配置:default-character-set=utf8
再找到[mysqld],在下面加入一行配置:character-set-server=utf8 (mysqld就是mysql的服务器)
其他的配置不要乱动!其他的配置不要乱动!其他的配置不要乱动!
一定要保存修改后再退出!!!
5、然后打开服务,找到MySQL57
![在这里插入图片描述](https://img-blog.csdnimg.cn/dc44074d97c249b9a75400bb3dea7725.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
右键点击重新启动,关闭服务。
6、再次创建新的数据表和数据表(旧的数据库和数据表无效)的时候,字符集类型就改为了utf8,varchar类型在 插入命令 中就可以输入 中文 了,你可以使用:
show variables like’%character%’; 进行验证,至此,字符集修改完毕。
2、插入命令
insert into [数据表名] values ();
执行插入命令之前,需要先选中数据库(使用数据库),并且插入命中()里的内容要跟你要插入的表里的数据类型相对应:
如果全选的话,[数据库名] 后就不需要修改;
如果只插入一些数据类型的话,[数据库名] 后必须要说明。
例如:我创建了一个数据库,选中数据库后建立了一个(student)学生表
create table if not exists student(
-> id int,
-> sn int,
-> name varchar(20),
-> qq_mail varchar(20));
![在这里插入图片描述](https://img-blog.csdnimg.cn/104a8c98aef94556801a6e3344fc7ea0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
现在我要使用插入命令插入具体数据:
insert into student values (1,11,'小何','431@qq.com');
![在这里插入图片描述](https://img-blog.csdnimg.cn/a312d6468f5e4341a4fdaff9e01c3e9e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_18,color_FFFFFF,t_70,g_se,x_16)
(select * from student;在下面会具体说到)
如果我只想插入id、name以及qq_mail,那么就需要对插入命令做出修改:
insert into student (id,name,qq_mail) values (2,'张三','123@qq.com');
![在这里插入图片描述](https://img-blog.csdnimg.cn/f1a0363356444a5984dd244a3015faba.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_14,color_FFFFFF,t_70,g_se,x_16)
数据表里的数据值默认为NULL
插入命令,可以插入一组数据,还可以插入多组数据。
insert into [数据表名] values (),(),()...;
()与()之间用逗号分割。
如果可以多次一组插入和一次多组插入,你会选择哪种?
正解:选择一次多组插入。
mysql是一个"客户端""服务器"结构的程序。我们在客户端输入的SQL都会通过网络传输给服务器,由服务器来进行具体操作。
如果选择一次多组插入,客户端就会向服务器发送一个带有多组数据的请求,服务器也只会对这一个要求进行操作并返回一个响应;
如果选择多次一组插入,那么向服务器发送的要求就有多个,服务器的操作也会有很多,返回的响应也会有多个,那么网络传输的开销就大大增加了。
3、查询数据表
(1)全列查找
select * from [数据表名];
![在这里插入图片描述](https://img-blog.csdnimg.cn/0c3e524a6ad44aaeb019d46448e7d266.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_18,color_FFFFFF,t_70,g_se,x_16)
如果数据表里的数据很大的话,使用全列查找可能响应的时间很长,可能将机器的磁盘和网络带宽给吃满。
(2)指定列查找
select [列名],[列名] from [数据表名];
![在这里插入图片描述](https://img-blog.csdnimg.cn/c14c52e83ad04c27bc625c4739e9156a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_15,color_FFFFFF,t_70,g_se,x_16)
select 指定列查找 比 select * 效率要高一点。
(3)查询字段为表达式
select [列名],[表达式] from [数据表名];
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ebb83e6f84c47a29daf21b8ea19a24a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
select 查询的结果是一个“表结构”-临时表,不会永久存在。
(4)为表达式起别名
select 表达式 as 别名 from [数据表名];
![在这里插入图片描述](https://img-blog.csdnimg.cn/b12d253fa3d3436492db9918c4158d09.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
as 可省略。
(5)去重查询
select distinct 列名 from [数据表名];
当列里有相同的数据时,用该命令保证数据唯一性。
例如:
select distinct math from exam_result;
(6)排序查询
select 列名 from [数据表名] order by 列名/表达式 asc/descc;
排序分为升序排序(ASC)和降序排序(DESC)
例如:升序排序
![在这里插入图片描述](https://img-blog.csdnimg.cn/9882035d795241c7864a77fba9f30d16.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
默认为升序!!!
降序排序 ![在这里插入图片描述](https://img-blog.csdnimg.cn/246f606a806a426fa0af8f0942433c71.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
排序的时候,如果某个值是NULL,那么这个值就是最小的值。
(7)条件查询
select 列名 from [数据表名] where+条件;
比较运算符:
运算符 说明
>,>=,<,<= 大于,大于等于,小于,小于等于
= 等于
<=> 比较老的等于
!=,<> 不等于
between a0 and a1 范围匹配,[a0,a1],在范围中返回true
in (option,...) 判断值是否在()若干个选项中存在
is null 是null
is not null 不是null
like 模糊匹配
逻辑运算符:
运算符 说明
and 多个条件必须都为真,返回值才为真
or 任意一个条件为真,返回值就是真
not 条件为真,返回值就为假
当where后的条件中既有and和or的时候,and 的优先级高于 or。
![在这里插入图片描述](https://img-blog.csdnimg.cn/885079699079401f87f75cd07d4e4044.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
(8)分页查询
通过分页查询限制一次查询返回的结果数目
使用 limit 完成分页查询,例如:
![在这里插入图片描述](https://img-blog.csdnimg.cn/391969206a2b426cb265b326a561ebcb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oqT5L2P5Yqq5Yqb55qE5bC-5be05ZGA,size_18,color_FFFFFF,t_70,g_se,x_16)
博主水平较低,如果有误,请多多指教!!!
|