杭州10期-谢睿阳 发表于 2021-8-11 20:15:00

笔记-单表、多表

单表语句
(1)查询一个表中的所有的数据
格式 :      select *from表名                  查看表
注意:* 表示所有,每个语句后要有;
(2)查询表中具体的字段(指定的字段)
格式:select 字段名1,字段名2 from 表名
(3)查询表中具体的字段取别名(别名是在结果查看,原表不变)
格式: select 表中的名字as “别名”,表中的名字 “别名”   from表名
select name as “姓名”,age “年龄”   from表名          注:as可以省略
(4)查询指定内容
格式:select *from表名 where+条件;
如:select *from表名 where 字段名=字段;
where条件使用注意
比较运算符
(1)where+条件((= )等于   、(! =)不等于、(<>)不等于   、(>)大于   (<)小于、(>=)大于等于、(<=)小于等于)
(2)and (与)   同时满足所有条件
(3)or(或)       当有多个条件时满足其中任意一个条件   
(4)between..... and......   在什么范围之间                                 包含本身
(5)in 在一组数据种匹配:
select* from表名   where 字段名in(数组)
select* from   emp   where dept2in(101,102,110);
(6)is null 为空      is not null非空
多行注释:            ctrl+/
取消多行注释:       ctrl+shift+/
单行注释:                #            

排序
对表中的数据进行排序
对表中的数据排序:order by
acs升序
select* from   表名order by字段 acs;
select* from   表名order by字段 ;
可以不填asc
desc降序select* from   表名order by字段 desc;
二次排序:select* from   表名order by字段 desc   ,字段 acs;
模糊匹配like%:匹配0个字符或多个字符
_:表示一个字符
select* from   表名where字段名 like“字符 %”;      匹配开头包含字符的
select* from   表名where字段名 like“%字符%”;       匹配中间包含字符的
select* from   表名where字段名 like“% 字符”;         匹配结尾包含字符的
select* from   表名where字段名 like“_ 字符”;      匹配固定位置字符包含字符
限制查询limit   后面接两个值,第一个值表示下标(索引),第二个值时步长
备注:一个表中索引是从0开始
格式:select* from   表名limit开始行数(不包括本行),需查看行数数量;
select* from   表名limit2,3;
格式:select* from   表名limit需查看行数数量;默认从零开始
select* from   表名limit3;从零开始查看3行
函数:max最大值   selectmax(age)from   表名 ;
min最小值   selectmin(age)from   表名 ;
avg平均值      selectavg(age)from   表名 ;
count统计数   select count(age)from   表名 ;    有年龄的数据有多少个
sum求和          selectsum(age)from   表名 ;   年龄的总和
distinct去重      selectdistinct(dept2)from   表名 ;去除重复值
分组查询group by
一般不单独使用,通常和函数组合使用
selectmax(age)from   表名group by   字段名;
group by    后查询出来的结果,在需要的条件下可以接having
SELECTdept2 ,max(age)ass from   empgroupbydept2 HAVINGs>50 ;
having+条件与where+条件 用法一样,但是场景不一样,一般group by后面接having
备注:函数求出后需要设置别名,然后进行语句的操作
改数据
update.....set
update表名   set name=“成全”where   sid=123;
update表名   set 修改字段名=“字段新值”where田间;
删除数据
delete删   可以恢复
truncate 快速删除表内数据    无法恢复
drop 删除   删除表和数据
删除速度drop>truncate >delete
delete from 表名;                           删除表中所有数据
delete from 表名 where 条件;      删除表中指定条件的数据
truncate表名;            快速删除表中所有数据表取别名:



备份表结构:
create table表名like   表名1; 备份一个与表名1结构相同的新表;
备份数据:insert into 新表(有表结构)select *from 备份表1;备份表1 的数据备份部分数据
先备份一个表,然后备份数据
insert into 新表(有表结构)(字段1,字段2)select   字段1,字段2
from 备份表1;备份表1的部分数据
备份表结构和数据
creat table 表名 as(select *from 表名1);备份表1 的结构和数据===================================================================
linux中备份数据库
mysqldump -u root -p 原数据库>home/数据库脚本.sql
mysqldump -u root -p hz10>home/hz10bf.sql    备份数据


还原数据
mysql -u root -p
1.先建立一个新的空库
2.在linux中还原
mysql -u root -p   新库名<hz10bf.sql

=========================================================

多表:
什么是多表关联查询?
定义:查询数据来源于多张表
主要讲
1、内连接(基本内连接和隐藏内连接)
2、左连接(左外连接)
3、右连接(右外连接)
4、全连接(全外连接)

========================================================
1、笛卡尔积查询(了解):根据两张表相乘得到的结果:比如表一有4条数据,表二有6条数据,查询出来就是24条且包含大量错误,通常不使用
       格式:select * from 表一,表二;
2、内连接(普通内连接、隐藏内连接)
      查询两个表共有的关联数据
   2.1、普通内连接
       格式    select * from 表一 inner join 表二 on表一. 关联字段=表二.关联字段;

   2.2、隐藏内连接
      格式   select * from 表一,表二 where 表一. 关联字段=表二.关联字段;
3、左连接(以左表为主,右表有关联的数据显示,没有的显示null)
格式: select * from 表一 left join 表二 on表一. 关联字段=表二.关联字段
4、右连接(以右表数据为准,左表有关联的数据显示,没有的显示nul)
格式:select * from 表一rightjoin 表二 on表一. 关联字段=表二.关联字段
5、左独有数据(方法,左独有,以右表字段为空)
结构select * from 表一 left join 表二 on表一. 关联字段=表二.关联字段 where 右表字符 is null
6、右独有的数据(方法,右独有,以左表字段为空)
结构select * from 表一 right join 表二 on表一. 关联字段=表二.关联字段 where 左表字符 is null
7、左独有+右独有
   union 拼接
结构:左独有 union 右独有
8、全连接
   8.1、内连接+左独有+右独有
   8.2、右连接+左独有
   8.3、左连接+又独有

页: [1]
查看完整版本: 笔记-单表、多表