数据库常用命令

Order by 排序
Order by 列名 desc 降序 从高到低
select * from 表名 order by 列名 desc
Order by 列名 ASC 降序 从底到高
select * from 表名 order by 列名 asc
where和having的区别
where是对表中的数据进行过滤,后面不能用聚合函数
having是对分组进行过滤,后面可以用聚合函数,必须和group by一起使用
Limit 限制显示行数 如:limit3 只显示前3行
limit2,6 显示从第2行之后要6行,显示的是3、4、5、6、7、8、
select 列名,列名,from 表名 只显示查询的两列信息
shelect * from 表名 where 列名=“1” or 列名=“2” 两个条件只要满足一个
shelect * from 表名 where 列名=“1” and 列名=“2” 两个条件必须都满足
查询什么或什么的 用or、查询什么的什么用and
like 模糊查询 shelect * from 表名 where 列名 like“张%” 查到的是首字为“张”的
like 模糊查询 shelect * from 表名 where 列名 like“%张%” 查到的是包含“张”的
not like 不含
between and 范围查询 select * from 表名 where 列名 between001and005,查到的事001-005的信息
查询什么的什么 是两个条件都满足,要用到and连接
比如:查询语文成绩在60-90分的信息
select * from 表名 where 列名=“语文” and 分数列 between 60 and 90
in
where和having的区别
where是对表中的数据进行过滤,后面不能用聚合函数
having是对分组进行过滤,后面可以用聚合函数,必须和group by一起使用
 
 
数据库增删改查基本语句
1、insert into 表名 values
insert into 表名(列名1,列名2,列名3) values (值1,值2,值3)
如果总共3列并插入三个值,可以写为:insert into 表名 values (值1,值2,值3)
如果总共4列,插入不等于4列,要全部写完整
2、delete from 表名
删除其中一项
shelect * from 表名 where 列名=“值”
delete from 表名 where 列名=“值”
3、update 表名 set 字段=新值 where 条件
4、select * from 表名 where 条件
5、select * from 表名 where 列名 =“一”or 列名=“二” or 列名=“三” or 列名=“四”
也可以:select * from 表名 where 列名 in (“一”,“二”,“三”,“四”)
6、in的用法 where 列名 in(“一”,“二”,“三”,“四”)
6、列名 not in (“值”)不要这一项
7、去重:select distinct 列名 from 表名
8、count 统计行数,count(*)和count(列名)是一样的效果
SELECT COUNT(*) FROM 表名 WHERE 列名="值" OR 列名="值"
9、求平均数 AVG(score)
select * 列名,avg(数列)from 表名 where 列名=“值”
10、求总数 sum
select * 列名,sum(score)from 表名 where 列名=“值”
11、求最大 MAX
select * 列名,max(score)from 表名 where 列名=“值”
11、求最小
select * 列名,min(score)from 表名 where 列名=“值”
12、求平均+别名
select * 列名,avg(数列)from 表名 where 列名=“值”
select * 列名,avg(数列)as 平均分数 from 表名 where 列名=“值”
13、求分组 group by
select * FROM 表名 GROUP BY 列名
求分组后总成绩:SELECT 列名,SUM(score) FROM 表名 GROUP BY 列名
求分组后总成绩+别名:SELECT 列名,SUM(score) as总分 FROM 表名 GROUP BY 列名
14、组过滤 Having
SELECT 列名,SUM(score) as总分 FROM 表名 GROUP BY 列名
Having SUM(score) 大于小于或等于 数值
单表分组+聚合函数
查询平均成绩大于60分的同学的学号
selece 学号,avg(分数)as 平均分数 from 表名 group by name having avg(分数)>60
 
查询表格 seleter * from 表名
查询表格里的某一列 seleter * from 表名 where 列名
查询表格里的某一列 seleter * from 表名 where 列名 信息
查询表格里为空的 seleter * from 表名 where 列名 is null
查询表格里不为空的 seleter * from 表名 where 列名 is not null
修改表格里的信息 update 表名称 set 要改的内容 where 要改的位置
增加一行:insert into 表格名 values(对应值)文字要用英文双引号,数值不用
update 更新
set 设置
update 表名称 set 要改的内容
例如:把xiemingyang3表格中分数为60的都改成null
UPDATE xiemingyang3 SET gerde =null WHERE gerde =60
 
两表联查
inner join的用法
一、内连接查询  inner join
关键字:inner  join   on
语句:
select *
from 第一个表名
inner join 第二个表名
on 第一个表名 = 第二个表名;
两个表a、b相连接,要取出id相同的字段。
select * from a inner join b on a.aid = b.bid
 
二、左连接查询 left join
说明: left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL
关键字:left join on
语句:
select *
from 第一个表名
eft join 第二个表名
on 第一个表名 = 第二个表名;
那么left join 指: 首先取出a表中所有数据,然后再加上与a、b匹配的的数据。
select * from a left join b on a.aid = b.bid
三、右连接 right join
说明:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
关键字:right join on 
语句:
select *
from 第一个表名
right join 第二个表名
on 第一个表名 = 第二个表名;
指的是首先取出b表中所有数据,然后再加上与a、b匹配的的数据。
 
 
注意:左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 
 
内连接和右连接的区别:
内连接只显示所有有关联的数据.
右链接,显示左边表中的所有数据,右边表数据数据少了会补NULL值
 
1.内连接,显示两个表中有联系的所有数据;
  2.左链接,以左表为参照,显示所有数据;
  3.右链接,以右表为参照显示数据;
full join 全连接
mysql不支持全连接 oracle支持全连接
全连接查出来的结果 相当于左连接和右连接的总和,左右数据都能查出来
语法:select * from 表名 full join 列名 on 列名 表名1.值 = 表名2.值
 

posted @ 2021-08-10 08:56  谢明阳  阅读(693)  评论(0)    收藏  举报