链接:www.nowcoder.com/ta/sql?page…
注意
自增列显示排名
同一个薪资表里查员工和经理的薪资,再比较
表结构:
employees (emp_no,birth_date,first_name,last_name,gender,hire_date)
salaries (emp_no,salary,from_date,to_date)
departments (dept_no,dept_name)
dept_emp (emp_no,dept_no,from_date,to_date)
dept_manager (dept_no,emp_no,from_date,to_date)
titles (emp_no,title,from_date,to_date)
- 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分 (注:该数据库系统是sqllite,字符串拼接为 || 符号,不支持concat函数)
select last_name||' '||first_name as name
from employees
- 创建一个actor表,包含如下列信息(注:sqlite获取系统默认时间是datetime('now','localtime'))
create table actor(
actor_id smallint(5) not null,
first_name varchar(45) not null,
last_name varchar(45) not null,
last_update timestamp not null default(datetime('now','localtime')),
PRIMARY KEY (actor_id));
34.对于表actor批量插入如下数据(不能有2条insert语句哦!)
CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime('now','localtime')))
| actor_id | first_name | last_name | last_update |
|---|---|---|---|
| 1 | PENELOPE | GUINESS | 2006-02-15 12:34:33 |
| 2 | NICK | WAHLBERG | 2006-02-15 12:34:33 |
insert into actor
values (1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),
(2,'NICK','WAHLBERG','2006-02-15 12:34:33')
- 对于表actor批量插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作) actor_id|first_name|last_name|last_update ---|---|---|--- '3'|'ED'|'CHASE'|'2006-02-15 12:34:33'
insert or ignore into actor values
('3','ED','CHASE','2006-02-15 12:34:33')
36.对于如下表actor,其对应的数据为:
| actor_id | first_name | last_name | last_update |
|---|---|---|---|
| 1 | PENELOPE | GUINESS | 2006-02-15 12:34:33 |
| 2 | NICK | WAHLBERG | 2006-02-15 12:34:33 |
请你创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表. actor_name表结构如下:
| 列表 | 类型 | 是否为NULL | 含义 |
|---|---|---|---|
| first_name | varchar(45) | not null | 名字 |
| last_name | varchar(45) | not null | 姓氏 |
create table actor_name
as select first_name,last_name
from actor
- 针对表actor结构创建索引 (注:在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作)
对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname (请先创建唯一索引,再创建普通索引)
create unique index uniq_idx_firstname on actor(first_name);
create index idx_lastname on actor(last_name);
- 针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_name为first_name_v,last_name修改为last_name_v
create view actor_name_view (first_name_v,last_name_v) as
select first_name,last_name from actor
- 针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。
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`));
create index idx_emp_no on salaries(emp_no);
select * from salaries indexed by idx_emp_no where emp_no = 10005
- 存在actor表,现在在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为'0000-00-00 00:00:00'
alter table actor add column
create_date datetime not null default('0000-00-00 00:00:00')