数据库操作练习8
来源:互联网 发布:免费服装销售软件 编辑:程序博客网 时间:2024/05/18 00:03
1. 针对库中的所有表生成select
题目描述
针对库中的所有表生成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`));
输出格式:
cnts select count(*) from employees;select count(*) from departments;select count(*) from dept_emp;select count(*) from dept_manager;select count(*) from salaries;select count(*) from titles;select count(*) from emp_bonus;
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 系统表 sqlite_master 中可以获得所有表的索引,其中字段 name 是所有表的名字,而且对于自己创建的表而言,字段 type 永远是 'table'
select "select count(*) from " || name || ";" as cnts from sqlite_master where type='table'
2.将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01。
题目描述
将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01。
CREATE TABLE IF NOT EXISTS titles_test (
id int(11) not null primary key,
emp_no int(11) NOT NULL,
title varchar(50) NOT NULL,
from_date date NOT NULL,
to_date date DEFAULT NULL);
insert into titles_test values ('1', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('2', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('6', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');
CREATE TABLE IF NOT EXISTS titles_test (
id int(11) not null primary key,
emp_no int(11) NOT NULL,
title varchar(50) NOT NULL,
from_date date NOT NULL,
to_date date DEFAULT NULL);
insert into titles_test values ('1', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('2', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('6', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');
sql1:
update用法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
另外要注意若干列 to_date = NULL 和 from_date = '2001-01-01' 之间只能用逗号连接,切勿用 AND 连接。
update titles_test set to_date=null,from_date='2001-01-01' where to_date='9999-01-01'
3. 使用子查询的方式找出属于Action分类的所有电影对应的title,description
题目描述
film表
字段说明film_id电影idtitle电影名称description电影描述信息
CREATE TABLE IF NOT EXISTS film (film_id smallint(5) NOT NULL DEFAULT '0',title varchar(255) NOT NULL,description text,PRIMARY KEY (film_id));
category表
字段说明category_id电影分类idname电影分类名称last_update电影分类最后更新时间
CREATE TABLE category (category_id tinyint(3) NOT NULL ,name varchar(25) NOT NULL, `last_update` timestamp,PRIMARY KEY ( category_id ));
film_category表
字段说明film_id电影idcategory_id电影分类idlast_update电影id和分类id对应关系的最后更新时间
CREATE TABLE film_category (film_id smallint(5) NOT NULL,category_id tinyint(3) NOT NULL, `last_update` timestamp);
子查询:
根据题意,最简单粗暴的解法是直接 FROM 三张表查询,且用 WHERE 并列三个限定条件:
1、三个限定条件分别是【f.film_id = fc.film_id】、【fc.category_id = c.category_id 】、【c.name = 'Action'】
1、三个限定条件分别是【f.film_id = fc.film_id】、【fc.category_id = c.category_id 】、【c.name = 'Action'】
SELECT f.title, f.description FROM film f, film_category fc, category c WHERE f.film_id = fc.film_id AND fc.category_id = c.category_id
AND c.name = 'Action'
AND c.name = 'Action'
非子查询:
select f.title,f.description from film as f inner join film_category as fc on f.film_id = fc.film_id inner join category as c on c.category_id = fc.category_id where c.name = 'Action';
阅读全文
0 0
- 数据库操作练习8
- Orcale数据库操作练习
- JavaDB数据库操作练习
- 数据库操作练习1
- 数据库操作练习2
- 数据库操作练习3
- 数据库操作练习4
- 数据库操作练习5
- 数据库操作练习6
- 数据库操作练习7
- 数据库操作练习9
- 数据库操作练习10
- 数据库操作练习11
- 数据库操作练习12
- 数据库操作练习13
- Android简单数据库操作练习
- MySql数据库基本操作练习
- python操作mysql数据库练习
- OpenOfiice学习笔记(一)
- 线段树
- 11_ID生成策略__annotation配置(一)
- jQuery源码学习笔记系列(三)
- Spring boot 下使用RabbitMQ报错:链接拒绝和不能创建队列
- 数据库操作练习8
- 浅谈Vue组件间的通信
- dos命令之 arp (网络诊断与配置)使用详解
- Python生成词云图,TIIDF方法文本挖掘: 词频统计,词云图
- jdbc连接数据库
- java学习之最大公约数和最小公倍数
- 【广告算法工程师入门 6】【转】20万、50万、100万的算法工程师,到底有什么区别?
- 使用Nginx抵御DDOS攻击
- scala中一个高阶函数的N种调用方法