(1)mysql如何实现插入时如果不存在则插入如果存在则更新的操作?
Oracle中有merge into来实现记录已存在就更新的操作,
mysql没有merge into语法,但是有replace into的写法,同样实现记录已存在就更新的操作。
SQL Server中的实现方法是:
if not exists (select 1 from t where id = 1)
insert into t(id, update_time) values(1, getdate())
else
update t set update_time = getdate() where id = 1
MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, …) values(…)
2. replace into tbl_name(col_name, …) select …
3. replace into tbl_name set col_name=value, …
其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。
(2)员工部门工资SQL面试题
现有employee 表,表中有 员工编号(id) 员工年龄(age) 员工工资(salary) 员工部门(deptid), 按要求用一条SQL语句完成
create table employee(
id int identity(1,1) primary key ,
name varchar(50),
salary bigint,
deptid int
);
(3)建立索引常用的规则如下
1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;