您的位置:首页 > 数据库

SQL 下

2020-06-29 05:03 1101 查看

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

 

 

 

 

 

 

 

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: