网站首页 > 技术文章 正文
本系统为@牛旦教育IT课堂在微头条上的内容,
为便于查阅,特辑录于此,都是常用SQL基本用法。。
前两篇连接:
(三):常用SQL系列之(三):记录叠加、匹配、外连接及笛卡尔等
(四):常用SQL系列之:Null值、插入方式、默认值及复制等
(五):常用SQL系列之(五):多表和禁止插入、批量与特殊更新等
(六):常用SQL系列之(六):删除方式、数据库、表及索引元信息查询等
SQL点滴(42):如何直接通过SQL语句查看数据表的约束信息?
也就是说,我想查看数据库中某一表的约束定义以及所基于的约束列信息,那在数据库中如何实现呢?
1)在MySQL中,可以通过这样系统表(information_schema.table_constraints 和information_schema.key_column_usage)进行关联查询。参考语句如下:
SELECT
a.table_name,
a.constraint_name,
b.column_name,
a.constraint_type
FROM
information_schema.TABLE_CONSTRAINTS a,
information_schema.key_column_usage b
WHERE
a.TABLE_NAME = 'tx_department'
AND a.TABLE_SCHEMA = 'test'
AND a.TABLE_NAME = b.TABLE_NAME
AND a.TABLE_SCHEMA = b.TABLE_SCHEMA
AND a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
以上实现也可以直接适用SQL Server和PostgreSQL。
2)在Oracle中,通过查询系统表SYS.ALL_CONSTRAINTS和SYS.ALL_CONS_COLUMNS参考语句如下所示:
select a.table_name,a.constraint_name,b.column_name,a.constraint_type
from all_constraints a, all_cons_columns b
where a.table_name = 'mytable'
and a.owner = 'mydb'
and a.table_name = b.table_name
and a.owner = b.owner
and a.constraint_name = b.constraint_name ;
3)在DB2中,通过查询系统表SYSCAT.TABCONST和SYSCAT.COLUMNS来查看约束,具体实现,自己动手来试试吧。
SQL点滴(43):数据表中对数字列的平均值计算问题 。
如果我们我们要对员工表的 薪资列进行平均值进行统计计算,需要注意如下问题:
1)按部门计算各部门的薪资平均值,参考SQL如下:
select deptno,avg(salary) as avg_sal from employee group by deptno ;
注意这里是按部门进行分组在进行平均值计算的;
2)对所有员工进行平均值进行计算,参考SQL如下:
select avg(salary) as avg_sal from employee ;
不带where子句,对所有非null值进行计算;
3)若要对null值也进行平均计算,你可以使用我们前面说过的函coalesce函数,参考如下:
select avg(coalesce(salary,0)) from employee ;
需要注意,group by 列 不一定要包含在select列表中。
好了,你自己操练一把吧。^_^
SQL点滴(44):如何找出某列中的最大/最小值 ?
比如计算雇员列表中薪资列中的最大值和最小值。当然你还可以扩展每个部门的最高值和最低值。要实现这个目的,我们可以这么干,参考SQL如下:
select min(salary) as min_sal,max(salary) as max_sal from employee ;
若要查看每个部门的最高工资和最低工资,那要怎么做?也就是要根据部门分组再进行类似上面的查询,参考SQL如下:
select deptno, min(salary) as min_sal,max(salary) as max_sal
from employee group by deptno ;
特别注意:min和max函数会忽略null值。假设上述有两个部门10和99的,而salary为null,那上面的结果就会有只有部门号而没有大小值的行出现。
好了今天的一则分享就这些,试试看看。^_^
SQL点滴(45):如何计算数据表中某列非NULL值的数量?
也就是说,数据表某类的列值,可以有值,也可以为空,如何只计算非空的列数呢?
其实这是个细节问题,只要稍加注意就可计算出。当我们用count(*)来计算行时,是包含null值和非null值的的。但如果是指明列明,则就不会把null计算在内。所以,为了完成上述任务,比如想计算有奖金的员工数量,可以这样来实现:
select count(reward) from bonus.
就这么简单,试试吧。
本篇就辑录到这,点个赞分享出去吧。
猜你喜欢
- 2024-10-17 oracle数据库设计总结|三大范式 oracle数据库设计规范
- 2024-10-17 数据库(Oracle)序列(Sequence)的基本使用
- 2024-10-17 oracle日常巡检--检查数据库安全 oracle问题排查
- 2024-10-17 浅谈Oracle的执行计划 oracle执行计划sql
- 2024-10-17 [Oracle数据库] Oracle事务和常用数据对象
- 2024-10-17 SQL FOREIGN KEY 约束 sql语句的约束条件
- 2024-10-17 oracle每天做巡检时怎么检查数据库安全呢?
- 2024-10-17 Oracle与其他数据库的区别 oracle数据库和mysql区别
- 2024-10-17 Oracle项目管理系统之进度控制 oracle 项目管理软件
- 2024-10-17 一文搞懂Oracle 0 至 6 级锁(附案例详解)
你 发表评论:
欢迎- 05-11FANUC修改前端目录教程
- 05-11前端分享-Set你不知道的事
- 05-11jq+ajax+bootstrap改了一个动态分页的表格
- 05-11千万级大表分页查询效率剧降,你会怎么办?
- 05-11Elasticsearch深度分页
- 05-11如何写一个简单的分页
- 05-11手速太快引发分页翻车?前端竞态陷阱揭秘
- 05-11「linux」Socket缓存是如何影响TCP性能的?
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)