MySQL刷题-牛客网 Day9 + FLAG高高挂起!

上周突然接到导师要线上讨论班的消息,几天都在沉醉在 causal inference 里面,累了累了,今天继续刷牛客的题。

在audit表上创建外键约束,其emp_no对应employees_test表的主键id

CREATE TABLE employees_test(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);

CREATE TABLE audit(
EMP_no INT NOT NULL,
create_date datetime NOT NULL
);

常规问题,总结一下
对于MySQL

ALTER TABLE audit
ADD FOREIGN KEY(emp_no) REFERENCES employees_test(id)

对于SQLite

DROP TABLE audit;
CREATE TABLE audit(
    EMP_no INT NOT NULL,
    create_date datetime NOT NULL,
    FOREIGN KEY(EMP_no) REFERENCES employees_test(ID))
DROP TABLE audit;
CREATE TABLE audit(
    EMP_no INT NOT NULL REFERENCES employees_test(ID),
    create_date datetime NOT NULL);

两种方法都可以

如何获取emp_v和employees有相同的数据no

原谅我没懂这道题目问的是什么意思
存在如下的视图:

create view emp_v as select * from employees where emp_no >10005;
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));

如何获取emp_v和employees有相同的数据?
意思就是怎么获取相同的数据?

方法一
SELECT em.* 
FROM employees AS em, emp_v AS ev 
WHERE em.emp_no = ev.emp_no

根据条件,只对emp_no做了过滤,那么直接找emp_no一样的就行了

方法二
SELECT * FROM employees INTERSECT SELECT * FROM emp_v

用INTERSECT求两个表的交集

方法三
SELECT * FROM emp_v

直接用这个就可以了

针对库中的所有表生成select count(*)对应的SQL语句

又是一题我看不懂的题目

CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
create table emp_bonus(
emp_no int not null,
recevied datetime not null,
btype smallint not null);
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
输出格式:

借鉴这位大神的解答,
大神就是大神啊
首先这道题需要所有的表名,在SQLite系统表中可以获得,字段name就是表的名字,对于自己创建的就是非系统表type永远是table

SELECT "select count(*) from " || name || ";" AS cnts
FROM sqlite_master WHERE type = 'table'

最近看了很多关于秋招的信息也听了很多学长学姐的经验哈哈
在这里默默立个flag,先放在心里,看看秋招结束会怎样哈哈哈,如果实现我就把这篇翻出来!

发布了24 篇原创文章 · 获赞 0 · 访问量 317

猜你喜欢

转载自blog.csdn.net/Helslie/article/details/104613485