约束-练习题

news2025/3/20 12:49:46

练习1

已经存在数据库test04_emp,两张表emp2和dept2

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列。
    答案:
1.向表emp2的id列中添加PRIMARY KEY约束
ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;
ALTER TABLE emp2 ADD PRIMARY KEY(id);

2. 向表dept2的id列中添加PRIMARY KEY约束
ALTER TABLE dept2 MODIFY COLUMN id INT PRIMARY KEY;
ALTER TABLE dept2 ADD PRIMARY KEY(id);

3. 向表emp2中添加列dept_id,并在其中定义FOREIGN KEY约束,与之相关联的列是dept2表中的id列。
ALTER TABLE emp2 ADD COLUMN dept_id INT;
ALTER TABLE emp2 ADD CONSTRAINT fk_emp2_deptid FOREIGN KEY(dept_id) REFERENCES
dept2(id);

练习2

  1. 创建数据库test04_company
  2. 按照下表给出的表结构在test04_company数据库中创建两个数据表offices和employees
    在这里插入图片描述
    在这里插入图片描述
  3. 将表employees的mobile字段修改到officeCode字段后面
  4. 将表employees的birth字段改名为employee_birth
  5. 修改sex字段,数据类型为CHAR(1),非空约束
  6. 删除字段note
  7. 增加字段名favoriate_activity,数据类型为VARCHAR(100)
  8. 将表employees名称修改为employees_info
1. 创建数据库test04_company
CREATE DATABASE test04_company;
2. 按照下表给出的表结构在test04_company数据库中创建两个数据表offices和employees
USE test04_company;
CREATE TABLE offices(
officeCode INT(10) ,
city VARCHAR(50) NOT NULL,
address VARCHAR(50),
country VARCHAR(50) NOT NULL,
postalCode VARCHAR(15) UNIQUE,
PRIMARY KEY(officeCode)
);

CREATE TABLE employees(
employeeNumber INT(11) PRIMARY KEY AUTO_INCREMENT,
lastName VARCHAR(50) NOT NULL,
firstName VARCHAR(50) NOT NULL,
mobile VARCHAR(25) UNIQUE,
officeCode INT(10) NOT NULL,
jobTitle VARCHAR(50) NOT NULL,
birth DATETIME NOT NULL,
note VARCHAR(255),
sex VARCHAR(5),
CONSTRAINT fk_emp_ofCode FOREIGN KEY(officeCode) REFERENCES offices(officeCode)
);
3. 将表employees的mobile字段修改到officeCode字段后面
ALTER TABLE employees MODIFY mobile VARCHAR(25) AFTER officeCode;
4. 将表employees的birth字段改名为employee_birth
ALTER TABLE employees CHANGE birth employee_birth DATETIME;
5. 修改sex字段,数据类型为CHAR(1),非空约束
ALTER TABLE employees MODIFY sex CHAR(1) NOT NULL;
6. 删除字段note
ALTER TABLE employees DROP COLUMN note;
7. 增加字段名favoriate_activity,数据类型为VARCHAR(100)
ALTER TABLE employees ADD favoriate_activity VARCHAR(100);
8. 将表employees名称修改为employees_info
ALTER TABLE employees RENAME employees_info;

练习3

  1. 创建数据库:test_company
  2. 在此数据库下创建如下3表,数据类型,宽度,是否为空根据实际情况自己定义。
    A. 部门表(department) :部门编号(depid),部门名称(depname),部门简介(deinfo);其中
    部门编号为主键。
    B. 雇员表(emoloyee) :雇员编号(empid),姓名(name),性别(sex),职称(title),出生日
    期(birthday),所在部门编号(depid);其中
  • 雇员编号为主键;
  • 部门编号为外键,外键约束等级为(on update cascade 和on delete set null);
  • 性别默认为男;
    C. 工资表(salary) :雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction)。其中雇员编号为主键。
  1. 给工资表(salary)的雇员编号(empid)增加外键约束,外键约束等级为(on update cascade 和ondelete cascade)
  2. 添加数据如下:
    部门表:
    在这里插入图片描述
    雇员表:
    在这里插入图片描述
    工资表:
    在这里插入图片描述
  3. 查询出每个雇员的雇员编号,姓名,职称,所在部门名称,应发工资(基本工资+职务工资),实发
    工资(基本工资+职务工资-扣除)。
  4. 查询销售部门的雇员姓名及其基本工资
  5. 查询姓“张”且年龄小于40的员工的全部信息和年龄
  6. 查询所有男员工的基本工资和职务工资
  7. 查询基本工资低于2000的员工姓名和职称、所在部门名称
  8. 查询员工总数
  9. 查询部门总数
  10. 查询应发工资的平均工资和最高工资、最低工资
  11. 按照部门统计应发工资的平均工资
  12. 找出部门基本工资的平均工资低于2000的
  13. 按照员工编号、姓名、基本工资、职务工资、扣除,并按照职务升序排列,如果职务工资相同,再
    按照基本工资升序排列
  14. 查询员工编号、姓名,出生日期,及年龄段。其中,如果80年之前出生的,定为”老年“;80后定为”
    中年“,90后定为”青壮年“
  15. 查询所有的员工信息,和他所在的部门名称
  16. 查询所有部门信息,和该部门的员工信息
  17. 查询所有职位中含“工程师”的男员工的人数
  18. 查询每个部门的男生和女生的人数和平均基本工资
#创建数据库:test_company
CREATE DATABASE test_company;
#使用数据库test_company
USE test_company;
#创建部门表(department)
CREATE TABLE department(
depid INT PRIMARY KEY,
depname VARCHAR(20) NOT NULL,
deinfo VARCHAR(50)
);
#创建雇员表(emoloyee)
CREATE TABLE employee(
empid INT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL,
sex CHAR NOT NULL DEFAULT '男',
title VARCHAR(20) NOT NULL,
birthday DATE,
depid INT,
FOREIGN KEY(depid) REFERENCES department(depid) ON UPDATE CASCADE ON DELETE SET
NULL
);
#创建工资表(salary)
CREATE TABLE salary(
empid INT PRIMARY KEY,
basesalary DOUBLE,
titlesalary DOUBLE,
deduction DOUBLE
);
#给工资表(salary)的雇员编号(empid)增加外键约束,外键约束等级为(on update cascade 和on
delete cascadeALTER TABLE salary ADD FOREIGN KEY empid REFERENCES employee(empid) ON UPDATE CASCADE
ON DELETE CASCADE;
#添加部门表数据
INSERT INTO department VALUES
(111,'生产部',NULL),
(222,'销售部',NULL),
(333,'人事部','人力资源管理');
#添加雇员表
INSERT INTO employee VALUES
(1001,'张三',DEFAULT,'高级工程师','1975-1-1',111),
(1002,'李四','女','助工','1985-1-1',111),
(1003,'王五','男','工程师','1978-11-11',222),
(1004,'张六',DEFAULT,'工程师','1999-1-1',222);
#添加工资表
INSERT INTO salary VALUES
(1001,2200,1100,200),
(1002,1200,200,NULL),
(1003,2900,700,200),
(1004,1950,700,150);
5./*
查询出每个雇员的雇员编号,姓名,职称,所在部门名称,
应发工资(基本工资+职务工资),
实发工资(基本工资+职务工资-扣除)。
*/
SELECT employee.empid,`name`,title,depname,
basesalary+titlesalary AS "应发工资",
basesalary+titlesalary-IFNULL(deduction,0) AS "实发工资"
FROM department INNER JOIN employee INNER JOIN salary
ON department.depid = employee.depid AND employee.empid = salary.empid;
6.查询销售部门的雇员姓名及其基本工资
SELECT `name`,basesalary
FROM department INNER JOIN employee INNER JOIN salary
ON department.depid = employee.depid AND employee.empid = salary.empid
WHERE department.depname = '销售部';
7.查询姓“张”且年龄小于40的员工的全部信息和年龄
SELECT *,YEAR(CURRENT_DATE())-YEAR(birthday) AS "年龄"
FROM employee
WHERE `name` LIKE '张%' AND YEAR(CURRENT_DATE())-YEAR(birthday)<40;
8.查询所有男员工的基本工资和职务工资
SELECT basesalary,titlesalary
FROM employee INNER JOIN salary
ON employee.empid = salary.empid
WHERE employee.sex = '男';
9.查询基本工资低于2000的员工姓名和职称、所在部门名称
SELECT `name`,title,depname
FROM department INNER JOIN employee INNER JOIN salary
ON department.depid = employee.depid AND employee.empid = salary.empid
WHERE basesalary < 2000;
10.查询员工总数
SELECT COUNT(*) FROM employee;
11.查询部门总数
SELECT COUNT(*) FROM department;
12.查询应发工资的平均工资和最高应发工资、最低应发工资
SELECT AVG(basesalary+titlesalary) AS "平均应发工资",
MAX(basesalary+titlesalary) AS "最高应发工资",
MIN(basesalary+titlesalary) AS "最低应发工资"
FROM salary;
13.按照部门统计应发工资的平均工资
SELECT depid,AVG(basesalary+titlesalary)
FROM employee INNER JOIN salary
ON employee.`empid` = salary.`empid`
GROUP BY employee.`depid`;
14.找出部门基本工资的平均工资低于2000SELECT depid,AVG(basesalary)
FROM employee INNER JOIN salary
ON employee.`empid` = salary.`empid`
GROUP BY employee.`depid`
HAVING AVG(basesalary)<2000;
15.按照员工编号、姓名、基本工资、职务工资、扣除,并按照职务升序排列,如果职务工资相同,再按照基本工资升序排列
SELECT emp.empid,`name`,basesalary,titlesalary,deduction
FROM employee emp INNER JOIN salary
ON emp.`empid` = salary.`empid`
ORDER BY emp.`title` ASC , basesalary ASC;
16.查询员工编号、姓名,出生日期,及年龄段,其中,如果80年之前出生的,定为”老年“;80后定为”中年“,90后定为”青壮年“
SELECT empid,`name`,birthday,
CASE WHEN YEAR(birthday)<1980 THEN '老年'
WHEN YEAR(birthday)<1990 THEN '中年'
ELSE '青壮年' END "年龄段"
FROM employee;
17.查询所有的员工信息,和他所在的部门名称
SELECT emp.*,depname
FROM employee emp LEFT JOIN department dep
ON emp.`depid` = dep.`depid`;
18.查询所有部门信息,和该部门的员工信息
SELECT dep.*,emp.*
FROM employee emp RIGHT JOIN department dep
ON emp.`depid` = dep.`depid`;
19.查询所有职位中含“工程师”的男员工的人数
SELECT COUNT(*) FROM employee WHERE sex='男' AND title LIKE '%工程师%';
20.查询每个部门的男生和女生的人数和平均基本工资
SELECT dep.depid,sex,COUNT(*),AVG(basesalary)
FROM department dep INNER JOIN employee INNER JOIN salary
ON dep.depid = employee.depid AND employee.empid = salary.empid
GROUP BY dep.depid,sex;

练习4

  1. 创建一个数据库:test_school
  2. 创建如下表格
    表1 Department表的定义
    在这里插入图片描述
    表2 Teacher表的定义
    在这里插入图片描述
  3. 添加记录
    在这里插入图片描述
    在这里插入图片描述
  4. 用SELECT语句查询Teacher表的所有记录。
  5. 找出所有其家庭地址中含有“北京”的教师的教工号及部门名称,要求显示结果中各列标题用中文别名
    表示。
  6. 获得Teacher表中工资最高的教工号和姓名。
  7. 找出所有收入在2500~4000之间的教工号。
  8. 查找在网络技术系工作的教师的姓名、性别和工资。
#创建一个数据库:test_school
CREATE DATABASE test_school;
#使用数据库
USE test_school;
#创建表格
-- 部门信息表Department
CREATE TABLE Department(
DepNo INT(10) PRIMARY KEY,
DepName VARCHAR(20) NOT NULL,
DepNote VARCHAR(50)
);
-- 创建数据表Teacher
CREATE TABLE Teacher(
Number INT PRIMARY KEY,
`Name` VARCHAR(30) UNIQUE,
Sex VARCHAR(4),
Birth DATE,
DepNo INT,
Salary FLOAT,
Address VARCHAR(100),
FOREIGN KEY (DepNo) REFERENCES Department(DepNo)
);
-- 将表4的内容插入Department表中
INSERT INTO Department VALUES (601,'软件技术系','软件技术等专业');
INSERT INTO Department VALUES (602,'网络技术系','多媒体技术等专业');
INSERT INTO Department VALUES (603,'艺术设计系','广告艺术设计等专业');
INSERT INTO Department VALUES (604,'管理工程系','连锁经营管理等专业');
-- 将表3的内容插入Teacher表中。
INSERT INTO Teacher VALUES(2001,'Tom','女','1970-01-10',602,4500,'四川省绵阳市');
INSERT INTO Teacher VALUES(2002,'Lucy','男','1983-12-18',601,2500,'北京市昌平区');
INSERT INTO Teacher VALUES(2003,'Mike','男','1990-06-01',604,1500,'重庆市渝中区');
INSERT INTO Teacher VALUES(2004,'James','女','1980-10-20',602,3500,'四川省成都市');
INSERT INTO Teacher VALUES(2005,'Jack','男','1975-05-30',603,1200,'重庆市南岸区');

4.SELECT语句查询Teacher表的所有记录。
SELECT * FROM teacher;

5.找出所有其家庭地址中含有“北京”的教师的教工号及部门名称,要求显示结果中各列标题用中文表示。
SELECT number AS 教工号,Teacher.depno AS 部门名称
FROM Teacher INNER JOIN Department
ON Teacher.DepNo = Department.DepNo
WHERE address LIKE '%北京%';

6.获得Teacher表中工资最高的教工号和姓名。
SELECT number,`name` FROM teacher WHERE salary = (SELECT MAX(salary) FROM teacher);
SELECT number,`name` FROM teacher ORDER BY salary DESC LIMIT 0,1;

7.找出所有收入在25004000之间的教工号。
SELECT number FROM teacher WHERE salary BETWEEN 2500 AND 4000;

8.查找在网络技术系工作的教师的姓名、性别和工资。
SELECT `name`,sex,salary FROM teacher
WHERE depno=(SELECT depno FROM department WHERE depname='网络技术系');
SELECT `name`,sex,salary
FROM teacher INNER JOIN department
ON teacher.depno = department.depno
WHERE depname ='网络技术系';

练习5

  1. 建立数据库test_student
  2. 建立以下三张表,并插入记录
    Table:Classes
    在这里插入图片描述
    Table:Score
    在这里插入图片描述
    Table: Records
    在这里插入图片描述
  3. 写出将张三的语文成绩修改为88的SQL语句。
  4. 搜索出计算机维护1班各门课程的平均成绩。
  5. 搜索科目有不及格的人的名单。
  6. 查询记录2次以上的学生的姓名和各科成绩。
#1、建立数据库test_student
CREATE DATABASE test_student;
#使用数据库
USE test_student;
#2、创建表格并添加记录
CREATE TABLE Classes(
Pro_name VARCHAR(20) NOT NULL,
Grade VARCHAR(10) NOT NULL,
`name` VARCHAR(10) NOT NULL,
sex VARCHAR(4) NOT NULL,
seat INT(10) NOT NULL UNIQUE
);
CREATE TABLE Score(
`name` VARCHAR(10) NOT NULL,
En_score INT(10) NOT NULL,
Ma_score INT(10) NOT NULL,
Ch_score INT(10) NOT NULL
);
CREATE TABLE Records(
`name` VARCHAR(10) NOT NULL,
record VARCHAR(10)
);
-- 向classes中添加数据
INSERT INTO classes VALUES('计算机网络','1班','张三','男',8);
INSERT INTO classes VALUES('软件工程','2班','李四','男',12);
INSERT INTO classes VALUES('计算机维护','1班','王五','男',9);
INSERT INTO classes VALUES('计算机网络','2班','LILY','女',15);
INSERT INTO classes VALUES('软件工程','1班','小强','男',20);
INSERT INTO classes VALUES('计算机维护','1班','CoCo','女',18);
-- 向score中添加数据
INSERT INTO Score VALUES('张三',65,75,98);
INSERT INTO Score VALUES('李四',87,45,86);
INSERT INTO Score VALUES('王五',98,85,65);
INSERT INTO Score VALUES('LILY',75,86,87);
INSERT INTO Score VALUES('小强',85,60,58);
INSERT INTO Score VALUES('CoCo',96,87,70);
-- 向records中添加数据
INSERT INTO records VALUES('小强','迟到');
INSERT INTO records VALUES('小强','事假');
INSERT INTO records VALUES('李四','旷课');
INSERT INTO records VALUES('李四','旷课');
INSERT INTO records VALUES('李四','迟到');
INSERT INTO records VALUES('CoCo','病假');
INSERT INTO records VALUES('LILY','事假');
3.写出将张三的语文成绩修改为88SQL语句。
UPDATE score SET ch_score=88 WHERE `name`='张三';
4.搜索出计算机维护1班各门课程的平均成绩。
SELECT AVG(en_score),AVG(ma_score),AVG(ch_score) FROM score
WHERE `name` IN (SELECT `name` FROM classes WHERE Pro_name='计算机维护' AND grade='1
班');
5.搜索科目有不及格的人的名单。
SELECT `name` FROM score WHERE en_score<60 OR ma_score<60 OR ch_score<60;
6.查询记录2次以上的学生的姓名和各科成绩。
SELECT *
FROM score INNER JOIN
(SELECT `name`,COUNT(*) FROM Records GROUP BY `name` HAVING COUNT(*)>2) temp
ON score.name = temp.name;

练习6

  1. 建立数据库:test_xuankedb
  2. 建立如下三张表:
    学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个字段,Sno 为关
    键字。
    课程表Course由课程号(Cno)、课程名(Cname)、选修课号(Cpno)、学分(Ccredit)四个字段,Cno为关键
    字。
    成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个字段,(SNO, CNO)为关键字。
  3. 向Student表增加“入学时间(Scome)”列,其数据类型为日期型。
  4. 查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
  5. 查询学习1号课程的学生最高分数、平均成绩。
  6. 查询与“李洋”在同一个系学习的学生。
  7. 将计算机系全体学生的成绩置零。
  8. 删除学生表中学号为05019的学生记录。
  9. 删除计算机系所有学生的成绩记录。
-- 1、创建一个数据库:test_xuankedb
CREATE DATABASE test_xuankedb;
-- 使用数据库
USE test_xuankedb;
-- 2、创建学生表
CREATE TABLE student(
sno INT(10) PRIMARY KEY,
sname VARCHAR(10),
ssex VARCHAR(10),
sage INT(10),
sdept VARCHAR(40)
);
-- 创建课程表
CREATE TABLE course(
cno INT(10) PRIMARY KEY,
cname VARCHAR(20),
cpno VARCHAR(40),
ccredit INT(20)
);
-- 创建成绩表
CREATE TABLE sg(
sno INT(10),
cno INT(10),
grade INT(3),
PRIMARY KEY(sno,cno),
CONSTRAINT stu_s_sno_fk FOREIGN KEY (sno) REFERENCES student(sno),
CONSTRAINT cou_s_sno_fk FOREIGN KEY (cno) REFERENCES course(cno)
);
3.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。
ALTER TABLE student ADD COLUMN scome DATE;
4.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
SELECT sno,grade FROM sg WHERE cno=3 ORDER BY grade DESC;
5.查询学习1号课程的学生最高分数、平均成绩。
SELECT MAX(grade),AVG(grade) FROM sg WHERE cno=1;
6.查询与“李洋”在同一个系学习的学生。
SELECT * FROM student WHERE sdept=(SELECT sdept FROM student WHERE sname='李洋');
7.将计算机系全体学生的成绩置零。
UPDATE sg SET grade=0 WHERE sno IN (SELECT sno FROM student WHERE sdept='计算机系')
8.删除学生表中学号为05019的学生记录。
DELETE FROM student WHERE sno=05019;
9.删除计算机系所有学生的成绩记录。
DELETE FROM sg WHERE sno IN (SELECT sno FROM student WHERE sdept='计算机系');

练习7

  1. 建立数据库:test_library
  2. 建立如下三个表: 表一:press 出版社 属性:编号pressid(int)、名称pressname(varchar)、地址
    address(varchar)
    表二:sort 种类 属性:编号sortno(int)、数量scount(int)
    表二:book图书 属性:编号bid(int)、名称 bname(varchar)、种类bsortno(int)、出版社编号pressid(int)
  3. 给sort表中添加一列属性:描述describes(varchar)
  4. 向三个表中各插入几条数据
    在这里插入图片描述
  5. 查询出版社id为100的书的全部信息
  6. 查询出版社为外研社的书的全部信息
  7. 查询图书数量(scount)大于100的种类
  8. 查询图书种类最多的出版社信息
-- 1、建立数据库:test_library
CREATE DATABASE test_library;
-- 使用数据库
USE test_library;
-- 2、创建出版社表
CREATE TABLE press(
pressid INT(10) PRIMARY KEY,
pressname VARCHAR(30),
address VARCHAR(50)
);-- 创建一个种类表
CREATE TABLE sort(
sortno INT(10) PRIMARY KEY,
scount INT(10)
);
-- 创建图书表
CREATE TABLE book(
bid INT(10) PRIMARY KEY,
bname VARCHAR(40),
bsortno INT(10),
pressid INT(10),
CONSTRAINT p_b_pid_fk FOREIGN KEY (pressid) REFERENCES press(pressid),
CONSTRAINT s_b_sno_fk FOREIGN KEY (bsortno) REFERENCES sort(sortno)
);
-- 3、添加一列属性
ALTER TABLE sort ADD COLUMN describes VARCHAR(30);
-- 4、添加数据
INSERT INTO press VALUES(100,'外研社','上海');
INSERT INTO press VALUES(101,'北大出版社','北京');
INSERT INTO press VALUES(102,'教育出版社','北京');
-- 添加数据
INSERT INTO sort(sortno,scount,describes)VALUES(11,50,'小说');
INSERT INTO sort(sortno,scount,describes)VALUES(12,300,'科幻');
INSERT INTO sort(sortno,scount,describes)VALUES(13,100,'神话');
-- 添加数据
INSERT INTO book VALUES(1,'红与黑',11,100);
INSERT INTO book VALUES(2,'幻城',12,102);
INSERT INTO book VALUES(3,'希腊神话',13,102);
INSERT INTO book VALUES(4,'一千零一夜',13,102);
5.查询出版社id为100的书的全部信息
SELECT * FROM book WHERE pressid=100;
6.查询出版社为外研社的书的全部信息
SELECT * FROM book WHERE pressid=(SELECT pressid FROM press WHERE pressname='外研社');
7.查询图书数量(scount)大于100的种类
SELECT * FROM sort WHERE scount>100;
8.查询图书种类最多的出版社信息
SELECT * FROM press WHERE pressid=(
SELECT temp.pressid FROM
(SELECT pressid,MAX(t.c) FROM (SELECT pressid,COUNT(*) AS c FROM book GROUP BY
pressid ORDER BY c DESC ) AS t) AS temp);
SELECT * FROM press WHERE pressid=(
SELECT pressid
FROM (SELECT pressid,bsortno FROM book GROUP BY pressid,bsortno) temp
GROUP BY pressid
ORDER BY COUNT(*) DESC
LIMIT 0,1)

练习8

  1. 建立数据库:test_tour
  2. 建立如下两个表:
    agency旅行社表:
    在这里插入图片描述
    travel旅行线路表:
    在这里插入图片描述
  3. 添加记录
    在这里插入图片描述
  4. 查出旅行线路最多的旅社
  5. 查出最热门的旅行线路(也就是查询出报名人数最多的线路)
  6. 查询花费少于5000的旅行线路
  7. 找到一次旅行花费最昂贵的旅行社名
  8. 查出青年旅社所有的旅行线路都玩一遍需要多少时间。
#1、建立数据库:test_tour
CREATE DATABASE test_tour;
#使用数据库
USE test_tour;
#2、
CREATE TABLE agency(
id INT PRIMARY KEY NOT NULL,
NAME VARCHAR(20) NOT NULL,
address VARCHAR(100) NOT NULL,
areaid INT
);
CREATE TABLE trval(
tid INT PRIMARY KEY NOT NULL,
TIME VARCHAR(50) NOT NULL,
POSITION VARCHAR(100) NOT NULL,
money FLOAT,
aid INT NOT NULL,
rcount INT,
CONSTRAINT bk_aid FOREIGN KEY trval(aid) REFERENCES agency(id)
);
#3、
INSERT INTO agency(id,NAME,address) VALUES (101,'青年旅行社','北京海淀');
INSERT INTO agency(id,NAME,address) VALUES (102,'天天旅行社','天津海院');
INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (1,'5天','八达
岭',3000,101,10);
INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (2,'7天','水长
城',5000,101,14);
INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (3,'8天','水长
城',6000,102,11);
SELECT * FROM agency;
SELECT * FROM trval;
4.查出旅行线路最多的旅社
SELECT *
FROM agency INNER JOIN
(SELECT t.aid,MAX(t.c) FROM (SELECT aid,COUNT(*) AS c FROM trval GROUP BY aid) AS
t)temp
ON agency.id = temp.aid
5.查出最热门的旅行线路(也就是查询出报名人数最多的线路)
SELECT * FROM trval WHERE rcount=(SELECT MAX(rcount) FROM trval);
6.查询花费少于5000的旅行线路
SELECT * FROM trval WHERE money<5000;
7.找到一次旅行花费最昂贵的旅行社名
SELECT NAME FROM agency WHERE id =
(SELECT aid FROM trval WHERE money =(SELECT MAX(money) FROM trval ));
8.查出青年旅社所有的旅行线路都玩一遍需要多少时间。
SELECT SUM(TIME) FROM trval WHERE aid=(SELECT id FROM agency WHERE NAME='青年旅行社');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1335787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

广州华锐互动VRAR:VR安全模拟驾驶让顾客身临其境感受真实试驾体验

随着科技的不断发展&#xff0c;汽车行业也在不断地进行创新。从电动汽车到自动驾驶&#xff0c;再到如今的虚拟现实技术&#xff0c;汽车行业的未来充满了无限的可能性。而在这些创新中&#xff0c;VR安全模拟驾驶无疑是最具吸引力的一项。通过戴上一副虚拟现实眼镜&#xff0…

计算机毕业设计 基于SpringBoot的高校宣讲会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

JMeter逻辑控制器之IF控制器

Jmeter控制器之IF控制器 1.应用背景2.介绍3.使用4.添加控制器5.表达式说明6.函数助手调用7.举例 1.应用背景 存在一些使用场景&#xff0c;比如&#xff1a;一个测试场景中&#xff0c;包含多个请求&#xff0c;当上一个请求的结果不符合要求&#xff0c;就不需要执行下一个请求…

听GPT 讲Rust源代码--src/tools(27)

File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则&#xff0c;检测产生潜在性能问题的字符转换代码&#xff0c;并给出相关建议。 在Rus…

vscode中使用GitHub Copilot Chat

文章目录 一、什么是Github Copilot Chat二、安装使用三、如何使用1. 聊天功能2. 内联功能 一、什么是Github Copilot Chat GitHub Copilot Chat 由 OpenAI 的 GPT-4 大型多模态模型提供支持&#xff0c;能带来更准确的代码建议、解释和指导。GitHub Copilot Chat 的内联功能可…

AI安全综述

1、引言 AI安全这个话题&#xff0c;通常会引伸出来图像识别领域的对抗样本攻击。下面这张把“熊猫”变“猴子”的攻击样例应该都不陌生&#xff0c;包括很多照片/视频过人脸的演示也很多。 对抗样本的研究领域已经具备了一定的成熟性&#xff0c;有一系列的理论来论述对抗样本…

Opencv学习笔记(二)图像基本操作

图像基本操作 一、边界填充 二、图像融合 三、图像阈值 四、图像平滑 五、形态学预算 1、腐蚀操作 2、膨胀操作 3、开闭运算操作 4、梯度运算 5、顶帽运算 6、黑帽运算 一、边界填充 cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borde…

[内功修炼]函数栈帧的创建与销毁

文章目录 1:什么是函数栈帧2:理解函数栈帧能解决什么问题呢3:函数栈帧的创建与销毁的解析3.1:什么是栈3.2:认识相关寄存器与汇编指令相关寄存器相关汇编指令 3.3 解析函数栈帧的创建和销毁3.3.1 预备知识3.3.2 详细解析一:调用main函数,为main函数开辟函数栈帧First:push前push…

C++力扣题目20--有效的括号

给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

ElasticSearch之RestClient笔记

1. ElasticSearch 1.1 倒排索引 1.2 ElasticSearch和Mysql对比 1.3 RestClient操作 导入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.15.…

中科驭数与宽睿科技达成战略合作,共筑超低时延软硬一体技术底座

近日&#xff0c;中科驭数&#xff08;北京&#xff09;科技有限公司&#xff08;简称“中科驭数”&#xff09;和上海宽睿信息科技有限责任公司&#xff08;简称“宽睿科技”&#xff09;完成战略合作协议签署。双方将结合各自在超低时延软硬件领域的深厚业务积累和技术产品优…

PPT中加入页码

PPT中加入页码 文章目录 简单版本样式更改 简单版本 PPT中插入页码&#xff0c;基础的就是在“插入”选项卡中单机“幻灯片编号”即可 样式更改 然而&#xff0c;就像我们做幻灯片不满足于白底黑字一样&#xff0c;页码也总不能是默认的样式。 比如&#xff0c;在页码下面…

看图了解ODF光纤配线架,详细熔接过程学习

弱电工程&#xff0c;远距离传输离不开光纤&#xff0c;只有光纤才能让网络传输的更远&#xff0c;今天了解光纤的配套产品&#xff0c;光纤配线架&#xff08;Optical Distribution Frame&#xff09;用于光纤通信系统中局端主干光缆的成端和分配&#xff0c;可方便地实现光纤…

运行天地图Cesium.js三维服务案例

零、技术选型及相关网址 技术选型&#xff1a;Vue2、VueCli5、Cesium.js、天地图 相关网址&#xff1a;三维服务 - 天地图 帮助文档 一、cesium 初始化参数解析 initializeCesium() {this.viewer new Cesium.Map("cesiumContainer", {shouldAnimate: true, // 是否…

MATLAB中确定峰宽

创建由钟形曲线之和组成的信号。指定每条曲线的位置、高度和宽度。 x linspace(0,1,1000);Pos [1 2 3 5 7 8]/10; Hgt [4 4 2 2 2 3]; Wdt [3 8 4 3 4 6]/100;for n 1:length(Pos)Gauss(n,:) Hgt(n)*exp(-((x - Pos(n))/Wdt(n)).^2); endPeakSig sum(Gauss); 绘制各单…

工具系列:TensorFlow决策森林_(7)检查和调试决策森林模型

文章目录 设置训练一个简单的随机森林绘制模型检查模型结构手动创建模型结束树写作 在本文中&#xff0c;您将学习如何直接检查和创建模型的结构。我们假设您已经熟悉了在初级和中级介绍的概念。 在本文中&#xff0c;您将&#xff1a; 训练一个随机森林模型并以编程方式访问其…

如何通过内网穿透实现远程访问本地Linux SVN服务

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

HBase基础知识(五):HBase 对接 Hadoop 的 MapReduce

通过 HBase 的相关 JavaAPI&#xff0c;我们可以实现伴随 HBase 操作的 MapReduce 过程&#xff0c;比如使用 MapReduce 将数据从本地文件系统导入到 HBase 的表中&#xff0c;比如我们从 HBase 中读取一些原 始数据后使用 MapReduce 做数据分析。 1 官方 HBase-MapReduce 1&am…

vscode中默认shell选择

terminal.integrated.defaultProfile.linux在vs的Preference的Settings里面搜索terminal.integrated.defaultProfile.linux&#xff0c;默认的应该是null&#xff0c;将其修改为bash即可。 linux———/bin/sh、 /bin/bash、 /bin/dash的区别

微信使用证书退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道

解决方法&#xff1a;IIS-》应用程序池-》高级设置-》进程模块-》加载用户配置文件&#xff0c;设置为True就可以了。