一、SQL简介
1.1 SQL是什么
SQL是结构化查询语言,它是一种用于存储,操作和检索存储在关系数据库中的数据的计算机语言
1.2 SQL命令
1)DDL——数据定义语言
序号 | 命令 | 描述 |
---|---|---|
1 | CREATE | 用于在数据库中创建新表,表视图或其他对象 |
2 | ALTER | 用于修改现有数据库对象,例如:表 |
3 | DROP | 用于删除整个表,数据库中的表或其他对象的视图 |
2) DML——数据操纵语言
序号 | 命令 | 描述 |
---|---|---|
1 | SELECT | 从一个或多个表中检索某些记录 |
2 | INSERT | 创建一条记录 |
3 | UPDATE | 用于修改(更新)记录 |
4 | DELETE | 删除记录 |
3)DCL——数据控制语言
序号 | 命令 | 描述 |
---|---|---|
1 | GRANT | 为用户提供权限 |
2 | REVOKE | 撤销用户授予的权限 |
1.3 数据的完整性
-
实体完整性 - 表中没有重复的行。
-
域完整性 - 通过限制值的类型,格式或范围,为给定列强制执行有效条目。
-
参照完整性 - 其他记录使用(引用)导致这些行无法删除。
-
用户定义的完整性 - 实施一些不属于实体,域或参照完整性的特定业务规则
1.4 SQL约束
-
NOT NULL约束 - 确保列不能具有
NULL
值。 -
默认值约束 - 在未指定列时为列提供默认值。
-
唯一约束 - 确保列中的所有值都不同。
-
主键 - 唯一标识数据库表中的每一行/记录。
-
外键 - 唯一标识任何其他数据库表中的行/记录。
-
检查约束 -
CHECK
约束确保列中的所有值都满足特定条件。 -
索引 - 用于非常快速地从数据库创建和检索数据。
1.5 数据库范式
1) 第一范式(1NF)
-
定义所需要的数据项,因为它们成为在表中的列。放在一个表中的相关的数据项。
-
确保有数据没有重复的组。
-
确保有一个主键。
1.6 运算符
变量a
的值是:10
,变量b
的值是:20
1) SQL算术运算符
操作符 | 描述 | 示例 |
---|---|---|
+ | 加法,执行加法运算。 | a + b = 30 |
- | 减法,执行减法运算。 | a + b = -10 |
* | 除法,执行除法运算 | a * b = 200 |
/ | 用左操作数除右手操作数 | b / a = 2 |
% | 用左手操作数除左手操作数并返回余数 | b % a = 0 |
1.7 在MySQL中创建表的示例
CREATE TABLE regions (
region_id INT (11) AUTO_INCREMENT PRIMARY KEY,
region_name VARCHAR (25) DEFAULT NULL
);
CREATE TABLE countries (
country_id CHAR (2) PRIMARY KEY,
country_name VARCHAR (40) DEFAULT NULL,
region_id INT (11) NOT NULL,
FOREIGN KEY (region_id) REFERENCES regions (region_id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE locations (
location_id INT (11) AUTO_INCREMENT PRIMARY KEY,
street_address VARCHAR (40) DEFAULT NULL,
postal_code VARCHAR (12) DEFAULT NULL,
city VARCHAR (30) NOT NULL,
state_province VARCHAR (25) DEFAULT NULL,
country_id CHAR (2) NOT NULL,
FOREIGN KEY (country_id) REFERENCES countries (country_id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE jobs (
job_id INT (11) AUTO_INCREMENT PRIMARY KEY,
job_title VARCHAR (35) NOT NULL,
min_salary DECIMAL (8, 2) DEFAULT NULL,
max_salary DECIMAL (8, 2) DEFAULT NULL
);
CREATE TABLE departments (
department_id INT (11) AUTO_INCREMENT PRIMARY KEY,
department_name VARCHAR (30) NOT NULL,
location_id INT (11) DEFAULT NULL,
FOREIGN KEY (location_id) REFERENCES locations (location_id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE employees (
employee_id INT (11) AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR (20) DEFAULT NULL,
last_name VARCHAR (25) NOT NULL,
email VARCHAR (100) NOT NULL,
phone_number VARCHAR (20) DEFAULT NULL,
hire_date DATE NOT NULL,
job_id INT (11) NOT NULL,
salary DECIMAL (8, 2) NOT NULL,
manager_id INT (11) DEFAULT NULL,
department_id INT (11) DEFAULT NULL,
FOREIGN KEY (job_id) REFERENCES jobs (job_id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (department_id) REFERENCES departments (department_id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (manager_id) REFERENC