首页 > 数据库 >牛客网-SQL专项训练21

牛客网-SQL专项训练21

时间:2022-09-23 11:56:36浏览次数:57  
标签:... 21 查询 牛客 birth SQL table t1 name

①Mysql中表student_info(id,name,birth,sex),字段类型都是varchar,插入如下记录:('1014' , '张三' , '2002-01-06' , '男'); SQL错误的是(B)?

 解析:

普通插入(全字段):INSERT INTO 表名 VALUES (value1, value2, ...)

普通插入(限定字段):INSERT INTO 表名 (column1, column2, ...) VALUES (value1, value2, ...)

多条一次性插入:INSERT INTO 表名 (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...

从另一个表导入:INSERT INTO 表名 SELECT * FROM 另一张表名 [WHERE key=value]

主要问题在于B选项:如果`table`不是表名,不能带table关键字,会报错;如果table就是表名,需要用`table`才行。

②Mysql中表student_table(id,name,birth,sex),插入如下记录:

('1004' , '张三' , '2000-08-06' , '男');
('1005' , NULL , '2001-12-01' , '女'); ('1006' , '张三' , '2000-08-06' , '女'); ('1007' , ‘王五’ , '2001-12-01' , '男'); ('1008' , '李四' , NULL, '女'); ('1009' , '李四' , NULL, '男'); ('1010' , '李四' , '2001-12-01', '女'); 执行 select count(t1.birth) as c1
from (
select * from student_table where sex = '男' ) t1 
right  join 
(select * from student_table where sex = '女') t2 
on t1.birth = t2.birth and t1.name = t2.name ; 
的结果行数是:1 解析: 题目中【right join ... on t1.birth = t2.birth and t1.name = t2.name ; 】right join是以t2表为主表,(左右表中的birth、name都不为NULL时才会匹配上),无法匹配t1中一个字段为NULL或两个字段都为NULL的记录(所以t1结果不含有‘李四’、‘王五’),查询结果如下图,而这次不仅仅是right join发行数,而是查count(t1.birth),count(字段)是不包含NULL记录,所以结果是1行。

 ③子查询中,父查询中一般使用IN运算符的是(B)

 单列单值嵌套查询:

结果集为一个值,一般使用=、<、>等运算符

多列多值嵌套查询:

结果类似于一张虚拟表,父查询中只能使用EXISTS或NOT EXISTS

集合查询:

通常是利用UNION、EXCEPT、INTERSECT集合运算符实现两个表之间的数据查询。

子查询知识点: where型子查询:指把内部查询的结果作为外层查询的比较条件。子查询:单列单值
from型子查询:把内层的查询结果当成临时表,供外层sql再次查询。子查询:多行多列
in子查询:内层查询语句仅返回一个数据列,这个数据列的值将供外层查询语句进行比较 子查询:单列多行
exists子查询:把外层的查询结果,拿到内层,看内层是否成立,简单来说后面的返回true,外层(也就是前面的语句)才会执行,否则不执行。
any子查询:只要满足内层子查询中的任意一个比较条件,就返回一个结果作为外层查询条件。
all子查询:内层子查询返回的结果需同时满足所有内层查询条件。  ④SQL更新(UPDATE语句)单个表格某一行多列数据的方法:

正确的UPDATE更新语法为:

UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause];

注意:更新多列数据的间隔符号是逗号

REPLACE函数虽然可以批量修改数据,REPLACE的语法是:

REPLACE INTO tab_name(field1, field2...) VALUES (value1, value2)...;

⑤某高校采取电子化考试,便于查询学生对应考场号创建视图,已知student表(学号sid,姓名sname,考号s_test_id),room表(考场号rid,座位号rseat,考号s_test_id),下列语句错误的是()

 解析:

建立视图的语法:

CREATE VIEW 视图名[(字段1),字段2),(字段3)...] AS select 语句 其中:[(字段1),字段2),(字段3)...] 可省 所有选项都是在多表上建立视图,AD选项在视图中重命名了选取列的列名,但是D选项的列名(rid,rseat,sname,s_test_id)与选取列内容student.sname, student.s_test_id, room.rid, room.rseat不一致,后续对于视图的操作很容易引起歧义,且指定列名和AS颠倒了位置,错误; B选项增加了将视图存入临时表的操作,然后用临时表来执行语句; C选项未重命名,但是并不影响。

标签:...,21,查询,牛客,birth,SQL,table,t1,name
From: https://www.cnblogs.com/liu-myu/p/16721989.html

相关文章

  • Linux(CentOS) Mysql 8.0.30 安装(多源安装)
    Linux(CentOS)Mysql8.0.30安装(多源安装)安装命令根据实际部署情况修改调整,CentOS一般选择通用版本RedHatEnterpriseLinux7本文档使用wget下载,也可以自主下载......
  • MySQL维护之哪些命令可以查看锁
    在MySQL实战之死锁与解决方案-池塘里洗澡的鸭子-博客园(cnblogs.com)和MySQL中锁机制实现原理-池塘里洗澡的鸭子-博客园(cnblogs.com)中对查看锁的信息都有......
  • mysql 相关内存参数
    1.key_buffer_size用于MyISAMtable缓存indexblocks,allthreads可用。2.bulk_insert_buffer_sizeMyISAM 使用特殊的tree-like缓存来加速向一个非空表insert...se......
  • redis和mysql(区别和联系)
    redis和mysql一般都知道mysql是数据库的,可redis也是数据库,两者区别是mysql:关系型数据库,1⃣️将数据存放在硬盘中,存取速度较慢 2⃣️ 永久存放redis:非关系型数据库(缓存数......
  • Vue面试题21:说一说Vue从template到render的处理过程 (总结自B站up主‘前端杨村长’视频
    问我们template到render过程,其实是问Vue编译器工作原理;思路1.引入vue编译器概念;2.说明编译器的必要性;3.阐述编译器的工作流程;回答范例1.Vue中有个独特的编......
  • STS用Maven写一个登录页面 - 将MySQL和STS连接起来
     准备用户名数据库创建方法前面已介绍,不重复说明。创建方法:https://www.cnblogs.com/smart-zihan/p/15041013.html通过MySQLWorkbench添加。  连接MySQL与STS......
  • 力扣21(java&python)-合并两个有序链表(简单)
    题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1......
  • [WSDM 2021]Bipartite Graph Embedding via Mutual InformationMaximization
    总结利用生成对抗网络实现无监督的二部图嵌入方法,聚合时先聚合二跳邻居到一跳再聚合到自己身上以规避不同类型的问题二部图嵌入方式随机游走法重构法,包含协同过滤......
  • sqlserver 表的空间收缩 执行记录
    收缩sqlserver表的空间:一个47亿条记录的表删除了,需要收缩一下磁盘空间,不够是删除打表里的部分数据还是整个表的数据,都需要执行收缩命名才能释放存储空间 执行命名:EXE......
  • mysql表结构输出文档sql
    SELECT Column_NameAS'字段名称', data_typeAS'数据类型', ( CASE WHENdata_type='float' ORdata_type='double' ORdata_type='TINYINT' ORdata......