整理一下自己印象笔记中积累的知识点。
★SQL语句的执行顺序:
5 select foo,count(foo)
1 from pokes
2 where foo>10
3 group by foo
4 having count(*)>5
6 order by foo
★数据库范式:
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;(即属性不能被分割!)
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;(即主键能决定一个记录!不能有部分依赖!即A和B是主键,C单独由B决定)
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。(即一个表中不存在传递依赖!即A是主键,C却可以由B决定)
★在数据库系统中,产生不一致的根本原因是 (D)
A.数据存储量太大 B.没有严格保护数据 C.未对数据进行完整性控制 D.数据冗余
★在下面的描述中,哪些不属于数据库安全性的措施()AC
A. 普通ZIP压缩存
B. 关联加密存储
C. 数据分段
D. 授权限制
E. 数据多机备份
解析:A和C跟数据库安全无关。
有这样一个表,要求检索出第二大的数据
+----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+
# Write your MySQL query statement below
SELECT max(Salary) As SecondHighestSalary
FROM Employee
WHERE Salary<(SELECT max(Salary) FROM Employee)
有这么2个表,请给出所有人的地址,而且地址可以为空!
需要用到外部联结,即联结起来时,有的属性可以为空,用LEFT JOIN ……ON 或者RIGHT JOIN……ON
Table: Person
+-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId | int | | FirstName | varchar | | LastName | varchar | +-------------+---------+ PersonId is the primary key column for this table.
Table: Address
+-------------+---------+ | Column Name | Type | +-------------+---------+ | AddressId | int | | PersonId | int | | City | varchar | | State | varchar | +-------------+---------+ AddressId is the primary key column for this table.
# Write your MySQL query statement below
SELECT FirstName,LastName,City,State
FROM Person LEFT OUTER JOIN Address
ON Person.PersonId = Address.PersonId
找出表中第N大的数据,利用函数
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N=N-1; //N-1要用在这里 #
RETURN (
# Write your MySQL query statement below.
SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT N,1 #从第N行开始选取1行。切忌行从0开始算的,不可以出现计算符如N-1
);
END