【Mysql】第2篇--数据操作语言

DML(数据操作语言) ★★★

作用: 操作表中的记录(增 删 改)

插入记录

添加全部字段

​ insert into 表名 (字段名1, 字段名2, 字段名3…) values (值1, 值2, 值3); // 插入所有字段

​ insert into 表名 values (值1, 值2, 值3); // 插入所有字段,顺序要和数据库表字段顺序保持一致

添加部分字段

​ insert into 表名 (字段名1, 字段名2, …) values(值1, 值2, …);

注意事项

​ 值与字段必须对应,个数相同,类型相同

​ 值的数据大小必须在字段的长度范围内

​ 除了数值类型外,其它的字段类型的值必须使用引号引起。

​ 如果要插入空值,可以不写字段,或者插入null

DOS命令窗口操作数据乱码问题的解决(了解)

  • 错误说明: gbk (我们在dos中输入的) -----> 数据库(utf8)
    当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败

  • 错误原因:
    因为MySQL的客户端设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码

  • 解决方案:

    设置mysql客户端 连接 返回值的编码方式

    • 查看 MySQL 内部设置的编码
      show variables like ‘character%’;
    • 单独设置(临时)
      set character_set_client=gbk; set character_set_connection=gbk; set character_set_results=gbk;
    • 快捷设置(临时)
      set names gbk;
    • 修改配置文件(永久)
      修改MySQL安装目录下的my.ini文件,重启服务所有地方生效。

蠕虫复制

在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中

​ 语法格式: insert into 表名1 select * from 表名2;

修改记录

​ 不带条件修改数据 :

​ update 表名 set 字段名 = 值,字段名 = 值… ; // 修改表中的所有数据

​ 根据条件修改数据 : ★★

​ update 表名 set 字段名 = 值,字段名 = 值 where 字段名=值 and 字段名 = 值; // 修改满足条件的数据

删除记录

​ 不带条件删除数据:

​ delete from 表名; // 逐行删除表中的所有数据

​ 根据条件删除数据:

​ delete from 表名 where 字段名=值;

​ truncate删除表记录:

​ truncate table 表名; // 删除表,再创建一张结构一样的新表.

​ truncate和delete的区别:

​ delete是将表中的数据一条一条删除

​ truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

DQL(数据查询语言) ★★★★★

简单查询:

​ 查询所有列: select * from 表名;

​ 查询指定列: select 字段名1,字段名2… from 表名;

​ 别名查询: select 字段名1 as 别名, 字段名2 as 别名… from 表名 as 表别名;

​ 清除重复值: select distinct 字段名 from 表名;

​ 查询结果参与运算: select 列名1 + 固定值 from 表名;
​ 参数运算的字段必须为数值型

SQLyog: 连接工具

DQL ★

条件查询:

格式:select * from 表名 where 条件;

比较运算符

	> 大于 

	< 小于 

	<= 小于等于 

	>= 大于等于 

	= 等于 

	<>  != 不等于   

逻辑运算符

​ and(&&) 多个条件同时满足

​ or(||) 多个条件其中一个满足

​ not(!) 不满足

范围查询

​ between 值1 and 值2

​ 值1 < 值2

模糊查询

​ select * from 表名 where 字段 like 条件;

​ % : 模糊所有

​ _ : 模糊一位

​ like

​ “黑%” “%黑” “_黑” “__黑%” “%黑%”

排序

​ select * from 表名 where 条件 order by 字段名称 [desc | asc] , 字段名 [desc | asc]… ;

​ asc(默认) : 升序 desc : 降序

聚合函数

select 聚合函数 from 表名;

​ count() : 计数
​ IFNULL(english,0)

​ sum() : 求和

​ max() : 求最大值

​ min() : 求最小值

​ avg() : 求平均值

​ 扩展-保留小数位
​ cast(avg(字段名称) as decimal(5,2))

分组

​ select * from 表名 where 条件 group by 分组字段 [having 分组条件 ] ;

​ group by 分组字段 [having 条件]

​ having与where的区别 ★

​ where是在分组前对数据进行过滤

​ having是在分组后对数据进行过滤.

​ where后面不可以使用聚合函数

​ having后面可以使用聚合函数

格式:
select * from 表名 limit

分页

​ 关键字: limit
​ select * from 表名

​ limit 起始索引,每页显示条数;

格式: 
	select * from 表名 limit 起始索引,每页显示条数;

数据库中有1000条数据
每页显示5--1页
select * from 表名 limit 0,5--2页
select * from 表名 limit 5,5--3页
select * from 表名 limit 10,5.....
--15页
select * from 表名 limit 70,5......
-- 第n页
select * from 表名 limit (n-1*5,5;
格式:起始索引: (当前页-1*每页显示条数

猜你喜欢

转载自blog.csdn.net/qq_41250372/article/details/125462334