java sql语言扩展

sql语言分类

SQL分类:

DCL:数据控制语言。grant --授予用户访问权 deny--拒绝用户访问  revoke --解除用户访问权限

         DDL:数据定义语言。 对数据库、表结构的操作(创建、修改、删除 ) create、alter、drop 。  数据库设计软件替代

         DML:数据更新语言。 对表数据的更新(增加、修改、删除) insert into、update、delete from。

         DQL:数据查询语言。 select

面试题1:SQL语言的四类程序设计语言是什么?DDL,DML,DCL,TCL。

   TCL:事务控制语言:commit 、rollback

1.2、sql查询语句书写和执行顺序

 书写顺序:

                  select字段 from 表名 where 条件 group by 字段 having 运算 order by 字段 limit

 执行顺序:

 执行顺序:From 表名  Where 伪表条件 Gourp by 字段  Having 运算区条件  Select字段         Order by 字段 Limit  

From 表名   把数据从硬盘读取出来,形成内存中的一张伪表

Where 条件  对伪表进行条件运算

Gourp by 字段  分组,字段值相同的分在一组。

划分了不同的运算区,运算区相互之间没有影响

         (原来的伪表就不存在)

Having 运算    是在每个运算区中都分别进行一次运算

Select 字段       把各个运算区进行了合并,新伪表

把每个运算区的第一条数据拿出来拼接

注:如果该运算区第一条没有数据,该运算区没有返回数据

假如:第一条没有,第二条有数据,也叫做没有返回数据

Order by 字段  对某个字段进行值的升序、降序排序

Limit           对新伪表进行限制显示(分页)

思考题

SELECT * FROM product2 GROUP BY cid HAVINGpid!='a'

SELECT * FROM product2 GROUP BY cid HAVINGpid!='b'

SELECT * FROM product2 WHERE pid!='a'GROUPBY cid

注意:

Count,sum,min,max,avg 聚合函数---分组函数----只能在运算区中执行。

问题来了:SELECT COUNT(*) FROM product;为什么此句没有运算区能执行?

特殊:SELECT COUNT(*) FROM product;

                  因为它是将整个伪表划分到一个运算区中,底层把条件进行having执行。

                  把结果放置到select 字段中

where和having的区别?

Where:

                  ①伪表中进行运算

                  ②先执行

                  ③不可以使用分组函数

Having:

                  ①各个运算区中分别进行运算

                  ②后执行

                  ③可以使用分组函数


猜你喜欢

转载自blog.csdn.net/shitianhang123/article/details/79091282
今日推荐