MySQL的增删改查;MySQL中使用中文-修改成UTF-8字符集

增删改查的前提,是已经把数据库创建好,并且选中了,表也创建就绪了~

1.新增元素

 在上图这个表里新增

  • insert into 表名 values(值,值,值...);  此处的值的个数要和表的列数相匹配.值的类型也要和列的类型匹配~   如果不匹配就报错捏~(字符串要加单引号)

 

 在SQL中可以使用双引号也可以用单引号,SQL里没有"字符类型"

其他的没有字符类型的编程语言,Python,JS,也是单双引号都能表示的字符串~

  • 不一定把这一行的所有列都插入数据.

  • 也可以一次插入三个数据(多次 插入 多条 记录会慢很多)

 指定name这一列进行插入;   其他未被指定的列(id),填入的值就是这一列的默认值,也就是null.

2.查询

查询操作比较复杂,先介绍一些比较简单的查询~

1.select语句全列查询.直接把整个表里面的数据都查出来

  • select*from 表名;   (*是通配符,表示匹配任意列)

select*表名;在数据量大的情况下任意把磁盘IO,或网络宽带吃满,出现卡顿,影响外面用户体验.

我们可以按Ctrl+c 来中断.

  • 指定列查询select 列名,列名,列名......form 表名;
  • 当我们省略一些不必要的列就节省大量磁盘IO和网络带宽了~

 

3) 查询的时候带有表达式,让查询结果进行一些计算~

我们重新写一个表来举例子(如下):

//注:decimal(3,1)是数据有三位有效数字,小数点后一位数.

对这个表的查询结果 做一些 计算操作如下: 

我们试着加了20,结果是超出前面定义的3位有效数字也不会报错. 

4)查询的时候起别名

 5)去重查询 

select distinct 列名 from 表名;会把查询结果相同的行,合并成一个;

这个表里面第一行的 [唐三藏] [98.0]这个数据和最后一行的[唐三藏] [98.0]这些数据一样,所以用去重查询,两个记录变成一个记录了.

 

 6)排序order by(默认升序)

select*from exam order by chinese;

 asc为升序(从小到大)

 desc为降序(从大到小)(descending order)

应用:

 select name,chinese+english+math as total from exam order by total desc;

 也可以指定多个列排序,先以第一个列为优先标准进行比较.如果第一列不分胜负,再按照第二列比较~


运算符

 SQL里没有==,=就是等于不是赋值

 下面对运算符的运用

1.查询英语不及格的同学,及英语成绩(<60)

select*from 表名 where 列名<60;

下面这个是原表,null是false所以没有被选出来.

 

取别名:查询语文数学英语加起来小于200,取别名叫total,的同学和total.

select 列名,列名+列名+列名 as total from 表名 where 列名+列名+列名<200;

但是注意不能这样,直接用别名进行运算符的使用.

select 列名,列名+列名+列名 as total from 表名 where total<200;

 2.and运算符(&&),两个条件都要满足

 select*from 表名 where 列名>80 and 列名>80;

查询语文成绩大于80分,且英语成绩大于80分的同学

 3.or运算符(||),两者任意一个成立就可以

select*from 表名 where 列名>80 or 列名>80;

 注意:如果一个条件中同时有and 和or,优先计算and.

但是加上括号就是先算括号里的

4.between a0 and a1

查询语文成绩在[80,90]分的同学及语文成绩(下面这两种方法都可以)

select*from 表名 where 列名 >=80 and chinese <=90;

select*from 表名 where 列名 between 80 and 90;这种between and 更加高效.

 

5. in(....)如果是括号里的任意一个则返回括号里的

select*from 表名 where 列名 in(58,59,98,99);

 

6.like    通过like来完成模糊查找

需要用到通配符.可以用 百分号 来代替任意个字符;用 _ 来代替一个任意字符

匹配以孙开头的数据

select*from 表名 where 列名 like '孙%' ;                     

 %孙      匹配以 孙 结尾的数据

%孙%    匹配包含 孙 的数据

%         匹配任意数据

匹配两个任意字符

匹配一两个任意字符

 虽然数据库支持模糊匹配,但是慎重使用,因为效率很低

7.null  和  <=>

不能直接用=来进行匹配,运行之后说空.

 要用到<=>

select* from 表名 where 列名 <=> null ;(sql不区分大小写)

也可以用is null 也可以和null进行比较

 

 8.分页查询

使用limit关键字来进行限制返回的结果条数~用offset来确定从第几条开始进行返回~

select 列名 from 表名 limit N offset M;(此处offer也可以省略,如果省略表示从第0条记录开始返回)

select 列名 from 表名 limit M,N

从第M条开始查询,最多返回N条记录~

limit可以和order by,where 等子句搭配使用

查询总成绩前三名的同学信息~

注:加上where条件筛选和limit,用select*才不会把数据库弄挂了.

 注释:

-- (两个横线一个空格)


 修改Update

此处的修改是针对服务器进行~这里的修改是持续有效的~

update 表名 set 列名 = 值,列名 = 值....where 子句;

把孙悟空的数学成绩改成80 ;

update exam_result set math = 80 where name = '孙悟空';

我们查看一下

 

 总成绩倒数前三的三位同学的数学成绩加上30分.

update exam_result set math = math+30 order by chinese+math+english limit 3;

 超出范围了(数学超出一百分了).就报错了.

 给他们都-30,就不会超出范围了.

 

 update操作也是比较危险的操作,只能靠备份的副本.


delete操作 只是把表的内容清空了表还在

总结

insert into 不能插入中文,我们要修改配置文件使用UTF-8字符集

步骤1.查看自己的 字符集  输入 show variables like 'character%'; 

下图中database 和server都要是utf8

步骤2.找到配置文件

 

步骤3.右击选择属性

步骤4.复制目标里的

步骤5.复制到记事本上,再单独复制这段蓝色框起来的部分

步骤6.把这段路径复制到文档的搜索框

 

步骤7.点开my.ini  有的电脑可能叫  my没有扩展名

 

步骤8.修改下面红色框框的位置,改成图上的内容;然后保存即可

 

 步骤9.重启MySQL服务器;开始菜单里搜索服务打开服务,找到MySQL右击,点[重新启动]

 步骤10.删除掉之前的库.结束.

最后:所有查询结果 都是临时表~

       不会对数据库服务器上的数据造成影响~

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在 MySQL ,如果数据库的字符集设置为 UTF-8,但表字段的字符集设置为 GBK,会导致以下影响: 1. 在存储数据时会出现乱码,因为 MySQL 会将数据从 UTF-8 编码转换为 GBK 编码,但 GBK 编码无法正确表示 UTF-8 编码的所有字符,所以会出现乱码。 2. 在询数据时会出现问题,因为 MySQL 会将询结果从 GBK 编码转换为 UTF-8 编码,但 GBK 编码无法正确表示 UTF-8 编码的所有字符,所以会出现问题。 建议将数据库和表字段的字符集都设置为 UTF-8,这样可以避免上述问题。 ### 回答2: 当MySQL数据库的字符集utf-8,但表字段字符集为gbk时,会出现以下影响: 1. 存储问题:由于utf-8是一种多字节字符集,而gbk是一种双字节字符集,所以当在utf-8数据库存储gbk字符时,会导致一个gbk字符占用更多的存储空间,可能引起数据浪费。 2. 编码问题:当utf-8数据库的表字段字符集为gbk时,会导致编码不一致。当从应用程序插入或读取数据时,可能会出现字符编码乱码或无法正常显示的情况,特别是在处理特殊字符时更容易出现问题。 3. 排序和比较问题:utf-8和gbk字符集具有不同的排序规则和比较方式。如果在不同字符集之间比较和排序数据,可能导致错误的结果。 4. 询问题:如果在utf-8数据库表的gbk字段上进行询,可能会导致询结果不准确或无法正常检索到数据。 综上所述,当MySQL数据库字符集utf-8,但表字段字符集为gbk时,可能会导致存储、编码、排序和询等方面的问题。为避免这些问题,建议一致地设置字符集,即数据库和表字段应该采用相同的字符集,例如utf-8字符集。 ### 回答3: 当MySQL数据库的字符集UTF-8(或UTF-8编码的别名)时,它可以存储包括汉字在内的各种国际字符集,并且支持多种语言的数据存储与询。而表字段字符集为GBK,则表示该字段的数据只能使用GBK字符集进行存储和检索。 对于数据库字符集UTF-8但表字段字符集为GBK的情况,会产生以下影响: 1. 数据存储:当使用UTF-8的字符集插入数据到字段时,MySQL会首先将UTF-8字符集转换为GBK字符集,然后再存储到表字段。这可能导致一些特殊字符无法正确保存或显示。 2. 字符编码转换:如果从数据库询数据并将其显示在页面上时,数据库会将存储在GBK字符集的数据转换为UTF-8字符集进行显示。这种字符编码转换可能会导致数据显示异常或乱码。 3. 询效率:由于MySQL需要进行字符集转换,从UTF-8到GBK或从GBK到UTF-8的转换会消耗一定的计算资源和时间。在大数据量或复杂询的情况下,这些转换可能会降低询效率。 因此,建议在设计数据库时,数据库的字符集和表字段的字符集应保持一致,以避免字符集转换引起的问题。如果需要存储和处理多语言数据,推荐使用UTF-8字符集,它能够更好地支持各种语言和字符集

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值