1,where 先筛选 在order by排序;
排序有升降,
select * from table order by chinese,english;
意思是语文成绩升序 如果语文成绩一样,按照英语排序;
2,总结SQL上
DDL 创建 修改表结构
DML 增删改;
DQL基本查询 带where的条件 order by 排序
关键词 select from updata set
order by ,as, like,
===============================================
3,函数---数据库定义好的 需要调用
直接放在语句中,可以放置在
查询的地方 select 函数(列)from 表格;
筛选的后面 select 列 from where 函数;
按照手册学习;
4,函数功能,从弱到强---函数都有返回值;
比较函数
ifnull(值);空为1,否则为0;
数字函数
abs 绝对值 floor 向下取整 mod(5,2)取余数等
日期和时间
now() 现在的时间, year(A)截取a的年,month(A)截取a的月,date(A);
控制流程
和Java的三木运算符
select name ,if(name>17,1,2);条件符合 显示1,否则2;
ifnull(id,V);如果id是空则把v赋值
字符串
类比string类
length() length(); 长度
concat() concat(); 拼接
substr() substring();截取
insert() indexOf(); 索引a在的地方
replace() replace();替换
upper() toUpperCase();变大写
lower() toLowerCa se();变小写
分组前的小知识
去重复的关键字
select distinct age from student;
要是在 age 列有相同的东西 行数会变少 ,order by A,B意思是按a升序,a相同则按b比较
distinct 列,列,和order by 相似,后面两个列是属于同一个条件
分组函数
count(age),个数
max(age),最大值 min(age)最小值 avg()平均值 sum()求和
分组函数和去重复相结合的问题。
分组条件
一旦分组的条件存在分组条件,只能显示分组的信息和函数
group by(where大于group by)
select count(id) from student group by classid
关键字补充
having关键字和where类似
where>group by >having>order by
------------------------------嵌套查询-------------------------------
一个完整的sql语句里面 嵌套了另外一个完整的sql语句
用法:可以把一个查询的结果作为条件再次查询一次
也可以把表格重新起名
select * from ( select * from table where id = a; ) newtablename;
嵌套可以多表查询
===================嵌套查询========================
对一个表格进行分组在用count等函数
一旦分组的条件存在分组条件,只能显示分组的信息和函数
group by(where大于group by)
select A from student group by classid
先按照ID分组,行数变少,显示的只能有两种,
A可以
一是分组的条件classid,(直接显示的是分组的东西)
分组函数count(id);(显示的是分组之后的信息,再次进行函数如count(id),avg(english)的数值)
=================================以上重要的分割线========================
几个关键字使用补充
(not)in 满足查询子集中的某一个就可以
where classid in (数字 / 另一个查询的结果)
意思就是classid是1或者2 就输出 ;
any 表示满足其中一个大于的就好
where classid >any (数字/select语句); 大于any括号后面的就可以输出
some
和any完全一致
all
满足查询子集中的所有结果
where classid >all(数字/select语句)
要满足括号里面的所有的查询的条件;
集合操作 并集(Oracle数据库中有的--->交集interset 差集 minus)
union (结合,合并的意思 并集)
两张表格
select ida,namea from A union select idb nameb from B;
把AB表格合在一起,
1列数为一致,
2类型无所谓
3显示的是 ida namea可以自己改名字
***4注意和union all的区别(
用union的时候 会把表格去重复(留第一个),会排序,性能慢;
union all 不会去重复 不会排序性能快;)
=========================练习 第九课===========================
insert into users values(1,'赵一一','C','1980-10-11',10000,'程序员',now());
insert into users values(2,' 钱二二','C','1981-10-12',20000,'程序员',now());
insert into users values(3,'孙三三','C','1982-9-1',30000,'项目经理',now());
insert into users values(4,'李四四','JAVA','1983-9-2',40000,'程序员',now());
insert into users values(5,'周五五','JAVA','1984-11-1',50000,'程序员',now());
insert into users values(6,'吴六六','JAVA','1985-1-1',50000,'程序员',now());
insert into users values(7,'郑七七','JAVA','1986-11-2',70000,'项目经理',now());
-------------------
DEPT部门表部门编号部门名称坐落城市deptno dname loc(10,'ACCOUNTING','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON')
条件筛选练习(EMP表)
1.查询部门30中的雇员
2.查询所有办事员(CLERK)的姓名、编号和部门
3.查询佣金(comm)高于薪金(sal)的雇员
4.查询哪些人没有佣金(comm)
5.查询佣金(comm)高于薪金(sal)
60%的雇员7.显示所有人的姓名,月薪,年薪(起别名)
----------------------------------------------------------------------------------
上中 总结
DDL创建等
DQL
where
order by
group by having
嵌套 in any some all union union all