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);
答案:
delete from titles_test where id not in
(select * from (select min(id)from titles_test group by emp_no) a);
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);
基本的数据更新语法,UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 update titles_test set to_date = null , from_date = '2001-01-01' where to_date = '9999-01-01'
答案:
update titles_test set to_date=null,from_date='2001-01-01'
where to_date='9999-01-01';
CREATE TABLE 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);
本题考查的是replace函数,其中包含三个参数,
第一个参数为该字段的名称,
第二参数为该字段的需要被修改值,
第三个参数为该字段修改后的值。
update titles_test set emp_no=
replace(emp_no,10001,10005)
where id=5 and emp_no=10001;
mysql中修改表信息的规则。
alter table 表名 change 原列名 新列名 类型; --修改表的列属性名
alter table 表名 modify 列名 类型 ; --修改表的类类型
alter table 表名 drop 列名; --删除表的某一列
alter table 表名 add 列名 类型;–添加某一列
alter table 表名 rename 新表名; --修改表名
alter table titles_test rename titles_2017;
alter table audit add constraint fk_emp_no foreign key audit(emp_no)
references employees_test(id);
create table emp_bonus(
emp_no int not null,
btype smallint not null);
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`));
答案:
update salaries
set salary=salary*1.1
where emp_no in(select emp_no from emp_bonus)
and to_date='9999-01-01';
select concat(last_name,"'",first_name)as name
from employees;
select length('10,A,B')-length(replace('10,A,B',",","")) as cnt;
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
));
RIGHT函数:可以看到它能返回从最右边开始指定长度的字符串。同理LEFT函数就是返回从最左边开始的指定长度字符串。
select first_name from employees order by right(first_name,2);
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`));
聚合函数group_concat(X,Y),其中X是要连接的字段,Y是连接时用的符号,可省略,默认为逗号。
此函数必须与GROUP BY配合使用。此题以dept_no作为分组,将每个分组中不同的emp_no用逗号连接起来(即可省略Y)。
答案:
SELECT dept_no,group_concat(emp_no) employees
FROM dept_emp GROUP BY dept_no