牛客網SQL刷題31-40
文章目錄
- 31、將employees表的所有員工的last_name和first_name拼接起來作為Name,中間以一個空格區分
- 32、建立一個actor表,包含如下列資訊
- 33、題目已經先執行了如下語句:
- 34、題目已經先執行了如下語句:對於表actor插入如下資料,如果資料已經存在,請忽略(不支援使用replace操作)
- 35、題目描述
- 36、針對如下表actor結構建立索引:(注:在 SQLite 中,除了重新命名錶和在已有的表中新增列,ALTER TABLE 命令不支援其他操作,mysql支援ALTER TABLE建立索引)
- 37、針對actor表建立檢視actor_name_view,只包含first_name以及last_name兩列,並對這兩列重新命名,first_name為first_name_v,last_name修改為last_name_v:
- 38、針對salaries表emp_no欄位建立索引idx_emp_no,查詢emp_no為10005, 使用強制索引。
- 39、存在actor表,包含如下列資訊:
- 40、構造一個觸發器audit_log,在向employees_test表中插入一條資料的時候,觸發插入相關的資料到audit中。
31、將employees表的所有員工的last_name和first_name拼接起來作為Name,中間以一個空格區分
(注:sqllite,字串拼接為 || 符號,不支援concat函式,mysql支援concat函式)
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 concat_ws(" ",last_name,first_name)as name from employees;
32、建立一個actor表,包含如下列資訊
列表 型別 是否為NULL 含義
actor_id smallint(5) not null 主鍵id
first_name varchar(45) not null 名字
last_name varchar(45) not null 姓氏
last_update date not null 日期
create table if not exists `actor`(
actor_id smallint(5) primary key not null comment '主鍵id',
first_name varchar(45) not null comment '名字',
last_name varchar(45) not null comment '姓氏',
last_update date not null comment '日期'
)engine=innodb default charset=utf8;
33、題目已經先執行了如下語句:
drop table if exists actor;
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 DATETIME NOT NULL)
請你對於表actor批量插入如下資料(不能有2條insert語句哦!)
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 (
actor_id,first_name,last_name,last_update)
values
(1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),
(2,'NICK','WAHLBERG','2006-02-15 12:34:33');
34、題目已經先執行了如下語句:對於表actor插入如下資料,如果資料已經存在,請忽略(不支援使用replace操作)
actor_id first_name last_name last_update
‘3’ ‘ED’ ‘CHASE’ ‘2006-02-15 12:34:33’
drop table if exists actor;
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 DATETIME NOT NULL);
insert into actor values (‘3’, ‘WD’, ‘GUINESS’, ‘2006-02-15 12:34:33’);
insert ignore into actor values
(3,'ED','CHASE','2006-02-15 12:34:33');
35、題目描述
對於如下表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 if not exists actor_name(
first_name varchar(45)not null comment'名字',
last_name varchar(45)not null comment'姓氏');
insert into actor_name select first_name,last_name from actor;
補充:
MYSQL建立資料表的三種方法
本題目考察MYSQL建立資料表的三種方法:
- 常規建立
create table if not exists 目標表 - 複製表格
create 目標表 like 來源表 - 將table1的部分拿來建立table2
create table if not exists actor_name
(
first_name varchar(45) not null,
last_name varchar(45) not null
)
select first_name,last_name
from actor
36、針對如下表actor結構建立索引:(注:在 SQLite 中,除了重新命名錶和在已有的表中新增列,ALTER TABLE 命令不支援其他操作,mysql支援ALTER TABLE建立索引)
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 datetime NOT NULL);
對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);
37、針對actor表建立檢視actor_name_view,只包含first_name以及last_name兩列,並對這兩列重新命名,first_name為first_name_v,last_name修改為last_name_v:
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 datetime NOT NULL);
create VIEW actor_name_view as select first_name as first_name_v
,last_name as last_name_v
from actor;
建立檢視語法:create view view_name as select語句
38、針對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 FORCE INDEX (idx_emp_no) where emp_no = 10005;
MYSQL中強制索引查詢使用:FORCE INDEX(indexname);
SQLite中強制索引查詢使用:INDEXED BY indexname;
39、存在actor表,包含如下列資訊:
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 datetime NOT NULL);
現在在last_update後面新增加一列名字為create_date, 型別為datetime, NOT NULL,預設值為’2020-10-01 00:00:00’
答案:
alter table actor add create_date datetime not null default'2020-10-01 00:00:00';
40、構造一個觸發器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
);
答案:
create trigger audit_log after insert on employees_test
for each row begin insert into
audit values(new.id,new.name);end
注意:
1.create trigger :建立觸發器
2.觸發器要說明是在after 還是before事務發生時觸發
3.要指明是insert 、delete、update操作
4. on 表名
5.begin和end之間寫觸發的動作
6. new 關鍵字表示更新後的表的欄位 ,old表示更新前的表的欄位
在MySQL中,建立觸發器語法如下:
CREATE TRIGGER trigger_name
trigger_time trigger_event ON tbl_name
FOR EACH ROW
trigger_stmt
其中:
trigger_name:標識觸發器名稱,使用者自行指定;
trigger_time:標識觸發時機,取值為 BEFORE 或 AFTER;
trigger_event:標識觸發事件,取值為 INSERT、UPDATE 或 DELETE;
tbl_name:標識建立觸發器的表名,即在哪張表上建立觸發器;
trigger_stmt:觸發器程式體,可以是一句SQL語句,或者用 BEGIN 和 END 包含的多條語句,每條語句結束要分號結尾。
相關文章
- 牛客網SQL刷題41-50SQL
- 牛客網刷題(純java題型 31~60題)Java
- 牛客網刷題(純java題型 1~30題)Java
- 牛客網刷題(純java題型 91~120題)Java
- 牛客網刷題(純java題型 241~270題)Java
- 牛客網刷題(純java題型 421~450題)Java
- 牛客網刷題hj1-hj4
- 牛客SQL練習第21題SQL
- 牛客刷題筆記--(java基礎301-400)筆記Java
- 牛客網Java評估題Java
- 牛客網--華為機試題
- 牛客15天刷題ZT50_小美的樹上染色
- 牛客網字串排序程式設計題字串排序程式設計
- 牛客錯題集
- Java基礎知識(牛客刷題)記錄..(持續輸出中)Java
- 牛客錯題集(Java)Java
- 牛客多校H題題解
- Mysql 練習(牛客網)MySql
- 牛客網 Coincidence(最長公共子串LCS板題)IDE
- 牛客網Mysql相應試題 SQL28 計算使用者8月每天的練題數量MySql
- 牛客網專項練習(八)——選擇題(錯題&不懂的題)
- 錯題集1-牛客
- 牛客題霸--求路徑
- 【Leetcode】題目集:31-40LeetCode
- 【10.22 牛客普及(三)】 牛半仙的妹子gcd 題解GC
- 【10.24 牛客普及(四)】 卡片 題解
- 牛客周賽 Round 66 題解
- 牛客小白月賽105 題解
- 牛客2020跨年場 部分題解
- 牛客
- 牛客刷題回溯法之矩陣中的路徑 and 機器人的運動範圍矩陣機器人
- 牛客周賽 Round 62 全部題解
- 牛客周賽 Round 70 A~G 題解
- 牛客網BC13,BC14
- 牛客題霸 [括號序列] C++題解/答案C++
- 牛客 215E 黃魔法師 題解
- 牛客小白月賽88-DE題解
- 牛客小白月賽88 出題覆盤