Mysql查询
第三章:select 语句
SELECT employees.employee_id,employees.department_id
FROM employees
WHERE employees.employee_id=176;
DESC departments;SELECT * FROM departments;
第四章:运算符使用
SELECT employees.last_name,employees.salary
FROM employees
WHERE employees.salary NOT BETWEEN 5000 AND 12000;#注意:不是IS NOT BETWEEN...AND... SELECT employees.employee_id,employees.department_id
FROM employees
WHERE employees.department_id=20 OR employees.department_id=50;#employees.department_id IN(20,50)SELECT employees.employee_id,employees.job_id
FROM employees
WHERE employees.manager_id<=>NULL;# employees.manager_id IS NULL / IS NOT NULLSELECT employees.last_name,employees.salary,job_grades.grade_level
FROM employees,job_grades
WHERE employees.salary<=job_grades.highest_sal && employees.salary>=job_grades.lowest_sal;SELECT employees.last_name
FROM employees
WHERE employees.last_name LIKE '__a%';SELECT employees.last_name
FROM employees
WHERE employees.last_name LIKE '%a%k%' OR last_name LIKE '%k%a%';# OR 两边主谓宾写完 SELECT employees.first_name
FROM employees
WHERE employees.first_name REGEXP 'e$'; #注意:WHERE first_name LIKE '%e';SELECT department_id,last_name,job_id
FROM employees
#where department_id in (80,90,100);
WHERE department_id BETWEEN 80 AND 100;SELECT employees.last_name,employees.salary*(1+IFNULL(0,employees.commission_pct)*12),employees.manager_id
FROM employees
WHERE employees.manager_id IN (100,101,110);
第五章:排序与分页
SELECT employees.last_name,employees.salary*(1+IFNULL(0,employees.commission_pct))*12 "annual_sal "
FROM employees
ORDER BY employees.salary*(1+IFNULL(0,employees.commission_pct))*12 DESC,employees.last_name ASC;SELECT employees.last_name,employees.salary
FROM employees
WHERE employees.salary NOT BETWEEN 8000 AND 17000
ORDER BY employees.salary DESC
LIMIT 20,20;SELECT employees.last_name,employees.email,employees.department_id
FROM employees
WHERE employees.email REGEXP '[e]' #WHERE employees.email LIKE '%e%';
ORDER BY LENGTH(employees.email) DESC,employees.department_id ASC;
第六章:建表语句
CREATE TABLE `t_dept` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`deptName` VARCHAR(30) DEFAULT NULL,
`address` VARCHAR(40) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `t_emp` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT NULL,
`age` INT(3) DEFAULT NULL,
`deptId` INT(11) DEFAULT NULL,
empno int not null,
PRIMARY KEY (`id`),
KEY `idx_dept_id` (`deptId`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;INSERT INTO t_dept(deptName,address) VALUES('华山','华山');
INSERT INTO t_dept(deptName,address) VALUES('丐帮','洛阳');
INSERT INTO t_dept(deptName,address) VALUES('峨眉','峨眉山');
INSERT INTO t_dept(deptName,address) VALUES('武当','武当山');
INSERT INTO t_dept(deptName,address) VALUES('明教','光明顶');
INSERT INTO t_dept(deptName,address) VALUES('少林','少林寺');
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('风清扬',90,1,100001);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('岳不群',50,1,100002);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('令狐冲',24,1,100003);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('洪七公',70,2,100004);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('乔峰',35,2,100005);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('灭绝师太',70,3,100006);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('周芷若',20,3,100007);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('张三丰',100,4,100008);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('张无忌',25,5,100009);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES('韦小宝',18,null,100010);
第七章:单行函数
# 1.显示系统时间(注:日期+时间)
SELECT NOW(),CURRENT_DATE(),CURRENT_TIME()
FROM DUAL; # 2.查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)
SELECT employees.employee_id,employees.last_name,employees.salary,employees.salary*1.2 "new salary",RPAD(salary,10,' ')
FROM employees;# 3.将员工的姓名按首字母排序,并写出姓名的长度(length)
SELECT employees.last_name,CHAR_LENGTH(employees.last_name) "name lenghth"
FROM employees
ORDER BY employees.last_name DESC;# 4.查询员工id,last_name,salary,并作为一个列输出,别名为OUT_PUT
SELECT CONCAT(employees.employee_id,' ',employees.last_name,' ',employees.salary) "OUT_PUT"
FROM employees;# 5.查询公司各员工工作的年数、工作的天数,并按工作年数的降序排序
SELECT DATEDIFF(CURRENT_DATE(),employees.hire_date) "work_days"
FROM employees
ORDER BY work_days ASC;# 6.查询员工姓名,hire_date , department_id,满足以下条件:雇用时间在1997年之后,department_id为80 或 90 或110, commission_pct不为空
SELECT employees.last_name,employees.hire_date,employees.department_id
FROM employees
WHERE DATE_FORMAT(employees.hire_date,'%Y')>='1997'
&& employees.department_id IN(80,90,110)
&& employees.commission_pct IS NOT NULL;# 7.查询公司中入职超过10000天的员工姓名、入职时间
SELECT employees.last_name,employees.hire_date,DATEDIFF(CURDATE(),employees.hire_date)
FROM employees
WHERE DATEDIFF(CURDATE(),employees.hire_date)>10000;# 8.做一个查询,产生下面的结果<last_name> earns <salary> monthly but wants <salary*3>
SELECT CONCAT(employees.last_name,' earns ',employees.salary,' monthly but wants',employees.salary*3)
FROM employees;SELECT last_name Last_name, job_id Job_id, CASE job_id
WHEN 'AD_PRES' THEN 'A'
WHEN 'ST_MAN' THEN 'B'
WHEN 'IT_PROG' THEN 'C'
WHEN 'SA_REP' THEN 'D'
WHEN 'ST_CLERK' THEN 'E'
ELSE 'F'
END "grade"
FROM employees;SELECT employees.last_name,employees.job_id,
CASE employees.job_id
WHEN 'AD_PRES' THEN 'A'
WHEN 'ST_MAN' THEN 'B'
WHEN 'IT_PROG' THEN 'C'
WHEN 'SA_REP' THEN 'D'
WHEN 'ST_CLERK'THEN 'E'
ELSE 'F' END "grade"
FROM employees;
第八章:多表查询
#1、内连接 等值连接
#SELECT DISTINCT employees.job_id,departments.location_id
#FROM employees,departments
#WHERE employees.department_id=departments.department_id;#2、外连接 非等值连接
#SELECT employees.last_name,employees.salary,job_grades.grade_level
#FROM employees,job_grades
#WHERE employees.salary BETWEEN job_grades.lowest_sal AND job_grades.highest_sal;#3、自链接
SELECT CONCAT(employee.last_name,' work for ',manager.last_name)
FROM employees employee,employees manager
WHERE employee.manager_id=manager.employee_id; #4、内连接(两个表共有部分)
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees JOIN departments
on employees.department_id=departments.department_id
ORDER BY employees.employee_id ASC;#5、外连接 右外连接
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees RIGHT JOIN departments
on employees.department_id=departments.department_id
ORDER BY employees.employee_id ASC;
#LIMIT 20,20;#6、外连接 左外连接
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees LEFT JOIN departments
on employees.department_id=departments.department_id
ORDER BY employees.employee_id ASC;
#LIMIT 20,20;#7、外连接 左连接除去共有部分
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees LEFT JOIN departments
on employees.department_id=departments.department_id
WHERE departments.department_id IS NULL
ORDER BY employees.employee_id ASC;#排序要放在最后面#8、外连接 右连接除去共有部分
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees RIGHT JOIN departments
on employees.department_id=departments.department_id
WHERE employees.department_id IS NULL
ORDER BY employees.employee_id ASC;#排序要放在最后面#9、外连接 左连接并上右连接除去共有部分
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees LEFT JOIN departments
on employees.department_id=departments.department_id
UNION
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees RIGHT JOIN departments
on employees.department_id=departments.department_id
WHERE employees.department_id IS NULL;#10 除去共有部分进行连接
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees LEFT JOIN departments
on employees.department_id=departments.department_id
WHERE departments.department_id IS NULL
UNION ALL
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees RIGHT JOIN departments
on employees.department_id=departments.department_id
WHERE employees.department_id IS NULL;
#ORDER BY employees.employee_id ASC;#报错#新特性 使用natural JOIN
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees NATURAL JOIN departments;#新特性 使用using
SELECT employees.employee_id,employees.last_name,departments.department_name
FROM employees JOIN departments
USING (department_id);
-------------------------------------------------------------------------------------------------------------------------------------------------
# 1.显示所有员工的姓名,部门号和部门名称。
SELECT employees.employee_id,employees.department_id,departments.department_name
FROM employees JOIN departments
ON employees.department_id=departments.department_id;# 2.查询90号部门员工的job_id和90号部门的location_id
SELECT employees.job_id,departments.location_id
FROM employees JOIN departments
ON employees.department_id=departments.department_id;# 3.选择所有有奖金的员工的 last_name , department_name , location_id , city
SELECT employees.last_name,departments.department_name,departments.location_id,locations.city
FROM employees
JOIN departments ON employees.department_id=departments.department_id
JOIN locations ON departments.location_id=locations.location_id
WHERE employees.commission_pct IS NOT NULL;# 4.选择city在Toronto工作的员工的 last_name , job_id , department_id , department_name
SELECT employees.last_name,employees.job_id,employees.department_id,departments.department_name,locations.city
FROM employees
JOIN departments ON employees.department_id=departments.department_id
JOIN locations ON departments.location_id=locations.location_id
WHERE locations.city='Toronto';# 5.查询员工所在的部门名称、部门地址、姓名、工作、工资,其中员工所在部门的部门名称为’Executive’
SELECT departments.department_name,locations.street_address,employees.last_name,employees.job_id,employees.salary
FROM employees
JOIN departments USING(department_id)
JOIN locations USING(location_id)
WHERE departments.department_name='Executive';# 5.查询员工所在的部门名称、部门地址、姓名、工作、工资,其中员工所在部门的部门名称为’Executive’
SELECT departments.department_name,locations.street_address,employees.last_name,employees.job_id,employees.salary
FROM employees
NATURAL JOIN departments
NATURAL JOIN locations
WHERE departments.department_name='Executive';# 6.选择指定员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式
SELECT emp.employee_id Emp,emp.last_name employees,mgr.employee_id Mgr,mgr.last_name manager
FROM employees emp
JOIN employees mgr ON emp.manager_id=mgr.employee_id;SELECT departments.department_id,departments.department_name
FROM departments
NATURAL LEFT JOIN employees
WHERE employees.department_id IS NULL;# 8. 查询哪个城市没有部门
SELECT locations.city
FROM locations
NATURAL LEFT JOIN departments
WHERE departments.location_id IS NULL;#查询部门名为 Sales 或 IT 的员工信息
SELECT *
FROM employees
NATURAL JOIN departments
WHERE departments.department_name IN ('Sales','IT');
第九章:子查询
#1.查询和Zlotkey相同部门的员工姓名和工资
SELECT employees.last_name,employees.salary
FROM employees
WHERE employees.department_id=(SELECT employees.department_idFROM employeesWHERE employees.last_name='Zlotkey');#2.查询工资比公司平均工资高的员工的员工号,姓名和工资
SELECT employees.employee_id,employees.last_name,employees.salary
FROM employees
WHERE employees.salary>(SELECT AVG(employees.salary) avgsalFROM employees);#3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name,job_id, salarySELECT employees.last_name,employees.job_id,employees.salary
FROM employees
WHERE employees.salary> all (SELECT employees.salaryFROM employeesWHERE employees.job_id='SA_MAN');#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
SELECT employees.employee_id,employees.last_name
FROM employees
WHERE employees.last_name IN(SELECT employees.last_nameFROM employeesWHERE employees.last_name LIKE '%u%');
#5.查询在部门的location_id为1700的部门工作的员工的员工号SELECT employees.last_name,employees.employee_id
FROM employees
WHERE employees.department_id IN (SELECT departments.department_idFROM departmentsWHERE departments.location_id=1700);#6.查询管理者是King的员工姓名和工资
SELECT last_name, salary
FROM employees
WHERE manager_id IN (
SELECT employee_id
FROM employees
WHERE last_name = 'King'
);#7. 查询工资最低的员工信息: last_name, salarySELECT employees.last_name,employees.salary
FROM employees
WHERE employees.salary = (SELECT MIN(employees.salary)FROM employees);#8. 查询平均工资最低的部门信息SELECT *
FROM departments
WHERE departments.department_id=
(
SELECT depavgsals.department_id
FROM (SELECT employees.department_id,AVG(employees.salary) depavgsalFROM employeesWHERE employees.salary IS NOT nullGROUP BY employees.department_id
) depavgsals
WHERE depavgsals.depavgsal=(SELECT MIN(depavgsals.depavgsal)
FROM (SELECT employees.department_id,AVG(employees.salary) depavgsalFROM employeesWHERE employees.salary IS NOT nullGROUP BY employees.department_id) depavgsals
)
);#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询)SELECT *,(SELECT AVG(salary) FROM employees WHERE employees.department_id = departments.department_id)
FROM departments
WHERE departments.department_id=
(
SELECT depavgsals.department_id
FROM (SELECT employees.department_id,AVG(employees.salary) depavgsalFROM employeesWHERE employees.salary IS NOT nullGROUP BY employees.department_id
) depavgsals
WHERE depavgsals.depavgsal=(SELECT MIN(depavgsals.depavgsal)
FROM (SELECT employees.department_id,AVG(employees.salary) depavgsalFROM employeesWHERE employees.salary IS NOT nullGROUP BY employees.department_id) depavgsals
)
);#10. 查询平均工资最高的 job 信息SELECT *
FROM jobs
WHERE jobs.job_id=(SELECT avgsals.job_id
FROM (
SELECT employees.job_id,AVG(employees.salary) avgsal
FROM employees
GROUP BY employees.job_id
)avgsals
WHERE avgsals.avgsal=(SELECT MAX(avgsals.avgsal)
FROM (
SELECT employees.job_id,AVG(employees.salary) avgsal
FROM employees
GROUP BY employees.job_id
)avgsals));#11. 查询平均工资高于公司平均工资的部门有哪些?SELECT departments.department_id,departments.department_name
FROM departments
WHERE departments.department_id IN (SELECT depsals.department_id
FROM (
SELECT employees.department_id,AVG(employees.salary) depsal
FROM employees
GROUP BY employees.department_id
)depsals
WHERE depsals.depsal > (SELECT AVG(employees.salary)FROM employees));# 12. 查询出公司中所有 manager 的详细信息SELECT DISTINCT IFNULL(employees.manager_id,employees.employee_id)
FROM employees;SELECT *
FROM employees
WHERE employees.employee_id IN (SELECT DISTINCT IFNULL(employees.manager_id,employees.employee_id)
FROM employees);SELECT employee_id, last_name, salary
FROM employees e1
WHERE EXISTS ( SELECT *
FROM employees e2
WHERE e2.manager_id = e1.employee_id);#15. 查询部门的部门号,其中不包括job_id是"ST_CLERK"的部门号
SELECT DISTINCT employees.department_id
FROM employees
WHERE department_id NOT IN(SELECT DISTINCT employees.department_id
FROM employees
WHERE employees.job_id='ST_CLERK');
第十章:管理与创建表
#1. 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作
CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8';USE test01_office;#2. 创建表dept01
/*
字段 类型
id INT(7)
NAME VARCHAR(25)
*/CREATE TABLE dept01(
id INT(7),
NAME VARCHAR(25)
);#3. 将表departments中的数据插入新表dept02中CREATE TABLE dept02
AS
SELECT *
FROM atguigudb.departments; #4. 创建表emp01
/*
字段 类型
id INT(7)
first_name VARCHAR (25)
last_name VARCHAR(25)
dept_id INT(7)
*/
CREATE TABLE emp01(
id INT(7),
first_name VARCHAR(25),
last_name VARCHAR(25),
dept_id INT (7)
);
DESC emp01
#5. 将列last_name的长度增加到50
ALTER TABLE emp01
MODIFY last_name VARCHAR(50);#6. 根据表employees创建emp02
CREATE TABLE emp02
AS
SELECT *
FROM atguigudb.employees;
desc emp02
#7. 删除表emp01
DROP TABLE emp01;
#8. 将表emp02重命名为emp01
ALTER TABLE emp02
RENAME TO emp01
#9.在表dept02和emp01中添加新列test_column,并检查所作的操作
ALTER TABLE dept02
ADD test_column VARCHAR(15)#10.直接删除表emp01中的列 department_id
DESC emp01
ALTER TABLE emp01
DROP COLUMN department_id# 1、创建数据库 test02_market
CREATE DATABASE test02_market;
USE test02_market# 2、创建数据表 customers
CREATE TABLE customers(
c_num INT(10),
c_name VARCHAR(50),
c_contact VARCHAR(50),
c_city VARCHAR(50),
c_birth DATE
)SHOW TABLES
FROM test02_market# 3、将 c_contact 字段移动到 c_birth 字段后面
ALTER TABLE customers
MODIFY c_contact VARCHAR(50) AFTER c_birth
DESC customers# 4、将 c_name 字段数据类型改为 varchar(70)
USE test02_market
ALTER TABLE customers
MODIFY c_name VARCHAR(70)
DESC customers# 5、将c_contact字段改名为c_phone6
ALTER TABLE customers
CHANGE c_contact c_phone6 VARCHAR(50)# 6、增加c_gender字段到c_name后面,数据类型为char(1)
ALTER TABLE customers
ADD c_gender VARCHAR(50) AFTER c_name
# 7、将表名改为customers_info
RENAME TABLE customers
TO customers_info
# 8、删除字段c_city
DESC customers_infoALTER TABLE customers_info
DROP c_city# 1、创建数据库test03_company
# 2、创建表offices
# 3、创建表employees
# 4、将表employees的mobile字段修改到code字段后面
# 5、将表employees的birth字段改名为birthday
# 6、修改sex字段,数据类型为char(1)
# 7、删除字段note
# 8、增加字段名favoriate_activity,数据类型为varchar(100)
# 9、将表employees的名称修改为 employees_infoCREATE DATABASE IF NOT EXISTS test03_company
USE test03_company
CREATE TABLE IF NOT EXISTS offices(
officeCode INT,
city VARCHAR(30),
address VARCHAR(50),
country VARCHAR(50),
postalCode VARCHAR(25)
)CREATE TABLE IF NOT EXISTS employees
(
empNum INT,
lastName VARCHAR(50),
firstName VARCHAR(50),
mobile VARCHAR(25),
`code` INT ,
jobTitle VARCHAR(50),
birth DATE,
note VARCHAR(255),
sex VARCHAR(5)
)ALTER TABLE employees
MODIFY mobile VARCHAR(25) AFTER code
DESC employeesALTER TABLE employees
CHANGE birth birthday DATEALTER TABLE employees
MODIFY sex CHAR(1)ALTER TABLE employees
DROP noteALTER TABLE employees
ADD favoriate_activity VARCHAR (100)RENAME TABLE employees
TO employees_info
第十一章:数据处理之增删改查
#1. 创建数据库dbtest11
CREATE DATABASE IF NOT EXISTS dbtest11 CHARACTER SET 'utf8'
USE dbtest11
#2. 运行以下脚本创建表my_employees
CREATE TABLE my_employees(
id INT(10),
first_name VARCHAR(10),
last_name VARCHAR(10),
userid VARCHAR(10),
salary DOUBLE(10,2)
);
CREATE TABLE users(
id INT,
userid VARCHAR(10),
department_id INT
);
DESC my_employees
#4. 向my_employees表中插入下列数据
INSERT INTO my_employees
VALUES(1,'patel','Ralph','Rpatel',895),
(2,'Dancs','Betty','Bdancs',860),
(3,'Biri','Ben','Bbiri',1100),
(4,'Newman','Chad','Cnewman',750),
(5,'Ropeburn','Audrey','Aropebur',1550);
SELECT * FROM my_employees
#5. 向users表中插入数据
INSERT INTO users VALUES
(1,'Rpatel',10),
(2,'Bdancs',10),
(3,'Bbiri',20),
(4,'Cnewman',30),
(5,'Aropebur',40)
SELECT * FROM users
#6. 将3号员工的last_name修改为“drelxer”
UPDATE my_employees
SET last_name='drelxer'
WHERE my_employees.id=3DELETE FROM my_employees
WHERE id=1#11. 清空表my_employees
TRUNCATE TABLE my_employees
第十二章:视图
#1. 使用表employees创建视图employee_vu,其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID)
#2. 显示视图的结构
#3. 查询视图中的全部内容
#4. 将视图中的数据限定在部门号是80的范围内CREATE OR REPLACE VIEW employee_vu
AS
SELECT employees.last_name,employees.employee_id,employees.department_id
FROM employeesSELECT * FROM employee_vuDESC employee_vu
CREATE OR REPLACE VIEW employee_vu
AS
SELECT employees.last_name,employees.employee_id,employees.department_id
FROM employees
WHERE employees.department_id=80
第十三章:约束
CREATE DATABASE test04_emp;
use test04_emp;
CREATE TABLE emp2(
id INT,
emp_name VARCHAR(15)
);
CREATE TABLE dept2(
id INT,
dept_name VARCHAR(15)
);
#1.向表emp2的id列中添加PRIMARY KEY约束
#2. 向表dept2的id列中添加PRIMARY KEY约束
#3. 向表emp2中添加列dept_id,并在其中定义FOREIGN KEY约束,与之相关联的列是dept2表中的id列。
ALTER TABLE emp2
MODIFY id INT PRIMARY KEY
DESC emp2ALTER TABLE dept2
MODIFY id INT PRIMARY KEYALTER TABLE emp2
ADD COLUMN dept_id INT ALTER TABLE emp2
ADD CONSTRAINT fk_emp2_deptid FOREIGN KEY(dept_id) REFERENCES dept2(id);# 1、创建数据库test01_library
# 2、创建表 books,表结构如下CREATE DATABASE IF NOT EXISTS test01_library
USE test01_library
CREATE TABLE IF NOT EXISTS books(
id INT,
name VARCHAR(25),
authors VARCHAR(25),
price FLOAT,
pubdate YEAR,
nate VARCHAR(100),
num INT
)# 3、使用ALTER语句给books按如下要求增加相应的约束
#1.向表emp2的id列中添加PRIMARY KEY约束ALTER TABLE books
MODIFY id INT PRIMARY KEY#2. 向表dept2的id列中添加PRIMARY KEY约束DESC test01_office.dept02ALTER TABLE test01_office.dept02
MODIFY department_id INT PRIMARY KEYDESC test04_emp.emp2
第十四章:存储过程与函数
#0.准备工作
#1. 创建存储过程insert_user(),实现传入用户名和密码,插入到admin表中
CREATE DATABASE test15_pro_func;
USE test15_pro_func;
CREATE TABLE admin(
id INT PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(15) NOT NULL,
pwd VARCHAR(25) NOT NULL
);
#2. 创建存储过程get_phone(),实现传入女神编号,返回女神姓名和女神电话
CREATE TABLE beauty(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(15) NOT NULL,
phone VARCHAR(15) UNIQUE,
birth DATE
);
INSERT INTO beauty(NAME,phone,birth)
VALUES
('朱茵','13201233453','1982-02-12'),
('孙燕姿','13501233653','1980-12-09'),
('田馥甄','13651238755','1983-08-21'),
('邓紫棋','17843283452','1991-11-12'),
('刘若英','18635575464','1989-05-18'),
('杨超越','13761238755','1994-05-11');
SELECT * FROM beauty;DELIMITER //
CREATE PROCEDURE get_phone(IN id INT,OUT NAME VARCHAR(20),OUT phone VARCHAR(20))
BEGIN
SELECT b.name ,b.phone INTO NAME,phone
FROM beauty b
WHERE b.id = id;
END //
DELIMITER ;CALL get_phone(1,@phone,@name)
SELECT @name,@phone#3. 创建存储过程date_diff(),实现传入两个女神生日,返回日期间隔大小DELIMITER //
CREATE PROCEDURE date_diff(IN data1 DATETIME,IN data2 DATETIME,OUT result INT)
BEGIN
SELECT DATEDIFF(data1,data2) INTO result;
END //
DELIMITER ;CALL date_diff('1997-12-1','1997-10-1',@result)
SELECT @result#4. 创建存储过程format_date(),实现传入一个日期,格式化成xx年xx月xx日并返回DELIMITER //
CREATE PROCEDURE format_date(IN date DATETIME,OUT strade VARCHAR(50))
BEGINSELECT DATE_FORMAT(date,'%y年%m月%d日') INTO strade;
END //
DELIMITER ;CALL format_date('1997-10-12',@strade)
SELECT @strade#5. 创建存储过程beauty_limit(),根据传入的起始索引和条目数,查询女神表的记录
DELIMITER //
CREATE PROCEDURE beauty_limit(IN startIndex INT,IN size INT)
BEGIN
SELECT * FROM beauty LIMIT startIndex,size;
END //
DELIMITER ;CALL beauty_limit(1,3)
DROP PROCEDURE beauty_limit;
SHOW PROCEDURE STATUS LIKE 'date_diff'#0. 准备工作USE test15_pro_func;
CREATE TABLE employees
AS
SELECT * FROM atguigudb.`employees`;
CREATE TABLE departments
AS
SELECT * FROM atguigudb.`departments`;
#无参有返回
#1. 创建函数get_count(),返回公司的员工个数
#有参有返回
SET GLOBAL log_bin_trust_function_creators = 1;
DELIMITER //
CREATE FUNCTION get_count() RETURNS INT
BEGIN
RETURN (SELECT COUNT(*) FROM employees);
END //
DELIMITER ;
SELECT get_count();#2. 创建函数ename_salary(),根据员工姓名,返回它的工资DESC employeesDELIMITER //
CREATE FUNCTION ename_salary(emp_name VARCHAR(20)) RETURNS DOUBLE
BEGIN
RETURN(
SELECT employees.salary FROM employees
WHERE employees.last_name= emp_name
);
END //
DELIMITER ;SELECT ename_salary('Abel')#3. 创建函数dept_sal() ,根据部门名,返回该部门的平均工资
#4. 创建函数add_float(),实现传入两个float,返回二者之和相关文章:
Mysql查询
第三章:select 语句 SELECT employees.employee_id,employees.department_id FROM employees WHERE employees.employee_id176; DESC departments;SELECT * FROM departments;第四章:运算符使用 SELECT employees.last_name,employees.salary FROM em…...
解决http下navigator.clipboard为undefined问题
开发环境下使用navigator.clipboard进行复制操作,打包部署到服务器上后,发现该功能显示为undefined;查相关资料后,发现clipboard只有在安全域名下才可以访问(https、localhost),在http域名下只能得到undefined…...
mysql之host is blocked问题
程序上线一段时间之后,更新程序总是遇到这个问题 每次都是重启几次程序,或者执行 flush hosts; 毕竟指标不治本,抽出时间决定分析一下问题,查阅了几篇博客。(感谢这几位大佬) https://blog.51cto.com/u_…...
每日一题:2337 移动片段得到字符串
给你两个字符串 start 和 target ,长度均为 n 。每个字符串 仅 由字符 L、R 和 _ 组成,其中: 字符 L 和 R 表示片段,其中片段 L 只有在其左侧直接存在一个 空位 时才能向 左 移动,而片段 R 只有在其右侧直接存在一个 …...
嵌入式设备的 Json 库基本使用
大家好,今天给介绍一款基于 C 语言的轻量级的 Json 库 – cJson。可用于资源受限的嵌入式设备中。 cJSON 是一个超轻巧,携带方便,单文件,简单的可以作为 ANSI-C 标准的 JSON 解析器。 cJSON 是一个开源项目,github 下…...
GEEMAP 中如何拉伸图像
图像拉伸是最基础的图像增强显示处理方法,主要用来改善图像显示的对比度,地物提取流程中往往首先要对图像进行拉伸处理。图像拉伸主要有三种方式:线性拉伸、直方图均衡化拉伸和直方图归一化拉伸。 GEE 中使用 .sldStyle() 的方法来进行图像的…...
软件测试学术顶会——ISSTA 2023 论文(网络安全方向)清单、摘要与总结
总结 本次会议涵盖的安全研究主题广泛,包括源代码分析、二进制代码分析、恶意软件检测、漏洞检测、模糊测试、程序验证等。一些热门的研究方向包括:基于机器学习的漏洞检测、大型语言模型在软件安全中的应用、区块链智能合约安全分析。这些方向都在最近几年持续发展。一些较冷门…...
基于YOLOv8模型和PCB电子线路板缺陷目标检测系统(PyTorch+Pyside6+YOLOv8模型)
摘要:基于YOLOv8模型PCB电子线路板缺陷目标检测系统可用于日常生活中检测与定位PCB线路板瑕疵,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检…...
centos安装mysql8
检查是否有mariadb rpm -qa|grep mariadb rpm -e --nodeps mariadb-server安装mysql-8.0.31-el7-x86_64.tar.gz包 安装mysql-8.0.31-el7-x86_64.tar.gz包 cd datatar -xvf mysql-8.0.31-el7-x86_64.tar.gzmv mysql-8.0.31-el7-x86_64 mysql 依赖安装 报错解决,安…...
【Apollo】阿波罗自动驾驶技术:引领汽车行业革新
前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…...
一文看懂!数据管道和数据流在数据分析中的作用
当我们谈论数据分析时,我们通常会想到一系列的步骤,包括数据收集、数据清洗、数据分析和数据可视化等。然而,在这些步骤中,有两个非常重要的概念:数据管道和数据流。这两个概念在数据分析过程中起着至关重要的作用。本…...
Linux系统下检验Tensorflow 2.xx版本和1.xx版本是否安装成功
目录 版本问题Tensorflow 1.xx的测试代码:Tensorflow 2.xx的测试代码:Tensorflow 2.6版本实际的测验结果 总结 版本问题 查询资料发现,多数检验Tensorflow是否安装成功的方法,多数方法都是1.xx版本的,直接使用1.xx版本…...
暑期高铁站大量遗失物品,FindMy帮助寻找
近日,一女子在上海坐高铁时,将户口本、房产证遗落安检处的新闻引起网友的关注。然后业内人士表示:常事,车站什么都能捡到。 据中国铁路透露,暑运期间,上海虹桥站客流增加,日均发送旅客20多万人…...
通过安全日志读取WFP防火墙放行日志
前言 之前的文档中,描写了如何对WFP防火墙进行操作以及如何在防火墙日志中读取被防火墙拦截网络通讯的日志。这边文档,着重描述如何读取操作系统中所有被放行的网络通信行为。 读取系统中放行的网络通信行为日志,在win10之后的操作系统上&am…...
JDK、JRE、Java SE、Java EE和Java ME有什么区别?
Java现在已不仅仅是一种语言,从广义上说,它代表了一个技术体系。该体系根据应用方向的不同主要分为Java SE、Java EE和Java ME的3个部分。 1.SE(JavaSE),standard edition,标准版,是我们通常用的一个版本,从…...
Neo4j之unwind基础
UNWIND 语句在 Cypher 查询中用于将列表(数组)中的元素逐个“展开”,从而将每个元素视为单独的行进行处理。它通常与 MATCH、CREATE、MERGE 等语句结合使用,用于对列表中的每个元素执行相应的操作。以下是一些常用的示例和解释&am…...
回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图)效果一览基…...
深入探索代理技术:Socks5、IP代理与网络安全
在当今高度互联的世界中,代理技术在网络安全和爬虫等领域发挥着重要作用。本文将着重介绍Socks5代理、IP代理以及它们在网络安全与爬虫开发中的应用,旨在帮助读者深入理解这些技术,从而更好地应用于实际情境。 1. Socks5代理的特点与用途 S…...
Matlab 频谱图中如何设置频率刻度
Matlab 频谱图中如何设置频率刻度(横坐标) 1、概述 时域信号经FFT 变换后得到了频谱,在作图时还必须设置正确的频率刻度,这样才能从图中得到正确的结果。下面来介绍如何设置正确的频率刻度。 2、案例分析 有一个余弦信号&#…...
在线转换器有哪些优势?在线Word转PDF操作分享
我们如果想要将两者不同格式文件进行格式转换,就需要下载安装转换器。如果出门带的设备没有安装转换软件客户端,就无法使用,会比较麻烦。现在有了在线转换工具,只需要打开相应的网页就可使用,那么在线Word转PDF的操作是…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
python打卡day49@浙大疏锦行
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...
