MySQL

MySQL基础知识


MySQL简介

MySQL 是一个关系型数据库管理系统, 由瑞典 MySQL AB 公司开发, 目前属于 Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表 中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL特点

MySQL 是开源的。

MySQL 支持大型系统的数据库。可以处理拥有上千万条记录的大型数据库。 MySQL 使用标准的 SQL 数据语言形式。

MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C 、C++、 Python 、Java 、Perl 、PHP 等。

MySQL 存储数据量较大,32 位系统表文件最大可支持 4GB ,64位系统支持最大的 表文件为 8TB。

MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系 统。

MySQL分类

  1. MySQL分为社区版

    社区版是完全开源免费的,社区版也支持多种数据类型和标准的SQL查询语言,能够对数据进行各种查询、增加、删除、修改等操作,所以一般情况下社区版就可以满足开发需求了。

  2. 企业版

    企业版是收费的。即使在开发中需要用到一些付费的附加功能,价格相对于昂贵的 Oracle、DB2等也是有很大优势的。对数据库可靠性要求比较高的企业可以选择企业版。

MySQL下载和安装与卸载


网上都有

连接MySQL


通过MySQL自带客户端工具

安装完MySQL之后在开始菜单有自带客户端工具打开它

在这里插入图片描述

安装时设置的密码

在这里插入图片描述

Navicat工具的使用

我是使用Navicat Premiunm 15

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

SQL语言


SQL语言简介

结构化查询语言(Structured Query Language)简称 SQL(发音:sequal['si:kwəl]),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL 能做什么?

  • SQL 面向数据库执行查询
  • SQL 可在数据库中插入新的记录
  • SQL 可更新数据库中的数据
  • SQL 可从数据库删除记录
  • SQL 可创建新数据库
  • SQL 可在数据库中创建新表
  • SQL 可在数据库中创建存储过程
  • SQL 可在数据库中创建视图
  • SQL 可以设置表、存储过程和视图的权限

SQL 标准

SQL 是 1986 年 10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了 SQL 正式国际标准。1989 年 4 月,ISO 提出了具有完整性特征的 SQL89 标准,1992 年 11 月又公布了 SQL92 标准,在此标准中,把数据库分为三个级别:基本集、标准集和完全集。在 1999 年推出 99 版标准。最新版本为 SQL2016 版。比较有代表性的几个版本:SQL86、SQL92、SQL99。

SQL语言分类

  1. 数据查询语言(DQL:Data Query Language)其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。关键字 SELECT 是 DQL(也是所有 SQL)用得最多的动词。
    • SELECT
    • FROM
    • WHERE
    • ORDER BY
    • HAVING
  2. 数据操作语言(DML:Data Manipulation Language)其语句包括动词 INSERT,UPDATE 和 DELETE。它们分别用于添加,修改和删除表中的行。
    • INSERT:添加数据
    • UPDATE:更新数据
    • DELETE:删除数据
  3. 数据定义语言(DDL:Data Definition Language)定义数据库对象语言,其语句包括动词 CREATE 和 DROP 等。
    • CREATE:创建数据库对象
    • ALTER:修改数据库对象
    • DROP:删除数据库对象
  4. 数据控制语言(DCL:Data Control Language)它的语句通过GRANT 或 REVOKE 获得许可,确定用户对数据库对象的访问。
    • GRANT:授予用户某种权限
    • REVOKE:回收授予的某种权限
  5. 事务控制语言(TCL :Transaction Control Language)它的语句能确保被 DML 语句影响的表的所有行及时得以更新。
    • COMMIT:提交事务
    • ROLLBACK:回滚事务
    • SAVEPOINT:设置回滚点
注意:
------------------------------------------------------------------------------------------------------------------------------------------
数据操纵语言DML(insert、update、delete)针对表中的数据 ;
而数据定义语言DDL(create、alter、drop)针对数据库对象,比如数据库database、表table、索引index、视图view、存储过程procedure、触发器trigger;

SQL语言语法

  1. SQL语句不区分大小写,关键字建议大写。
  2. SQL语句可以单行或多行书写,以分号结尾。

创建与删除数据库


创建数据库

  1. 使用DDL语句创建数据库

    CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码;
    

示例:

创建一个test 的数据库,并查看该数据库,以及该数据库的编码。

创建数据库:

create database test default character set utf8;

在这里插入图片描述

查看数据库:

show databases;

在这里插入图片描述

查看数据库编码:

select
schema_name,default_character_set_name
from information_schema.schemata
where schema_name = 'test';

在这里插入图片描述

删除数据库

  1. 使用DDL语言删除数据库

    DROP DATABASE 数据库名称;
    

示例:

删除 test 数据库

drop database test;

在这里插入图片描述

选择数据库

在创建表时,需要先选择数据库。

USE 数据库名;

示例:

创建一个名称为 ylsf 的数据库,编码为 utf8。

create database ylsf default character set utf8;

在这里插入图片描述

选择该数据库。

use ylsf;

在这里插入图片描述

的数据库,编码为 utf8。

create database ylsf default character set utf8;

[外链图片转存中…(img-CdqQSNqX-1713676918844)]

选择该数据库。

use ylsf;

在这里插入图片描述

MySQL中的数据类型


MySQL数据库数据类型分类

整数类型

MySQL数据类型 含义(有符号)
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(±9.22*10的18次方)

数值类型中的长度 m 是指显示长度,并不表示存储长度,只有字段指定 zerofill 时有用

例如: int(3) ,如果实际值是 2 ,如果列指定了 zerofill ,查询结果就是 002 ,左边用 0 来 填充

浮点类型

MySQL数据类型 含义
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位

字符类型

MySQL数据类型 含义
char(n) 固定长度,最多255个字符
tinytext 可变长度,最多255个字符
varchar(n) 可变长度,最多65535个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
char和varchar:
------------------------------------------------------------------------------------------------------------------------------------------
1. char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定长。
2. varchar可变长度,可以设置最大长度;适合用在长度可变的属性。
3. text不设置长度, 当不知道属性的最大长度时,适合用text。

按照查询速度: char最快, varchar次之,text最慢。

字符串型使用建议:
------------------------------------------------------------------------------------------------------------------------------------------
1. 经常变化的字段用varchar
2. 知道固定长度的用char
3. 尽量用varchar
4. 超过255字符的只能用varchar或者text
5. 能用varchar的地方不用text

日期类型

MySQL数据类型 含义
date 日期 YYYY-MM-DD
time 时间 HH:MM:SS
datetime 日期时间 YYYY-MM-DD HH:MM:SS
timestamp 时间戳YYYYMMDD HHMMSS

二进制数据(BLOB)

  1. BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写。
  2. BLOB存储的数据只能整体读出。
  3. TEXT可以指定字符集,BLOB不用指定字符集。

创建表与删除表

创建表

  1. 使用DDL语句创建表

    CREATE TABLE 表名(列名 类型,列名 类型......);
    

    示例:

    创建一个 employees 表包含雇员 ID ,雇员名字,雇员薪水。

    create table employees(
    employee_id int,
    employee_name varchar(10),
    salary float(8,2)
    );
    

    在这里插入图片描述

    查看已创建的表。

    show tables;
    

    在这里插入图片描述

删除表

  1. 使用DDL语句删除表

    DROP TABLE 表名;
    

    示例:

    删除 employees 表。

    drop table employees;
    

    在这里插入图片描述

修改表

修改表名

  1. 使用DDL语句修改表

    ALTER TABLE 旧表名 RENAME 新表名;
    

    示例:

    创建一个 employees 表包含雇员 ID ,雇员名字,雇员薪水。

    create table employees(
    employee_id int,
    employee_name varchar(10),
    salary float(8,2)
    );
    

    在这里插入图片描述

    将 employees 表名修改为 emp。

    alter table employees rename emp;
    

    在这里插入图片描述

修改列名

  1. 使用DDL语句修改列名

    ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;
    

    示例:

    将 emp 表中的 employee_name 修改为 name。

    alter table emp change column
    employee_name name varchar(20);
    

    在这里插入图片描述

修改列类型

  1. 使用DDL语句修改列类型

    ALTER TABLE 表名 MODIFY 列名 新类型;
    

    示例:

    将 emp 表中的 name 的长度指定为 40。

    alter table emp modify name varchar(40);
    

    在这里插入图片描述

添加新列

  1. 使用DDL语句添加新列

    ALTER TABLE 表名 ADD COLUMN 新列名 类型;
    

    示例:

    在 emp 表中添加佣金列,列名为 commission_pct。

    alter table emp add column commission_pct float(4,2);
    

    在这里插入图片描述

删除指定列

  1. 使用DDL语句删除指定的列

    ALTER TABLE 表名 DROP COLUMN 列名;
    

    示例:

    删除 emp 表中的 commission_pct。

    alter table emp drop column commission_pct;
    

    在这里插入图片描述

MySQL中的约束


约束概述

数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。

  1. 主键约束(Primary Key) PK

    主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。
    主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。
    
  2. 外键约束(Foreign Key) FK

    外键约束经常和主键约束一起使用,用来确保数据的一致性。
    
  3. 唯一性约束(Unique)

    唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。
    
  4. 非空约束(Not Null)

    非空约束用来约束表中的字段不能为空。
    
  5. 检查约束(Check)

    检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前 MySQL 数据库不支持检查约束。
    

添加主键约束(Primary Key)

  1. 单一主键

    使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。
    
  2. 联合主键

    使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。
    

修改表添加主键约束

  1. 使用DDL语句添加主键约束

    ALTER TABLE 表名 ADD PRIMARY KEY(列名)
    

    示例:

    将 emp 表中的 employee_id 修改为主键。

    alter table emp add primary key(employee_id);
    ```![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/36235fffe70648aabd92c0374ae3cfe9.png#pic_center)
    
    
     
    
    
主键自增长

MySQL 中的自动增长类型要求:

  • 一个表中只能有一个列为自动增长。
  • 自动增长的列的类型必须是整数类型。
  • 自动增长只能添加到具备主键约束与唯一性约束的列上。
  • 删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删
    除约束。
alter table 表名 modify 主键 类型 auto_increment;

示例:

将 emp 表中的 employee_id 主键修改为自增。

alter table emp modify employee_id int auto_increment;

在这里插入图片描述

删除主键

  1. 使用DDL语句删除主键

    ALTER TABLE 表名 DROP PRIMARY KEY;
    
    注意:
    删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除 主键。
    
    

    示例:

    删除emp表中的 employee_id 主键约束。

    去掉自动增长:

    alter table emp modify employee_id int;
    

    在这里插入图片描述

    删除主键:

    alter table emp drop primary key;
    

    在这里插入图片描述

添加外键约束(Foreign Key)

修改表添加外键约束

  1. 使用DDL语句添加外键约束

    ALTER  TABLE 表名 ADD CONSTRAINT 约束名
    FOREIGN  KEY( 列 名 ) REFERENCES 参照的表名 (参照的列名);
    

    示例:

    创建 departments 表包含 department_id 、department_name ,location_id。

    create table departments(
    department_id int,
    department_name varchar(30),
    location_id int
    );
    

    在这里插入图片描述

    修改departments表,向department_id列添加主键约束与自动递增。

    alter table departments add primary key(department_id);
    alter table departments modify department_id int auto_increment;
    

    修改 emp 表,添加 dept_id 列。

    alter table emp add column dept_id int;
    

    在这里插入图片描述

    向 emp 表中的 dept_id 列添加外键约束。

    alter table emp add constraint emp_fk foreign key(dept_id) references departments(department_id);
    

    在这里插入图片描述

删除外键约束

  1. 使用DDL语句删除外键约束。

    ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
    

    示例:

    删除 dept_id 的外键约束。

    alter table emp drop foreign key emp_fk;
    

    在这里插入图片描述

添加唯一性约束(Unique)

修改表添加唯一性约束

  1. 使用DDL语句添加唯一性约束。

    ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
    

    示例:

    向 emp 表中的 name 添加唯一约束。

    alter table emp add constraint emp_uk unique(name);
    

    在这里插入图片描述

删除唯一性约束

  1. 使用DDL语句删除唯一性约束。

    ALTER TABLE 表名 DROP KEY 约束名;
    

    示例:

    删除 name 的唯一约束。

    alter table emp drop key emp_uk;
    

    在这里插入图片描述

非空约束(Not Null)

修改表添加非空约束

  1. 使用DDL语句添加非空约束。

    ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
    

    示例:

    向 emp 表中的 salary 添加非空约束。

    alter table emp modify salary float(8,2) not NULL;
    

    在这里插入图片描述

删除非空约束

  1. 使用DDL语句删除非空约束。

    ALTER TABLE 表名 MODIFY 列名 类型 NULL;
    

    示例:

    删除emp表中salary 的非空约束。

    alter table emp modify salary float(8,2) NULL;
    

    在这里插入图片描述

创建表时添加约束

查询表中的约束信息:

SHOW KEYS FROM 表名;

示例:

创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不 允许重复,location_id 列不允含有空值。

create table depts(
department_id int primary key auto_increment,department_name varchar(30) unique,
location_id int not null
);

在这里插入图片描述

NULL;


示例:

删除emp表中salary 的非空约束。

```mysql
alter table emp modify salary float(8,2) NULL;

[外链图片转存中…(img-c3WTuLjZ-1713681238983)]

创建表时添加约束

查询表中的约束信息:

SHOW KEYS FROM 表名;

示例:

创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不 允许重复,location_id 列不允含有空值。

create table depts(
department_id int primary key auto_increment,department_name varchar(30) unique,
location_id int not null
);

在这里插入图片描述

MySQL中DML操作


添加数据(INSERT)

  1. 选择插入

    INSERT INTO 表名(列名 1 ,列名 2 ,列名 3.....) 
    VALUES(值 1 ,值 2 ,值 3......);
    

    示例:

    前提:department_id自动递增

    在这里插入图片描述

    向 departments 表中添加一条数据,部门名称为 market ,工作地点 ID 为 1。

    insert into departments(department_name,location_id)
    values("market",1);
    

    在这里插入图片描述

  2. 完全插入

    INSERT INTO 表名 VALUES(值 1 ,值 2 ,值 3......);
    

    注意:

    如果主键是自动增长,需要使用 default 或者 null 或者 0 占位。

    示例一:

    向 departments 表中添加一条数据,部门名称为 development ,工作地点 ID 为 2 。使用 default 占位。

    insert into departments
    values(default,"development",2);
    

    在这里插入图片描述

    示例二:

    向 departments 表中添加一条数据,部门名称为human ,工作地点 ID 为 3 。使用 null 占 位。

    insert into departments
    values(null,"human",3);
    

    示例三:

    向 departments 表中添加一条数据,部门名称为 teaching ,工作地点 ID 为 4 。使用 0 占 位。

    insert into departments
    values(0,"teaching",4);
    

    在这里插入图片描述

默认值处理(DEFAULT)

在 MySQL 中可以使用 DEFAULT 为列设定一个默认值。如果在插入数据时并未指定该列的值,那么 MySQL 会将默认值添加到该列中。

创建表时指定列的默认值

CREATE TABLE 表名(列名 类型 default 默认值,......);

示例:

创建 emp3 表,该表包含 emp_id 主键且自动增长,包含 name ,包含 address 该列默认 值为”未知”。

create table emp3(
emp_id int primary key auto_increment,
name varchar(10),
address varchar(50) default 'Unknown'
);

在这里插入图片描述

修改表添加新列并指定默认值

ALTER TABLE 表名 ADD COLUMN 列名 类型 DEFAULT 默认值;

示例:

修改 emp3 表,添加job_id 该列默认值为 0。

alter table emp3 add column job_id int default 0;

在这里插入图片描述

插入数据时的默认值处理

如果在插入数据时并未指定该列的值,那么MySQL 会将默认值添加到该列中。如果是 完全项插入需要使用 default 来占位。

示例:

向 emp3 表中添加数据,要求 address 列与job_id 列使用默认值作为该列的值。

insert into emp3(name) values("admin");
insert into emp3
values(default,"oldlu",default,default);

在这里插入图片描述

更新数据(UPDATE)

UPDATE 表名 SET 列名=值,列名=值 WHERE 条件;

注意:

更新语句中一定要给定更新条件,否则表中的所有数据都会被更新。

示例:

更新 emp3 表中的 id 为 1 的数据,添加 address 为 BeiJing。

update emp3 set address = "BeiJing" 
where emp_id = 1;

在这里插入图片描述

删除数据(DELETE)

DELETE FROM 表名 WHERE 条件;

注意:

在DELETE语句中,如果没有给定删除条件则会删除表中的所有数据。

示例:

删除 emp3 表中 emp_id 为 1 的雇员信息。

delete from emp3 where emp_id = 1;

在这里插入图片描述

TRUNCATE清空表

TRUNCATE TABLE 表名;

示例:

删除 emp3 表中的所有数据。

truncate table emp3;

在这里插入图片描述

清空表时DELETE与 TRUNCATE 区别

  • truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢);
  • truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因;
  • truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从 1 开始记录,而 不是接着原
  • 来的值。而 delete 删除以后, 自增值仍然会继续累加。

MySQL查询数据


SELECT基本查询

SELECT语句的功能

SELECT 语句从数据库中返回信息。使用一个 SELECT 语句,可以做下面的事:

  • 列选择:能够使用 SELECT 语句的列选择功能选择表中的列,这些列是想要用查询返回的。当查询时,能够返回列中的数据。
  • 行选择:能够使用 SELECT 语句的行选择功能选择表中的行,这些行是想要用查询返回的。能够使用不同的标准限制看见的行。
  • 行连接:能够使用 SELECT 语句的连接功能来集合数据,这些数据被存储在不同的表中,在它们之间可以创建连接,查询出我们所关心的数据。

SELECT基本语法

基本 SELECT 语句

在最简单的形式中,SELECT 语句必须包含下面的内容:

  • 一个 SELECT 子句,指定被显示的列
  • 一个 FROM 子句,指定表,该表包含 SELECT 子句中的字段列表

在语法中:

语句 含义
SELECT 是一个或多个字段的列表
* 选择所有的列
DISTINCT 禁止重复
column | expression 选择指定的字段或表达式
alias 给所选择的列不同的标题
FROM table 指定包含列的表

添加测试数据

将data.sql文件通过Navicat导入到MySQL中一个数据库中。该文件包含了课程中所使用的案例表。

data.sql文件内容:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for countries
-- ----------------------------
DROP TABLE IF EXISTS `countries`;
CREATE TABLE `countries`  (
  `COUNTRY_ID` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Primary key of countries table.',
  `COUNTRY_NAME` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Country name',
  `REGION_ID` int NULL DEFAULT NULL COMMENT 'Region ID for the country. Foreign key to region_id column in the departments table.',
  PRIMARY KEY (`COUNTRY_ID`) USING BTREE,
  INDEX `COUNTR_REG_FK`(`REGION_ID`) USING BTREE,
  CONSTRAINT `COUNTR_REG_FK` FOREIGN KEY (`REGION_ID`) REFERENCES `regions` (`REGION_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'country table. Contains 25 rows. References with locations table.' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of countries
-- ----------------------------
INSERT INTO `countries` VALUES ('AR', 'Argentina', 2.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('AU', 'Australia', 3.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('BE', 'Belgium', 1.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('BR', 'Brazil', 2.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('CA', 'Canada', 2.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('CH', 'Switzerland', 1.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('CN', 'China', 3.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('DE', 'Germany', 1.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('DK', 'Denmark', 1.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('EG', 'Egypt', 4.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('FR', 'France', 1.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('IL', 'Israel', 4.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('IN', 'India', 3.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('IT', 'Italy', 1.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('JP', 'Japan', 3.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('KW', 'Kuwait', 4.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('ML', 'Malaysia', 3.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('MX', 'Mexico', 2.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('NG', 'Nigeria', 4.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('NL', 'Netherlands', 1.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('SG', 'Singapore', 3.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('UK', 'United Kingdom', 1.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('US', 'United States of America', 2.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('ZM', 'Zambia', 4.000000000000000000000000000000);
INSERT INTO `countries` VALUES ('ZW', 'Zimbabwe', 4.000000000000000000000000000000);

-- ----------------------------
-- Table structure for departments
-- ----------------------------
DROP TABLE IF EXISTS `departments`;
CREATE TABLE `departments`  (
  `DEPARTMENT_ID` int NOT NULL COMMENT 'Primary key column of departments table.',
  `DEPARTMENT_NAME` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'A not null column that shows name of a department. Administration,\nMarketing, Purchasing, Human Resources, Shipping, IT, Executive, Public\nRelations, Sales, Finance, and Accounting. ',
  `MANAGER_ID` int NULL DEFAULT NULL COMMENT 'Manager_id of a department. Foreign key to employee_id column of employees table. The manager_id column of the employee table references this column.',
  `LOCATION_ID` int NULL DEFAULT NULL COMMENT 'Location id where a department is located. Foreign key to location_id column of locations table.',
  PRIMARY KEY (`DEPARTMENT_ID`) USING BTREE,
  INDEX `DEPT_LOCATION_IX`(`LOCATION_ID`) USING BTREE,
  INDEX `DEPT_MGR_FK`(`MANAGER_ID`) USING BTREE,
  CONSTRAINT `DEPT_LOC_FK` FOREIGN KEY (`LOCATION_ID`) REFERENCES `locations` (`LOCATION_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `DEPT_MGR_FK` FOREIGN KEY (`MANAGER_ID`) REFERENCES `employees` (`EMPLOYEE_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'Departments table that shows details of departments where employees\nwork. Contains 27 rows; references with locations, employees, and job_history tables.' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of departments
-- ----------------------------
INSERT INTO `departments` VALUES (10, 'Administration', 200, 1700);
INSERT INTO `departments` VALUES (20, 'Marketing', 201, 1800);
INSERT INTO `departments` VALUES (30, 'Purchasing', 114, 1700);
INSERT INTO `departments` VALUES (40, 'Human Resources', 203, 2400);
INSERT INTO `departments` VALUES (50, 'Shipping', 121, 1500);
INSERT INTO `departments` VALUES (60, 'IT', 103, 1400);
INSERT INTO `departments` VALUES (70, 'Public Relations', 204, 2700);
INSERT INTO `departments` VALUES (80, 'Sales', 145, 2500);
INSERT INTO `departments` VALUES (90, 'Executive', 100, 1700);
INSERT INTO `departments` VALUES (100, 'Finance', 108, 1700);
INSERT INTO `departments` VALUES (110, 'Accounting', 205, 1700);
INSERT INTO `departments` VALUES (120, 'Treasury', NULL, 1700);
INSERT INTO `departments` VALUES (130, 'Corporate Tax', NULL, 1700);
INSERT INTO `departments` VALUES (140, 'Control And Credit', NULL, 1700);
INSERT INTO `departments` VALUES (150, 'Shareholder Services', NULL, 1700);
INSERT INTO `departments` VALUES (160, 'Benefits', NULL, 1700);
INSERT INTO `departments` VALUES (170, 'Manufacturing', NULL, 1700);
INSERT INTO `departments` VALUES (180, 'Construction', NULL, 1700);
INSERT INTO `departments` VALUES (190, 'Contracting', NULL, 1700);
INSERT INTO `departments` VALUES (200, 'Operations', NULL, 1700);
INSERT INTO `departments` VALUES (210, 'IT Support', NULL, 1700);
INSERT INTO `departments` VALUES (220, 'NOC', NULL, 1700);
INSERT INTO `departments` VALUES (230, 'IT Helpdesk', NULL, 1700);
INSERT INTO `departments` VALUES (240, 'Government Sales', NULL, 1700);
INSERT INTO `departments` VALUES (250, 'Retail Sales', NULL, 1700);
INSERT INTO `departments` VALUES (260, 'Recruiting', NULL, 1700);
INSERT INTO `departments` VALUES (270, 'Payroll', NULL, 1700);

-- ----------------------------
-- Table structure for employees
-- ----------------------------
DROP TABLE IF EXISTS `employees`;
CREATE TABLE `employees`  (
  `EMPLOYEE_ID` int NOT NULL COMMENT 'Primary key of employees table.',
  `FIRST_NAME` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'First name of the employee. A not null column.',
  `LAST_NAME` varchar(25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue刂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值