mysql

一、创建表格

1.创建员工表

CREATE TABLE `employee`(
	
	
    `emp_id` INT PRIMARY KEY,
    `name` VARCHAR(20),
    `birth_date`DATE,
    `sex`VARCHAR(1),
    `branch_id`INT,
    `sup_id`INT
);

2.创建部门表格

CREATE TABLE `branch`(
     branch_id` INT PRIMARY KEY,
    `branch_name` VARCHAR(20),
    `manager_id` INT,
    FOREIGN KEY (`manager_id`) REFERENCES `employee`(`emp_id`) ON DELETE SET NULL
);

3.添加employee 的外键

ALTER TABLE `employee`
ADD FOREIGN KEY (`branch_id`)
REFERENCES `branch`(branch_id)
ON DELETE SET NULL;

ALTER TABLE `employee`
ADD FOREIGN KEY (`sup_id`)
REFERENCES `employee`(`emp_id`)
ON DELETE SET NULL;

4.创建客户的资料

CREATE TABLE `client`(
	`client_id` INT PRIMARY KEY,
    `client_name` VARCHAR(20),
    `phone`VARCHAR(20)
);

5.创建works_with 的表格

CREATE TABLE `works_with`(
	`emp_id` INT,
    `client_id` INT,
    `total_sales`INT,
    PRIMARY KEY(`emp_id`,`client_id`),
    FOREIGN KEY(`emp_id`) REFERENCES `employee`(`emp_id`) ON DELETE CASCADE,
    FOREIGN KEY(`client_id`) REFERENCES `client`(`client_id`) ON DELETE CASCADE
);

二、添加资料

1.新增部门资料,先让外键设为空

INSERT INTO `branch` VALUES(1,'研发', NULL);
INSERT INTO `branch` VALUES(2,'行政', NULL);
INSERT INTO `branch` VALUES(3,'咨询', NULL);

2.新增员工资料

INSERT INTO `employee` VALUES(206, '小黄', '1998-10-08', 'F', 1, NULL);
INSERT INTO `employee` VALUES(207, '小绿', '1985-09-16', 'M', 2, 206);
INSERT INTO `employee` VALUES(208, '小黑', '2000-12-19', 'M', 3, 206);
INSERT INTO `employee` VALUES(209, '小白', '1997-01-22', 'F', 3, 207);
INSERT INTO `employee` VALUES(210, '小蓝', '1925-11-10', 'F', 1, 207);

3.新增部门id(自动修改填入)

UPDATE `branch`
SET `manger_id` = 207
WHERE `branch_id` = 2;

4.新增销售资料

INSERT INTO `client` VALUES(400, '阿猫', '253454');
INSERT INTO `client` VALUES(401, '阿狗', '5435454');
INSERT INTO `client` VALUES(402, '旺来', '56546676');
INSERT INTO `client` VALUES(403, '露西', '5433454656');
INSERT INTO `client` VALUES(404, '艾瑞克', '35465335');

5.新增work_with资料

INSERT INTO `works_with` VALUES(206, 400, '70000');
INSERT INTO `works_with` VALUES(207, 401, '240000');
INSERT INTO `works_with` VALUES(208, 402, '9800');
INSERT INTO `works_with` VALUES(208, 403, '24000');
INSERT INTO `works_with` VALUES(210, 404, '87940');

三、取资料

1.取得所有员工的资料

SELECT * FROM `employee`;

2.取得所有客户的资料

SELECT * FROM `client`;

3.按照年龄大小排序

SELECT * FROM `employee` ORDER BY `birth_date` DESC;

4.取得年龄前三的员工

SELECT * 
FROM `employee` 
ORDER BY `birth_date` DESC
LIMIT 3;

5.取的所有员工的名字

SELECT `name` FROM `employee`;

6.取不重复的性别

SELECT DISTINCT `sex` FROM `employee`;

四、常用函数

1、聚合函数

1.取得员工人数

SELECT count(*) FROM `employee`;

2.取得电话号码尾数是335的客户

SELECT *
FROM `client`
WHERE `phone` LIKE '%335';

3.取得客户姓艾的客户

SELECT *
FROM `client`
WHERE `client_name` LIKE '艾%';

4.取得生日在12月的员工

SELECT *
FROM `employee`
WHERE `birth_date` LIKE '_____09%';
#1998-12-03:一个_是一个字元,%是多个字元

2、union连集

SELECT `name`
FROM `employee`
UNION
SELECT `client_name`
FROM `client`
UNION
SELECT `branch_name`
FROM `branch`;

2.员工id+员工名字union 客户id +客户名字

SELECT `emp_id` AS `total_id`, `name`AS `total_name`
FROM `employee`
UNION
SELECT `client_id`,`client_name`
FROM `client`;

SELECT `salary`
FROM `employee`
UNION
SELECT `tota_sales`
FROM `works_with`;

3、连接join

INSERT INTO `branch` VALUES(4,'偷懒',NULL);
SELECT * FROM `branch`

取得所有部门经理的名字

SELECT *
FROM `employee`
JOIN `branch`
ON `emp_id` = `manager_id`;

取得所有部门经历的名字

SELECT  `employee`.`emp_id`,`employee`.`name`, `branch`.`branch_name`
FROM `employee` RIGHT JOIN `branch`
ON `employee`.`emp_id` =  `branch`.`manager_id`;

4、subquery 子查询

1.找出研发部门的经理名字

SELECT `name`
FROM `employee`
WHERE `emp_id` = (
	SELECT `manager_id`
	FROM `branch`
	WHERE `branch_name` = '研发'
);

image

posted @ 2022-07-20 22:11  Ling22  阅读(82)  评论(0)    收藏  举报