广州37期_罗子鹏 发表于 2021-12-16 20:56:51

第十天笔记

对表中数据进行操作—增删查改
insert into ==》插入一些测试数据(只能是英文或数字)
插入数据的三种方法:

insert into 表名(字段1,字段2,字段3)values(值1,值2,值3);
字段与值要一一对应
int(10)——1
varchar(10)——‘xiaoluo/dcs37’
float(20,2)——89.8878 【select *from 表名看时,只有89.89】
bigint(20)——18966667777
date——‘2021-12-15’
插入数据时,字段类型为char、varchar、date型要加‘’或“”

insert into 表名 values(值1,值2,值3…)
值要跟表中字段一一对应
对表中所有字段进行插入值
insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);
因为主键+自增长,所以会在原来的最大值加1
NULL表示没有插入值,不占字节
phone没有插入值,但是有默认值约束,自动填充
C:\Users\Administrator\AppData\Local\YNote\data\weixinobU7Vjt-AmHOlU63ZT0giGOqKtns\5fcebdcbd9d2411283f1e07f2f61d232\_90$~1r9~)pg8uh6u``{406.png
insert into 表名(字段1) values(值1),(值2);
在表的某字段插入多行数据
数据错误会插入失败显示0000-00-00
字段存在not null 非空约束,就会以空白呈现,占字节
int型数据是不能保留超过21474847的数值
当字段为主键+自增长的形式,当它为21474847时,再插入会报主键重复



select ==》查
select *from 表名;==》查询所有字段的值

select 字段 from 表名;==》查询表的字段的值
select字段,字段 from 表==》查询多字段的值

select*from 表名 where 字段=值;查询某字段对应某值的信息
                                                         字符串和日期加引号
select * from 表名 where 字段1=值1 and 字段2=值2==》查多字段的符合对应值的信息
                                                                                       且 关系
select * from 表名 where 字段=值1 or 字段2=值2==》或 关系

select 字段1 from 表名 where 字段2<>值1==》查询字段1内字段2不等于值1的信息
         字段,字段                   字段   <值1 and 字段>值2    某字段值在值12之间的信息            
select * from test where 字段 between 值1 and 值2==》字段在值12中的信息,包括值12

select * from 表名 where 字段1 !=值1 ==》查询所有信息里,字段1不等于值1的信息
注意:NULL是不存在,不能用=<>匹配判断

select * from 表名 where 字段 is null;查询字段值为NULL的信息
                                                is not null;查询不是NULL的

select * from 表名 where 字段 in (值1,值2)==》查询字段的值符合值1、2的信息
                                             ^not    ==》加not,不在值1、2内

in 与 not in条件:NULL值也是不参与in条件的
select * from 表 where 字段1 in(值1,值2)==》查询字段1中包含值1、2的信息
                                              ^not ==》加not,字段1中不包含值1、2的信息

like + %
select * from 表 where 字段 like ‘dcs%’
表中字段内容dcs开头匹配的,包含就%dcs%
----------------------------------------------------------
查询指定行数
select * from 表 limit n,N;查询表的前N行(从n+1开始)
-----------------------------------------------------------------------------------
排序order by
select * from 表 order by 字段1 asc;对字段1升序排序,asc可有可无
select * from 表 order by 字段1 desc;对字段1降序排序
select * from 表 order by 字段1 desc/asc,字段2desc/asc==》多段排序
select * from test where score is not null order by sid desc limit 3
对tesst表分数过滤null,再对sid降序,再查前三行。
-----------------------------------------------------------------------------
分组group by
如果分组需要过滤,where必须要在group by前
select * from 表 group by 字段;对字段进行分组查询
注意:用*的话获取的其他非分组字段的值时随机匹配的,一般是第一条

如果需要进行条件过滤的话,where必须要在group by前面
如果分组之后需要进行条件过滤,则使用having
C:\Users\Administrator\AppData\Local\YNote\data\weixinobU7Vjt-AmHOlU63ZT0giGOqKtns\02f0591f472a45aeb5852a725e8a33ec\clipboard.png

C:\Users\Administrator\AppData\Local\YNote\data\weixinobU7Vjt-AmHOlU63ZT0giGOqKtns\cbf7fb0fa55f4340b38fbeb5676daae4\clipboard.png

where条件和having条件的区别:
where的作用是对分组前的数据进行过滤
having的作用是对分组后的数据进行过滤
where的条件是不能使用聚合函数

聚合函数:一般是结合着分组去使用,但是也可以不结合分组使用
select count(*) from 表;统计表有多少行
select count(1) from 表;统计表里有多少行数据
select count(字段) from 表;==》统计某字段在表中有多少条数据;

求和sum():只能对数值求和
select sum(字段) from 表==》求表的字段内数据求和
select 字段,sum(字段2) from 表 group by 字段1;对字段1分组,并将字段1的字段2数据求和

avg()求平均:只能对数据进行求平均

select max/min(字段1) from 表;求表中字段1最大/最小值(数值、时间)

select max(字段1),min(字段1),max(字段1)-min(字段1) from 表
在SQL语句中进行四则运算
对字段进行取别名则在后面加上 as 别名

distinct() 去重
select distinct(字段1) from 表;对表内字段1去重

改update...set
一般是通过where条件进行修改数据的,如果不加where条件进行过滤,则会对这个字段的值都发生修改
update test set time='2021-12-16' where sid=6;
设置time字段的值为2021-12-16,当sid为6

update test set name='xiaohong',class='dcs37' where sid=1;
将sid=1、class为dcs37的name改为xiaohong

update 表名 set 字段=xxx值 where 条件字段=值;
update 表名 set 字段1=xx,字段2=yy where 条件字段=值;==》同时更新多字段的值

删 delete
通过where条件进行删除匹配的数据
delete from 表 where 字段=值

面试题:
mysql中清空表中数据的几种方式:
1.delete: 只是删除表中的数据,并不释放空间
               再次插入数据时,自增长还是累积递增
                  delete from 表
2.truncate:直接删除表中的数据,保留表结构,释放空间
                   再次插入数据是,自增长从1开始
                   truncate 表
3.drop:整个表都被删除,删除数据,释放空间,删除表结构

数据库备份:
两种方式
一、直接在mysql中通过SQL语句对表进行备份
1.先备份 表结构
create table 新表名 like 旧表;
2.通过select查询旧表的数据,并插入旧表
insert into 新表 select * from 旧表;

二、在Linux系统,对数据库中某个库的所有的表进行备份,并还原(通过mysqldump 指令进行备份)
1.备份---在Linux界面执行:
mysqldump -uroot -p123456 需要备份的库名 > 备份脚本文件(.sql结尾的文件)
mysqldump -uroot -p123456 dcs37 >dcs37.sql
对本地的mysql中的dcs37库进行备份,备份为dcs37.sql文件
2.还原
(1)创建一个新的空库--在mysql中执行
(2)还原备份文件--在Linux中执行









页: [1]
查看完整版本: 第十天笔记