复制表
create table 表明 select * from 待复制表;
复制的内容 包含 表结构 表中的数据
如果想复制的表中不出现原表数据 ,
需要在查询子句 带上不满足查询内容的条件即可
查询
必须满足多个条件的查询
and
多个条件中满足一个
or
要求查询结果不满足列的条件
not != <>
查询条件在2者之间
between ... and 包含匹配值本身
查询的内容在范围已知范围内
in
模糊查询
like
%:表示 0位 或者多位
_:表示1位
通配符:用来在模糊查询中占用查询的位置
排序
order by
正序:默认不写 或者写 asc;
倒序:desc
常用函数
字符串函数
拼接函数:concat(ag1,ag2,...)
SELECT CONCAT(12,sage,'88') from student;
替换函数:replace(列名,原始值,替换值)
SELECT `REPLACE`(ssex,'男','熊') from student where sage >18
截取函数
left(源,index)/right(源,index)
ps:从1开始向右截取index个字符
SELECT LEFT(sname,3) sname from student;
获取字符串的长度
length(源)
在数据库中字段的长度表示不是字符占用的内存大小 表示是
可以存放多少个字符
在数据库中 1个中文有三个长度 字母数字占1个
采用utf-8的编码格式 一个中文汉子占三个字符
采用gb2312:一个中文汉子占二个字符
截取制定字符串的长度
substr(源,开始位置,截取长度)
转换字符串的大小写函数
upper(str):小写 转 大写
lower(str):大写 转 小写
日期函数
获取当前系统日期时间
now()
select now() from dual;
获取当前的系统日期
curdate();
SELECT CURDATE() from dual
获取当前的系统时间
curtime();
SELECT CURTIME() from dual
数学函数
abs(num)://绝对值
返回指定位数的小数值(保留小数点后面的位数 n 四舍五入)
round(源,n)
if 函数
if(表达式,真,假)
SELECT sname,IF(sage>18,if(ssex='男','汗子','妹子'),'娘炮') from student
ifnull(表达式1,表达式2)
如果表达式 1 为null 输出表示2 反之输入表达式1
SELECT id,name,ifnull(create_time,now()) create_time from t_user
聚合函数
统计函数
count(列名); 如果统计的列值为null 则不拉入统计
count(*):统计所有的行数 包括null
count(distinct 字段)
SELECT COUNT(sid) from student where ssex='男'
求和函数
sum(列名)
平均值
avg(列名)
SELECT ROUND(avg(score),2) from score;
最大值/最小值
max(列名)/min(列名)
分组
group by 列名
ps: 在排序 order by 和分组 group by 后面都可以跟上多个表字段,
以,来分别
select azhuanye, COUNT(sid) from student GROUP BY azhuanye,sid order by sid DESC,sname;
分组以后 统计班上各科成绩的最高分 最低分 平均分
SELECT cid,max(score) 最高分, min(score) 最低分,avg(score) 平均分 from score group by cid
ps:要想对聚合函数 进行条件的筛选 需要使用到 having
select 的基本语法
select 查询结果 from 表名 where 列的值要瞒住的条件
group by 分组条件
having 计数必须满足的条件
order by 排序字段
limit 查询行数
多表连接查询
交叉连接:将连接表中的数据都查询出来
内连接:必须存在一定的关联性
from 表1 inner join 表2 inner join 表3 ... on 连接条件 where 查询条件
左连接:以左表数据为准
from 表1 left join 表2 on 连接条件 where 条件查询
右连接
from 表1 right join 表2 on 连接条件 where 条件查询
子查询
查询中还可以在存在查询
在查询中使用子查询 ;
SELECT scid,(select st.sname from student st where st.sid=s.sid ) 姓名,(select cname from course c where c.cid=s.cid) 课程,score from score s ;
在条件中使用子查询
select sname from student where sid in(
SELECT s.sid from score s where s.cid in (SELECT cid from course where cname='英语')
)
在表中使用子查询(临时表)
SELECT t.name,t.s from
(SELECT student.sname name,score.score s from student ,score where score.sid=student.sid) t
create table 表明 select * from 待复制表;
复制的内容 包含 表结构 表中的数据
如果想复制的表中不出现原表数据 ,
需要在查询子句 带上不满足查询内容的条件即可
查询
必须满足多个条件的查询
and
多个条件中满足一个
or
要求查询结果不满足列的条件
not != <>
查询条件在2者之间
between ... and 包含匹配值本身
查询的内容在范围已知范围内
in
模糊查询
like
%:表示 0位 或者多位
_:表示1位
通配符:用来在模糊查询中占用查询的位置
排序
order by
正序:默认不写 或者写 asc;
倒序:desc
常用函数
字符串函数
拼接函数:concat(ag1,ag2,...)
SELECT CONCAT(12,sage,'88') from student;
替换函数:replace(列名,原始值,替换值)
SELECT `REPLACE`(ssex,'男','熊') from student where sage >18
截取函数
left(源,index)/right(源,index)
ps:从1开始向右截取index个字符
SELECT LEFT(sname,3) sname from student;
获取字符串的长度
length(源)
在数据库中字段的长度表示不是字符占用的内存大小 表示是
可以存放多少个字符
在数据库中 1个中文有三个长度 字母数字占1个
采用utf-8的编码格式 一个中文汉子占三个字符
采用gb2312:一个中文汉子占二个字符
截取制定字符串的长度
substr(源,开始位置,截取长度)
转换字符串的大小写函数
upper(str):小写 转 大写
lower(str):大写 转 小写
日期函数
获取当前系统日期时间
now()
select now() from dual;
获取当前的系统日期
curdate();
SELECT CURDATE() from dual
获取当前的系统时间
curtime();
SELECT CURTIME() from dual
数学函数
abs(num)://绝对值
返回指定位数的小数值(保留小数点后面的位数 n 四舍五入)
round(源,n)
if 函数
if(表达式,真,假)
SELECT sname,IF(sage>18,if(ssex='男','汗子','妹子'),'娘炮') from student
ifnull(表达式1,表达式2)
如果表达式 1 为null 输出表示2 反之输入表达式1
SELECT id,name,ifnull(create_time,now()) create_time from t_user
聚合函数
统计函数
count(列名); 如果统计的列值为null 则不拉入统计
count(*):统计所有的行数 包括null
count(distinct 字段)
SELECT COUNT(sid) from student where ssex='男'
求和函数
sum(列名)
平均值
avg(列名)
SELECT ROUND(avg(score),2) from score;
最大值/最小值
max(列名)/min(列名)
分组
group by 列名
ps: 在排序 order by 和分组 group by 后面都可以跟上多个表字段,
以,来分别
select azhuanye, COUNT(sid) from student GROUP BY azhuanye,sid order by sid DESC,sname;
分组以后 统计班上各科成绩的最高分 最低分 平均分
SELECT cid,max(score) 最高分, min(score) 最低分,avg(score) 平均分 from score group by cid
ps:要想对聚合函数 进行条件的筛选 需要使用到 having
select 的基本语法
select 查询结果 from 表名 where 列的值要瞒住的条件
group by 分组条件
having 计数必须满足的条件
order by 排序字段
limit 查询行数
多表连接查询
交叉连接:将连接表中的数据都查询出来
内连接:必须存在一定的关联性
from 表1 inner join 表2 inner join 表3 ... on 连接条件 where 查询条件
左连接:以左表数据为准
from 表1 left join 表2 on 连接条件 where 条件查询
右连接
from 表1 right join 表2 on 连接条件 where 条件查询
子查询
查询中还可以在存在查询
在查询中使用子查询 ;
SELECT scid,(select st.sname from student st where st.sid=s.sid ) 姓名,(select cname from course c where c.cid=s.cid) 课程,score from score s ;
在条件中使用子查询
select sname from student where sid in(
SELECT s.sid from score s where s.cid in (SELECT cid from course where cname='英语')
)
在表中使用子查询(临时表)
SELECT t.name,t.s from
(SELECT student.sname name,score.score s from student ,score where score.sid=student.sid) t