数据库SQL习题练习Day7
1.检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是()
A. SELECT SN,AGE,SEX FROM S
WHERE AGE>(SELECT AGE FROM S
WHERE SN=“王华”)
B. SELECT SN,AGE,SEX
FROM S
WHERE SN="王华"
C. SELECT SN,AGE,SEX FROM S
WHERE AGE>(SELECT AGE
WHERE SN=“王华”)
D. SELECT SN,AGE,SEX FROM S
WHERE AGE>王华.AGE
先找到王华的年龄:
SELECT AGE FROM S WHERE SN="王华"
然后在遍历表,选出年龄比他大者:
SELECT SN,AGE,SEX FROM S
WHERE AGE > (SELECT AGE FROM S WHERE SN="王华")
2.已知在某期刊在线投稿审稿平台投稿,需要先注册作者信息,作家信息表author(作者编号aid,作者姓名aname,作者笔名ausername,作者地址aaddress,作者邮箱aemail)则下列语句正确的是()
A. INSERT INTO author (aid,aname,ausername,aaddress,aemail)
VALUES (‘D770’,‘张三’,‘西泽梦路’,‘123456@126.com’)
B. INSERT INTO author
VALUES (‘D770’,‘张三’,‘西泽梦路’,‘123456@126.com’)
C. INSERT INTO author (aid,aname,ausername,aemail)
VALUES (‘D770’,‘张三’,‘西泽梦路’,‘123456@126.com’)
D. INSERT INTO author (aname,ausername,aid,aemail)
VALUES (‘D770’,‘张三’,‘西泽梦路’,‘123456@126.com’)
1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(1,'张三','男','2020-4-23','1898888888',NULL,2);2.不可以为null的列必须插入值。可以为null的列可插入NULL值、也可直接忽略不管不写
写法一:写列名与NULL值
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(1,'张三','男','2020-4-23','1898888888',NULL,2);
写法二:列名与值皆忽略,自动加null
INSERT INTO beauty(id,NAME,sex,phone)
VALUES(2,'李四','女','1388888888');3.列的顺序可以在语句内调换,但要上下对应
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('王五','女',20,'1874561236');4.列数和值的个数必须一致,写了列名必须写值
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('赵武','男',22,'1385624521');5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty
VALUES(18,'张飞','男',NULL,'119',NULL,NULL);
3.SQL中,下面对于数据定义语言DDL描述正确的是()
A. DDL关心的是数据库中的数据
B. 联盟链
C. 控制对数据库的访问
D. 定义数据库的结构
DDL(Data Definition Language)数据库定义语言用于定义SQL模式、基本表、视图和索引的创建和撤消操作DDL不需要commit. eg. CREATE ALTER DROP TRUNCATE COMMENT RENAME
DML(Data Manipulation Language)数据操纵语言数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。DML需要commit. eg. SELECT INSERT UPDATE DELETE MERGE CALL EXPLAIN PLAN LOCK TABLE
DCL(Data Control Language)数据库控制语言 授权,角色控制等包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。GRANT 授权, REVOKE 取消授权
TCL(Transaction Control Language)事务控制语言定义数据库的访问控制权限和安全级别;SAVEPOINT 设置保存点, ROLLBACK 回滚, SET TRANSACTION
4.下列选项中关于数据库事务的特性描述正确的是()
A. 事务允许继续分割
B. 多个事务在执行事务前后对同一个数据读取的结果是不同的
C. 一个事务对数据库中数据的改变是暂时的
D. 并发访问数据库时,各并发事务之间数据库是独立的
事务是最小的执行单位,不允许分割;
执行事务前后,数据保持一致,对同一数据读取的结果相同;
一个事务被提交后对数据库中数据的改变是持久的。
5.要将employee 的表名更改为 employee_info,下面MySQL语句正确的是:
A. ALTER TABLE employee RENAME employee_info;
B. ALTER TABLE employee MODIFY employee_info;
C. ALTER TABLE employee ALTER employee_info;
D. ALTER TABLE employee CHANGE employee_info;
RENAME用于表的重命名:RENAME <NAME> 或 RENAME TO <NAME>
MODIFY用于字段类型的修改:MODIFY COLUMN <列名> <类型>
ALTER用于对字段类型、默认值的修改:ALTER COLUMN <列名> <类型> SET DEFAULT <默认值>
CHANGE用于对列名及类型的修改:CHANGE COLUMN <旧列名> <新列名> <类型>表重新命名:ALTER TABLE 旧表名 to 新表名;
列重新命名:ALTER TABLE 表名 CHANGE 旧字段 新字段 列数据类型;
6.修改表test_tbl字段i的缺省值为1000,可以使用SQL语句( )
A. ALTER TABLE test_tbl ALTER i SET DEFAULT 1000;
B. ALTER TABLE test_tbl i SET DEFAULT 1000;
C. ALTER TABLE test_tbl MODIFY i SET DEFAULT 1000;
D. ALTER TABLE test_tbl CHANGE i SET DEFAULT 1000;
修改表:ALTER TABLE 表名 修改选项 。选项集合:
{ ADD COLUMN <列名> <类型> -- 增加列
| CHANGE [COLUMN] <旧列名> <新列名> <新列类型> -- 修改列名或类型
| ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值
| MODIFY [COLUMN] <列名> <类型> -- 修改列类型
| DROP [COLUMN] <列名> -- 删除列
| RENAME TO <新表名> -- 修改表名
| CHARACTER SET <字符集名> -- 修改字符集
| COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)
7.已知数据表STU,现需创建视图view_s,显示所有男同学的信息。下列SQL语句正确的是()
A. CREATE VIEW AS SELECT * FROM STU
B. CREATE VIEW view_s AS SELECT * FROM STU WHERE 性别=‘男’
C. CREATE view_s SELECT * FROM STU WHERE 性别=‘男’
D. CREATE view_s AS SELECT * FROM STU
创建视图: create view 视图名 as select * from 表名 where 条件
8.Mysql中表student_table(id,name,birth,sex),查询重复姓名、重复次数,并按重复次数降序排列,正确的是()?
A. select name,count(*) as c1 from student_table
group by name
having c1 > 1
order by c1 desc ;
B. select name,count() as c1 from student_table
group by name
having c1 > 1
order by c1;
C. select name,count() as c1 from student_table
where count(*) > 1
group by name
order by c1 desc ;
D. select name,count(*) as c1 from student_table
group by name
where c1 > 1
order by c1 desc;
正确的顺序是:where...group by ...having...order by ;
如果是对group by聚合后的结果做筛选,需要用having,where是在聚合前做筛选;
order by 时如果不写desc或asc则默认是按照asc升序排列。
9.下列选项关于函数的描述正确的是()
A. 用户定义函数可以用于执行修改数据库状态的操作
B. 用户定义函数属于数据库,可以在多个数据库下调用
C. 与系统函数一样,用户定义函数可以从查询中调用
D. 标量函数不可使用EXECUTE语句执行
A.用户定义函数不用于执行修改数据库状态的操作;
B.用户定义函数属于数据库,只能在该数据库下调用;执行修改数据库状态的操作,可以在多个数据库下调用;
D.标量函数和存储过程一样,可以使用EXECUTE语句执行。
10.确保事务可以多次从一个字段中读取相同的值,在此事务持续期间,禁止其他事务对此字段的更新”是对下列选项哪一个事务隔离级别的描述()
A. Read uncommitted
B. Read committed
C. Repeatable Read
D. Serializable
在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。
● 未授权读取(Read Uncommitted):读未提交是事务隔离级别的最低级别;该隔离级别可以通过“排他写锁”实现。
● 授权读取(Read Committed):读已提交,可避免脏读情况发生;这可以通过“瞬间共享读锁”和“排他写锁”实现。
● 可重复读取(Repeatable Read):禁止不可重复读取和脏读取,但是有时可能出现幻影数据。这可以通过“共享读锁”和“排他写锁”实现。
● 序列化(Serializable):最严格的事务隔离级别,要求所有事物被串行执行,不能并发执行,可避免脏读、不可重复读,幻读情况的发生。
● 隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。优先考虑把Read Committed,它能够避免脏读取,具有较好的并发性能。
11.有一张persons表包含如下信息:
现要选取居住地址Address以’C’或’h’开头 或以 ‘et’ 结尾的所有数据,结果显示为:
下列MySQL查询语句正确的是:
A. SELECT * FROM persons WHERE Address REGEXP ‘[^Ch]|et$’;
B. SELECT * FROM persons WHERE Address REGEXP ‘^[Ch]et$’;
C. SELECT * FROM persons WHERE Address REGEXP ‘^[Ch]|et$’;
D. SELECT * FROM persons WHERE Address REGEXP ‘^[Ch]|[et]$’;
MySQL 中使用 REGEXP 来操作正则表达式的匹配,其中
^ 该符号表示匹配输入字符串的开始位置;
$ 表示匹配输入字符串的末尾位置;
[...] 表示匹配所包含的任意一个字符;
[^...]表示不能匹配括号内的任意单个字符;
x|y 这条竖线表示匹配 x 或匹配 y。
12.声明游标语法中的INSENSITIVE参数,表示声明一个静态游标。当发生下列选项中的哪一项时,游标将会自动设定INSENSITIVE选项()
A. 在SELECT语句中使用WHERE语句
B. 使用INNER JOIN
C. 所选取的任意表存在索引
D. 将实数值当作选取的列
当遇到以下情况发生时,游标将自动设定INSENSITIVE 选项。
● 在SELECT 语句中使用DISTINCT、 GROUP BY、 HAVING UNION 语句;
● 使用OUTER JOIN;
● 所选取的任意表没有索引;
● 将实数值当作选取的列。
13.在SQL中语法规范中,having子句的使用下面描述正确的是:( )
A. having子句即可包含聚合函数作用的字段也可包括普通的标量字段
B. 使用having的同时不能使用where子句
C. having子句必须于group by 子句同时使用,不能单独使用
D. 使用having子句的作用是限定分组条件
E. Having子句和where子句是等同的
F. 如果select语句中没有聚合函数的使用,就不能使用having子句
having是在分组后过滤,where在分组前过滤,不冲突,可以同时使用;
having是用来过滤的,group by是限定分组;
select语句中没有聚合函数的使用时也可以用having;
14.下面哪一个是MySQL查询语句的正确执行顺序:
A. SELECT —> FROM(including JOINs) —> WHERE —> GROUP BY —> HAVING —> DISTINCT —> ORDER BY —> LIMIT/OFFSET
B. SELECT —> DISTINCT —> FROM(including JOINs) —> WHERE —> GROUP BY —> HAVING —> ORDER BY —> LIMIT/OFFSET
C. FROM(including JOINs) —> WHERE —> GROUP BY —> HAVING —> SELECT —> DISTINCT —> ORDER BY —> LIMIT/OFFSET
D. FROM(including JOINs) —> WHERE —> GROUP BY —> HAVING —> DISTINCT —> SELECT —> ORDER BY —> LIMIT/OFFSET
form -join-on-where-group by-avg/sum-having-select-distinct-group by-limit
15.假设牛客网上有一份绝密文件存于某台机器的secretData数据库中的某个表里面,现在出于数据安全的考虑,对于新创建的用户都只能拥有该机器的登录权限,而不能拥有数据库的其他权限,那么新创建nkw用户满足这一要求的语句是()
A. grant usage on *.* with ‘nkw’@‘%’;
B. grant usage on secretData.* to ‘nkw’@‘%’;
C. grant usage on secretData.* with ‘nkw’@‘%’;
D. grant usage on *.* to ‘nkw’@‘%’;
给数据库赋予登录权限的语句: grant usage on ... to
16.有订单表orders,包含字段用户信息userid,字段产品信息productid,以下语句能够返回至少被订购过两次的productid?()
A. select productid from orders where count(productid)>1
B. select productid from orders where max(productid)>1
C. select productid from orders where having count(productid)>1 group by productid
D. select productid from orders group by productid having count(productid)>1
命令顺序为:select, from, where, group by, having, order by, limit
17.表结构如下:
CREATE TABLE `score` (`id` int(11) NOT NULL AUTO_INCREMENT,`sno` int(11) NOT NULL,`cno` tinyint(4) NOT NULL,`score` tinyint(4) DEFAULT NULL,PRIMARY KEY (`id`)) ;
以下查询语句结果一定相等的是()
A. SELECT sum(score) / count(*) FROM score WHERE cno = 2;
B. SELECT sum(score) / count(id) FROM score WHERE cno = 2;
C. SELECT sum(score) / count(sno) FROM score WHERE cno = 2;
D. SELECT sum(score) / count(score) FROM score WHERE cno = 2;
E. SELECT sum(score) / count(1) FROM score WHERE cno = 2;
F. SELECT avg(score) FROM score WHERE cno = 2;
正确答案:ABCE;DF
count(*)包括了所有列,相当于行数,在统计结果的时候,不会忽略某些列值为NULL的行。
count(1)用1代表代码行,忽略所有列的值,在统计结果的时候,统计所有行,效果同count(*)。
count(列名)只包括列名对应一列,在统计结果的时候,会忽略列值为空的行。
本题中只有score列可能为空,其他列均设置了NOT NULL,因此只有count(score)和avg(score)会忽略score为空的列
数据库SQL习题练习Day7相关推荐
- 数据库SQL习题练习Day4
1.已知职员表employee(eno,ename,gender,birthday,salary),现有一张E表,表结构与职员表一致,要求将E表中没有在职员表中出现的女职员添加到职员表中.下列SQL语 ...
- 数据库SQL习题练习Day2
1.需查看stu表中索引的索引信息时,应使用的存储过程是() A. sp_helpindex B. sp_help C. sp_helpdb D. sp_helptext B选项,报告有关数据库对象的 ...
- 数据库sql语句练习 基础篇
学习数据库,做的练习题记录下来,方便那些想要练习的人 文章目录 数据库建表 1.customer表 2. product 3.order表 4.vendor表 5. recruit表 数据库习题单表查 ...
- 实验四 数据库SQL语言基础编程
-- 实验四 数据库SQL语言基础编程 -- 实验目的: -- 掌握数据库查询语句的编写方法 -- 掌握利用查询语言完成基本查询 -- 掌握利用SQL语句完成数据的添加.删除.修改操作 -- 实 ...
- oracle数据库----SQL语句的实践(应用实例)
oracle数据库----SQL语句的实践(应用实例) 创建表工资表salary,包括员工号emp_id,员工名emp_name,员工月基本工资monthsal,员工月总发工资totalsal. cr ...
- oracle表结构修改回滚,87.Oracle数据库SQL开发之 修改表内存——数据库事务的提交和回滚...
87.Oracle数据库SQL开发之 修改表内存--数据库事务的提交和回滚 数据库事务(transaction)就是一组SQL语句,这组SQL语句时一个逻辑工作单元. 要永久性的记录事务中SQL语句的 ...
- 关于数据库SQL优化
1.数据库访问优化 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬 ...
- 从痴迷数据库SQL语句逐渐走进面向对象化(系统的核心以处理对象为主、淡化数据库概念)...
几年前写信息管理系统都要设计很多很多表,每个表都是自己建立的,然后喜欢用高 性能.高超的SQL语句搞定很多复杂的商业逻辑问题,那SQL语句又长又复杂,一般人 还读不懂,但是代码很少.性能很高, ...
- oracle数据库sql培训,Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐...
风哥oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入 ...
最新文章
- TestNG 自动化测试入门教程--典型示例
- oracle更改字段名顺序的方法
- windows2008下 IIS7 HTTP 错误 404.2 - Not Found 解决方法(图文)
- dial up network
- 高效率人士的日常习惯
- 2017年度计算机科学各领域热点词汇
- AutoCAD2010云盘分享链接
- 高性能服务器设计——模块间通信(转载)
- 大纲2.1 计算机网络
- 51Nod 1274 - 最长递增路径(DP)
- 三转CHM文件故障解决
- 常识——CE修改器使用
- 1.Matlab图像的读取和显示
- 百度云盘Mac破解不限制下载速度-百度网盘客户端 - Go语言编写
- 《MonoIndoor:Towards Good Practice of Self-Supervised Monocular Depth Estimation...》论文笔记
- mummer基因组共线性分析详解
- Python:Numpy—rand、randn
- CSS尺寸与文本讲解。HTML、CSS笔记(四)。
- Semantic Segmentation: A thorough Review
- selenium之判断是否定位正确
热门文章
- 操作ChatGPT竟写出毁灭人类计划书!“AI正在指数级发展”
- Electron -- 编写第一个Eletron程序
- 7-10 拯救007 (25 分)
- 使用ExcelUtils导出Excel文件
- 吵醒猫猫+android7,萌到不行 Chillingo益智新游《吵醒猫猫》
- curses addstr()
- 新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战
- 国产手机再度比拼性价比,中高端手机都跌穿2000元了
- 2千万用户APP的开发运营流程
- 基于docker搭建redis哨兵模式