6 The Database Language SQL)(13~14周)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
空值运算规则:
– NULL值与任何值的任何算术运算结果都为 NULL值 – NULL值与任何值的任何比较结果都为 Unknown 布
尔值。
6.1 Simple Queries in SQL 简单查询
6.1.6 Null Values 空值和涉及空值的比较 注意:NULL不是常量,SQL中,不能显式将 NULL作为操作数使用,如NULL+3错误表达式 判断表达式的值是否为 NULL 表示为:
– Expression IS [NOT] NULL
– 运算结果为布尔值 True 或 False 。
例:Select * From salesman
Where deptid IS NULL
注意:聚合函数 Sum, Avg 等可作用于允许空值 NULL 的属性上,计算时,所有空值的行不参 与聚合运算。
– –
–
SELECT * FROM customer; 可投影到若干属性: SELECT custid, name FROM customer; AS 别名alias (在新的临时表中 改名运算,改变列名,AS可省略) SELECT custid, name AS custname FROM customer; 表达式 Expression 加减乘除等 SELECT orderno, lineno, singlecost * quantity AS account FROM salesitem; 常量Constant 也可作为一列 SELECT orderno, lineno, singlecost * quantity AS account, ‘Yuan’ AS “RMB” FROM salesitem;
6.1.2 Selection in SQL 选择 WHERE clause:
– Operands(操作数): attributes, constants, aliases – Arithmetic operators(算数运算符): + - * / – Comparison operators(比较算符): = <> > >= < <=
6.1 Simple Queries in SQL 简单查询
6.1.5 Dates and Times 日期和时间
The general format of date:
– 'yyyy-mm-dd', 'mm/dd/yyyy', or 'dd mm yyyy'
The general format of time:
– 一个数据库服务器可支持1个或多个数据库运行。 – 一个表table是一个关系。
– 一个数据库可包含多个表,相互间可建立参照完
整性约束。
– 要访问某个表,必须由数据库服务器先启动该表
所在的数据库。
6.1 Simple Queries in SQL 简单查询 对单个关系的查询 SELECT idno, phone
– 关系代数的运用顺序(操作符优先级):FROM(表) ->
FROM salesman WHERE name = '张三';
SELECT [ ALL | DISTINCT ] select-list --不重复的记录
WHERE(条件) -> SELECT(属性) – 所有SQL语句的关键词、表名、列名大小写无关。 – SQL语句可多行书写。 – SQL语句用分号(英文)结尾。
2.4 An Algebraic Query Language
2.4.5 Projection 投影/选属性
SELECT custid, phone FROM customer WHERE name = '张三'; Movies
title Star Wars Galaxy Quest Waynes’s World year 1977 1999 1992 length 124 104 95 genre sciFi comedy comedy studioName Fox DreamWorks Paramount ProducerC# 12345 67890 99999
商业数据库管理系统符合的标准:
– 都支持ANSI SQL;
SQL的主要内容:
--SQL单行注释 – 很大程度支持SQL2标准; – 支持SQL3的部分标准; /* 多 行 注 释 一般习惯关键字大写,其 – 都有自己的方言。 他小写,注意换行和缩进, 容易阅读,尤其很长的sql */
– DQL数据查询(select) – DML数据操纵(insert, delete, update) – DDL数据定义(create, drop, alter…) – DCL数据控制(grant, revoke…) GRANT给用户授予权限,
d >= d1 AND d <= d2.
– SELECT * FROM salesorder – WHERE signdate BETWEEN '2010-05-01'
–
AND '2010-05-31';
6.1 Simple Queries in SQL 简单查询
6.1.6 Null Values 空值和涉及空值的比较 特殊值--空值NULL表示未知/不存在/缺省信息. 只有允许为空的属性才可能有空值。not null
σlength ≥ 100 AND studioName =‘FOX’(Movies):
title Star Wars year 1977 length 124 genre sciFi studioName Fox ProducerC# 12345
6.1 Simple Queries in SQL 简单查询
那么 a AND b = Min(a,b)
Unknown True Unknown Unknown
a OR b = Max(a,b)
6.1 Simple Queries in SQL 简单查询
6.1.7 The Truth-value Unknown 第三个布尔值
NOT True False False True Unknown Unknown
消除重复元组
6.1 Simple Queries in SQL 简单查询
6.1.1 Projection in SQL 投影 SELECT子句的构成:
– *表示所有属性,缺省次序排列 presents all attributes with default order –
改名是因为 嵌套查询等 中需要
字符串模式匹配Pattern match : s LIKE p
其中 s 是字符属性或字符串,p 是包含 % 或下划线_的字符串模式 匹配规则: – p 中普通字符只和 s 中完全相同的字符匹配; – p 中% 可与 s 中 0 个或多个字符匹配; – p 中一个下划线可与 s 中一个任意字符匹配。 SELECT * FROM salesman WHERE name LIKE '王%'; SELECT * FROM salesman WHERE name LIKE '王_';
NOT a = 1- a
SQL语句如何支持三值逻辑值的比较?
6.1 Simple Queries in SQL 简单查询
6.1.7 The Truth-value Unknown 第三个布尔值 布尔值 Unknown 如何参与逻辑运算?
– Unknown 值作为一个逻辑值,与 True 和 False 构成
三值逻辑。 – 三值逻辑运算:NOT非、AND与、OR或
REVOKE从用户处收回权限。
6 The Database Language SQL
数据库服务器、数据库和表之间的关系:
– 一个数据库服务器Database Server是一个驱动引
擎程序,当驱动起来之后,可提供SQL服务。
– 一个数据库database是一组语义相关的关系模式。
通常可对应某一个或几个文件。
– 'hh:mm:ss.sssss'
d1<d2 means that d1 is earlier than d2.
– SELECT * FROM salesorder
– WHERE signdate < '2010-05-01';
d BETWEEN d1 AND d2 is equivalent to
Select-From-Where statements:
FROM R
[ WHERE cond ] [ORDER BY { expression | integer } [ ASC | DESC ],…]; ASC : ascending 升序;DESC : descending select-list : * | { column-name | expression } [ AS alias-name ], ...
IS [NOT] NULL – Logical operators(逻辑运算符): NOT AND OR 与或非 Example:
SELECT idno, phone FROM salesman WHERE name = ‘Zhangping'; SELECT orderno, lineno, unitprice, quantity, unitprice*quantity AS account FROM salesitem WHERE unitprice>=5000 OR quantity>=3000;
数据库技术与应用
Technology and Application of Database
6 The Database Language SQL
Xiao Cห้องสมุดไป่ตู้en 肖晨
Homework
P256 6.1.2,6.1.3 (中文p151) 不需要写查询结果
6 The Database Language SQL
π t i t l e , y e a r, l e n g t h (Movies)
title Star Wars Galaxy Quest Waynes’s World year 1977 1999 1992 length 124 104 95
πgenre(Movies)
genre sciFi comedy
σlength ≥ 100(Movies):
title Star Wars Galaxy Quest year 1977 1999
Sigma(大写Σ,小写σ,中文音译:西格马)
length 124 104 genre sciFi comedy studioName Fox DreamWorks ProducerC# 12345 67890
2.4 An Algebraic Query Language
2.4.6 Selection 选满足条件的元组/行
Movies SELECT custid, phone FROM customer WHERE name = '张三';
title Star Wars Galaxy Quest Waynes’s World year 1977 1999 1992 length 124 104 95 genre sciFi comedy comedy studioName Fox DreamWorks Paramount ProducerC# 12345 67890 99999
AND True False Unknown True True False Unknown False False False False Unknown Unknown False Unknown
设:True=1; False=0; Unknown=0.5
OR True False Unknown True True True True False True False Unknown
6.1 Simple Queries in SQL 简单查询
6.1.3/6.1.4 Comparison of Strings 串比较/匹配 字符串比较: = <> > >= < <=
商用中非数 值计算多
– 按字典次序决定字符串大小,空串最小。 – 字符串常量用单引号标注。
SELECT * FROM salesman WHERE empid > ‘E00N02';