MySQL刷题

编程入门 行业动态 更新时间:2024-10-09 00:49:32

<a href=https://www.elefans.com/category/jswz/34/1771279.html style=MySQL刷题"/>

MySQL刷题

上周突然接到导师要线上讨论班的消息,几天都在沉醉在 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,先放在心里,看看秋招结束会怎样哈哈哈,如果实现我就把这篇翻出来!

更多推荐

MySQL刷题

本文发布于:2024-02-13 21:53:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761035.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:MySQL   刷题

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!