牛客SQL 全部题目 SQL233-SQL244 10套代码及解析(4)

SQL233 针对上面的salaries表emp no字段创建索引idx emp no

  1. 强制索引(force index),即指定本次查询使用某个特定的索引,这样就可避免MySQL优化器使用低效的索引。
select *
from salaries
force index (idx_emp_no)
where emp_no=10005

SQL234 在last update后面新增加一列名字为create date

ALTER TABLE actor
ADD (create_date datetime NOT NULL DEFAULT '2020-10-01 00:00:00');

SQL235 构造一个触发器audit log

  1. 创建触发器:create trigger 触发器名称
  2. 用after指定触发条件:在表1中每插入一行 after insert on 表1 for each row
    (注意insert后用on,for each row不能少否则会报错)
  3. 触发的指令写在begin和end之间,分号写在指令后,end后不用加分号
create trigger audit_log 
after insert on employees_test
for each row
begin 
    insert into audit values(new.id,new.name);
end

SQL236 删除emp no重复的记录,只保留最小的id对应的记录

DELETE FROM titles_test
WHERE id NOT IN(
    SELECT * FROM(
    SELECT MIN(id)
    FROM titles_test
    GROUP BY emp_no)a);  -- 把得出的表重命名那就不是原表了

SQL237 将所有to date为9999-01-01的全部更新为NULL

  1. 基本的数据更新语法,UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
update titles_test set to_date = null , from_date = '2001-01-01'
where to_date = '9999-01-01'

SQL238 将id=5以及emp no=10001的行数据替换成id=5以及emp no=10005

  1. REPLACE INTO当遇到primary 或者 unique key 的时候,会首先进行update
REPLACE INTO titles_test 
    VALUES(5, 10005 ,'Senior Engineer', '1986-06-26', '9999-01-01') ;

SQL239 将titles test表名修改为titles 2017

  1. ALTER TABLE 表名 ADD 列名/索引/主键/外键等;
  2. ALTER TABLE 表名 DROP 列名/索引/主键/外键等;
  3. ALTER TABLE 表名 ALTER 仅用来改变某列的默认值;
  4. ALTER TABLE 表名 RENAME 列名/索引名 TO 新的列名/新索引名;
  5. ALTER TABLE 表名 RENAME TO/AS 新表名;
  6. ALTER TABLE 表名 MODIFY 列的定义但不改变列名;
  7. ALTER TABLE 表名 CHANGE 列名和定义都可以改变。
alter table titles_test rename titles_2017

SQL240 在audit表上创建外键约束,其emp no对应emplovees test表的主键id

ALTER TABLE audit
ADD CONSTRAINT FOREIGN KEY (emp_no)
REFERENCES employees_test(id);

SQL242 将所有获取奖金的员工当前的薪水增加10%

update salaries
set salary=salary*1.1
where to_date='9999-01-01' 
    and salaries.emp_no in(select emp_no from emp_bonus)

SQL244 将employees表中的所有员工的last name和first name通过引号连接起来

 select concat(last_name, '''', first_name) as name
 from employees;
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值