单表语句
(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 dept2 in(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 表名 limit 2,3;
格式:select * from 表名 limit 需查看行数数量; 默认从零开始
select * from 表名 limit 3; 从零开始查看3行
函数:max最大值 select max(age)from 表名 ;
min最小值 select min(age)from 表名 ;
avg平均值 select avg(age)from 表名 ;
count统计数 select count(age)from 表名 ; 有年龄的数据有多少个
sum求和 select sum(age)from 表名 ; 年龄的总和
distinct去重 select distinct(dept2)from 表名 ; 去除重复值
分组查询 group by
一般不单独使用,通常和函数组合使用
select max(age)from 表名 group by 字段名;
group by 后查询出来的结果,在需要的条件下可以接having
SELECT dept2 ,max(age) as s from emp group by dept2 HAVING s>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 表一 right join 表二 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、左连接+又独有
|
|