设为首页 加入收藏

TOP

数据库复习2――SQL基础(二)
2015-07-24 10:25:18 来源: 作者: 【 】 浏览:2
Tags:数据库 复习 SQL 基础
PB12%' group by d# having count(student_id) > 100;

(5)null空值

关系数据库在满足完整性约束的情况下,支持某个tuple的某个属性为null空值,它有一下特性:

算术运算作用于null得到null 聚合函数忽略聚合属性是null的元组 where子句中用is null断言某个属性是null 涉及null的比较,返回一个unknown unknown可以参与逻辑运算,返回值和其逻辑含义保持一致,如unknown and true = true,而unknown and false = unknown 对于unknown的条件P,DBMS认为它是false的 特别注意,count(*)不会忽略unknown的元组

(6)嵌入式子查询

嵌入式子查询是把select语句筛选出的结果当作中间结果,并在此基础上进一步查询的SQL语句

where attr in (subquery)是最常见的用法,比如在dept表中找出是工科院系的系编号d#,在此基础上再来统计个系人数,有以下SQL语句:

select d#, count(student_id) from student where student_id like 'PB12%' and d# in (select d# from dept where type = 'engineering') group by d#;

some和all限定符可以在where从句中配合关系运算符进行筛选,下面是书上最经典的例子:

找出比某些(some)经理工资还高的员工:

select ename from emp where salary > some (select salary from emp where e# in (select mgr from dept));

找出比所有(all)经理工资还高的员工:

select ename from emp where salary > all (select salary from emp where e# in (select mgr from dept));

除此之外,where从句中还可以用exists和unique做存在性和唯一性测试,例子略,配合not还可表示不存在(not exists)以及不唯一/至少两个(not unique)

注:很多DBMS也支持嵌入式子查询出现在select从句中以及from从句中

4.3 修改操作

(1)delete

删除满足条件的元组:

delete from  where P;

修改操作的花样不如查询的多,但很多高级查询语法也可以用在修改操作中,如嵌套select的in、比较运用于where子句中等

删除语句会导致数据完整性受到破坏,如删除了jcguo这个学生之后,课程成绩表中照样有jcguo的成绩,这些问题将在完整性约束中阐述

(2)insert

插入一个元组:

insert into  values (completed attr list of tuple);
or
insert into (some attrs) values (matched partial attr list of tuple);

insert的值也可以来自于潜逃select子查询语句:

insert into (some attrs) (select ...);

(3)update

更新操作基本SQL语法为:

update  set {attr = new attr value}+ where P;

4.4 嵌入式SQL

很多高级语言都支持SQL,多用游标+execute SQL command的接口提供给程序员(见PLSQL一章)

4.5 SQL中的函数

最后,这里简要的复习一下SQL里内置的扩展函数

需要说明的是这些函数基本上都很少用到,因为这些操作大多都交给SQL嵌入的外部高级语言去完成了,这里就列一个表,以供复习查看

(1)字符函数

函数名 函数说明
lower(attr|string value) 把属性attr或字符串字面值value转换为小写
upper(attr|string value) 把属性attr或字符串字面值value转换为大写
initcap(attr|string value) 把属性attr或字符串字面值value的首字母大写(按句处理)
concat(v1,v2) 连接两个属性attr或字符串字面值value
lpad(col|value,n,c) 左补齐v到n个字符,若c不为空则用c填充否则用空格填充
rpad(col|value,n,c) 右补齐v到n个字符,若c不为空则用c填充否则用空格填充
substr(col|value,pos,n) 截取子串,从pos其截取n位
instr(col|value,c,pos,n) 查找字符出现位置,pos是起始查找位,查找第n个出现的字符c
length(col|value) 求字符串长度

(2)数值函数

(3)日期函数

(4)转换函数

注:这一小节感觉不是很有用,就不总结了

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQL系列-SQL语句优化个人总结 下一篇How to backup and restore datab..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)