数据库系统概论-第三章

DDL Data-Definition Language 数据定义语言

DDL不仅定义一组关系(表结构),并且能定义关系的信息。

DDL包括:关系的模式(表结构),属性的取值范围,完整性约束(非空,主外键),关系维护的索引集合(表的索引),关系的安全性和权限信息(表权限),关系在磁盘上的物理存储结构.

数据库支持多种基础类型,char类型用于存储固定长度的字符串,比如属性A的取值范围定义为char(10),其取值为'Avi',数据库自动在其后填充七个空格。当属性A的取值范围为varchar(10)时,数据库不会在其后填充空格,所以取值范围为char(10)和varchar(10)的'Avi'在数据库中比较时不一定相等。一般避免使用char.

DML Data-Manipulation Language 数据操作语言

SQL将任何涉及null的运算视为unknown,既不是is null也不是is not null。

大学数据库:
找出Comp.Sci系开设的三个学分的课程
SELECT title from course WHERE dept_name = 'Comp. Sci.' AND credits = 3;

找出名为Einstein的教师所教的所有学生的标识,保证结果中没有重复
SELECT DISTINCT a.s_ID FROM advisor a JOIN instructor i ON a.i_ID = i.ID WHERE i.NAME = 'Einstein';

找出教师的最高工资
SELECT MAX(salary) from instructor;

找出工资最高的所有教师名称
SELECT NAME FROM instructor WHERE salary = (SELECT MAX(salary) as max_salary from instructor);

给Comp. Sci系的每位教师涨10%的工资
UPDATE instructor SET salary = salary * 1.1;

查询所有至少选修了一门Comp.Sci课程的学生名称
SELECT DISTINCT NAME AS name FROM student WHERE dept_name = 'Comp. Sci.';

MYSQL的like是大小写不敏感的,使用binary可以使其区分大小写
SELECT * FROM department WHERE dept_name like binary '%Sci%';

SQL的like是大小写敏感的,使用lower()函数可以使其不分区大小写
SELECT * FROM department WHERE dept_name like lower('%Sci%');

考虑查询

select distinct p.id
from p,a1,a2
where p.id = a1.id or p.id = a2.id;

select from 多表在mysql即是做内连接查询,如果p,a1,a2有

MYSQL如果没有设置的话,在update的时候需要用主键作为where的条件,需要使用SET SQL_SAFE_UPDATES = 0;关闭安全更新设置(1的话则开启安全更新设置)

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

猜你喜欢

转载自www.cnblogs.com/Simon-cat/p/10917503.html