一、
题目描述
将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分 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`));
select last_name||" "||first_name from employees as Name
二、
注意系统默认时间获取方法
这是sql server 和SQLlite 语法区别
1、
create table 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')))
三、
1、方法一:利用VALUES(value1, value2, ...), (value1, value2, ...), ...(value1, value2, ...),
insert into actorvalues (1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),(2,'NICK','WAHLBERG','2006-02-15 12:34:33')
2、
方法二:利用 UNION SELECT 批量插入
select ,,,union select ... 注意不用加括号
insert into actorselect 1,'PENELOPE','GUINESS','2006-02-15 12:34:33' union select 2,'NICK','WAHLBERG','2006-02-15 12:34:33'
四、
注意,只对主键起作用
id 和 name 都相等时,才判断存在;
1、
如果不存在则插入,如果存在则忽略
INSERT OR IGNORE INTO tablename VALUES(...);
insert or ignore into actorvalues (3,"ED",'CHASE','2006-02-15 12:34:33')
2、
如果不存在则插入,如果存在则替换
INSERT OR REPLACE INTO tablename VALUES(...);
五、
表里的数据和标的结构不一样。actor_name表有两列 first_name,last_name。也就是将actor表中的名字提取出来。
1、创建一个表,添加数据
create table if not exists actor_name(first_name varchar(45) not null ,last_name varchar(45) not null);insert into actor_name select first_name,last_name from actor
创建表时注意,表列名之间用逗号,创建完成后分号。
2、简化写法
create table actor_name asselect first_name,last_name from actor;
六、
题目描述
针对如下表actor结构创建索引: 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'))) 对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 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')))
create view actor_name_view asselect first_name as first_name_v,last_name as last_name_vfrom 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);
/*create index idx_emp_no on salaries(emp_no);*/select * from salaries indexed by idx_emp_no where emp_no='10005'
八、
题目描述
存在actor表,包含如下列信息: 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'))); 现在在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为'0000 00:00:00'
alter table actor add column create_date datetime not null default '0000-00-00 00:00:00'
九、
题目描述
构造一个触发器audit_log,在向employees_test表中插入一条数据的时候,触发插入相关的数据到audit中。 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, NAME TEXT NOT NULL );
1、
create trigger audit_log after insert on employees_testbegin insert into audit values(new.ID,new.NAME);end
十、
题目描述
删除emp_no重复的记录,只保留最小的id对应的记录。 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');
delete from titles_testwhere id not in (select min(id) from titles_test group by emp_no)