一、 选择题(每题3分,满分30分)

  1. 列出客户订单总金额大于3000的数据,正确的是( )

    A. select C_ID,sum(orderAmount) from t_orders group by C_ID having sum(orderAmount)>3000;

    B. select C_ID,sum(orderAmount) from t_orders where sum(orderAmount)>3000 group by C_ID;

    C. select C_ID,sum(orderAmount) from t_orders where sum(orderAmount)>3000;

    D. select C_ID,sum(orderAmount) from t_orders group by C_ID where sum(orderAmount)>3000;

    解析:A

    where只能把当前表中存在的列作为查询条件

    having 二次过滤 将一次查询产生的结果表中存在的列作为条件

  2. 模糊查询( ),可以检索出以“M”开头,且第二个字符不是“c”的所有字符串

    A.  like ‘Mc_’B.  like ‘Mc%’C.  like ‘M[^c]_’D.  like ‘M[^c]%’
    

    解析:D

    模糊查询-----搜索框

    语法:like 支持正则

    demo:‘花里胡哨的猛男’

    • %匹配任意长度的任意字符 :like demo ‘花%’ like demo ‘%花’ like demo ‘%花%猛%’

    • _匹配一个任意字符:like demo ‘花-’ like demo ‘-花’ like demo ‘-花-猛-’ 【限制字符串长度】

    • [ ]匹配[ ]中的任一字符:like name ‘[大小黑灰]白’ :大白、小白、黑白、灰白

    • [^ ]匹配除[ ]中的任一字符:

      like name ‘[^大小黑灰]白’    除【大白、小白、黑白、灰白】之外的任一情况
      
  3. 在SQL查询时,使用( )子句可以指定分组

    A. where

    B. having

    C. when

    D. group

    解析:D

  4. replace函数的作用是( )

    A. 字符串替换

    B. 取最大值

    C. 取最小值

    D. 获取当前时间

    解析:A

  5. 描述年龄20到25之间正确的表达式是( )

    A. between 20 to 25

    B. between 20 and 25

    C. no between 20 to 25

    D. no between 20 and 25

    解析:B

  6. 查询t_student表中所有非空email信息,以下语句正确的是( )

    A. select email from t_student where email != null;

    B. select email from t_student where email not is null;

    C. select email from t_student where email <> null;

    D. select email from t_student where email is not null;

    解析:D

    在mysql中 = != 判空无效,判空用 is null is not null

    <> :不等于 select * from t_account where balance<>name;

    <=> 【左右两边的字段的值相等或者都是Null 返回true】:

    select * from t_student where id <=> age; 返回满足条件的数据记录,如果没有满足条件的数据,则返回空表

  7. 定义金额,适宜使用的类型为( )

    A. int

    B. real

    C. varchar(30)

    D. double

    解析:D

    tinyint小整型 -128-127

    int/Integer大整型 :age int(2) 【实体类 封装 private Integer Double】

    float单精度

    double双精度

    decimal精确度:字段 money decimal(5,2) 5是数字总长度 2 是小数部分长度 999.99

  8. 定义列中可以接受的数据值或格式,称为( )

    A. 唯一性约束

    B. 检查约束

    C. 主键约束

    D. 默认约束

    解析:B

    数据库:-----数据库软件

    • 关系型:行表:oracle sql server mysql DB2 sybase

    • 非关系型:key-value : redis mongoDB memcache

    数据库服务:mysql mysql 57

    库:一对多

    表:一对多 行和列

    sql—高级语言 — 大部分数据库软件使用语法基本相同 部分语法不同、支持不同

    sql六大约束:

    • not null 非空

    • unique 唯一

    • primary key 主键

    • foreign key 外键

    • check 检查 mysql不提供支持、使用无效 sex varchar(3) check in(‘男’,‘女’) 男女左右AB

    • default 默认

    非标准约束:unsigned 无符号 ,只限制整型,不能修饰主键

  9. 从产品表t_products中查询单价unitprice在6-10的产品名称和单价信息,正确的SQL是( )

    A. select name,unitprice from t_products where unitprice between 6 and 11;

    B. select name,unitprice from t_products where unitprice between 10 and 6;

    C. select name,unitprice from t_products where unitprice in(6,10);

    D. select name,unitprice from t_products where unitprice >= 6 and unitprice <= 10;

    解析:D

  10. 删除一张表的语法是( )

    A. delete from…

    B. drop table…

    C. create table…

    D. remove…

    解析:B

    CRUD: create  read   update   delete
    表:
    drop table   表名;# 删表
    # 修改表(添加列、添加约束)
    alter  table  表名   add  id  int ;
    alter table 表名   add  constraint   

二、 代码题(满分70分)

  1. 根据下面表结构,完成建库建表数据填充操作(15分)

男生信息表t_boy

字段说明 字段名称 字段类型 数据长度 主键 允空 备注
男生编号 boyId int 4 自增
性别 gender varchar 3 默认值:男
姓名 name varchar 20
年龄 age int 2
心动女生编号 girlId int 外键列

女生信息表t_girl

字段说明 字段名称 字段类型 数据长度 主键 允空 备注
女生编号 girlId int 4 自增
性别 gender varchar 3 默认值:女
姓名 name varchar 20
年龄 age int 2
心动男生编号 boyId int 外键列
create table if not EXISTS t_boy(
boyId int(4) primary key auto_increment comment '男生编号',
gender varchar(3) default '男' comment'性别',
name varchar(20) comment'姓名',
age int(2) comment'年龄',
girlId int(4) comment'外键列'  #
)engine=InnoDB default charset=utf8;# mysql 4大引擎,只有InnoDB支持外键和事务
# 外键:表中的某一字段的值,引用另一张表中的某个字段的值。
# A表中的cloumn   B表中的Cloumn
#  引用列            参照列(被引用列)
#  1.数据类型、约束一致   2. 被引用的数据,B表中必须存在#   子表           父表
# 建表:先建父表,再建子表
# 删表:先删子表,再删父表create table if not EXISTS t_girl(
girlId int(4) primary key auto_increment comment '女生编号',
gender varchar(3) default '女' comment'性别',
name varchar(20) comment'姓名',
age int(2) comment'年龄',
boyId int(4) comment'外键列'   #
)engine=InnoDB default charset=utf8;drop table t_boy;
drop table t_girl;#   先建表,其次填数据,再添加外键
insert into t_boy values(null,default(gender),'小明',23,2),
(null,default(gender),'小洋',21,3),
(null,default(gender),'小波',23,4),
(null,default(gender),'小满',25,5),
(null,default(gender),'小帆',20,5),
(null,default(gender),'小轩',19,6),
(null,default(gender),'小彬',24,7),
(null,default(gender),'小杰',20,7),
(null,default(gender),'小飞',22,1),
(null,default(gender),'大熊',17,7),
(null,default(gender),'大白',15,3),
(null,default(gender),'大白',15,null);insert into t_girl values(null,default(gender),'小芳',22,1);
insert into t_girl values(null,default(gender),'小红',20,2);
insert into t_girl values(null,default(gender),'小花',22,4);
insert into t_girl values(null,default(gender),'小青',22,5);
insert into t_girl values(null,default(gender),'小紫',21,6);
insert into t_girl values(null,default(gender),'小兰',20,6);
insert into t_girl values(null,default(gender),'小月',21,10);
insert into t_girl values(null,default(gender),'婉秋',17,9);
insert into t_girl values(null,default(gender),'婉秋',17,null);select  * from t_girl# 添加外键
alter table t_boy add CONSTRAINT boy_girl_id  foreign key (girlId) references t_girl(girlId);alter table t_girl add CONSTRAINT girl_boy_id  foreign key (boyId) references t_boy(boyId);# 删表【先删外键,再删表】
drop  table t_boy,t_girl;alter table t_boy drop foreign key boy_girl_id ;alter table t_girl drop foreign key girl_boy_id;
  1. 写出查询语句,查看年龄最大的男生信息,结果如下:(5分)
-- 2.查看年龄最大的男生信息
# select * from t_boy t where not exists (select age from t_boy where age > t.age)select * from t_boy where age = (select max(age) from t_boy) # 语义清晰select * from t_boy order by age desc limit 0,1
  1. 写出查询语句,查询出已成年(大于18岁)的男生信息(3分)
-- 3.查询出已成年(大于18岁)的男生信息select * from t_boy where age > 18;
  1. 写出查询语句,查看男生的平均年龄、最大年龄、最小年龄,结果如下(7分)
-- 4.查看男生的平均年龄、最大年龄、最小年龄select avg(age),max(age),min(age) from t_boy
-- 数学函数   round()四舍五入   floor()向下取整  ceiling()向上取整
select floor(avg(age)) as '平均年龄',max(age)as '最大年龄',min(age)as'最小年龄' from t_boyselect round(-12.6)select round(1264.56,-5) # 00000select floor(-12.6)select ceiling(-12.6)select mod(5,2)
  1. 写出修改语句、将小轩的年龄增加4岁(3分)

    -- 5.将小轩的年龄增加4岁
    # update t_boy set age+=4 where name = "小轩"select * from t_boyselect age*2 from t_boy where name = "小明"
    
  2. 写出删除语句,删除男生表中年龄不满16岁的人员信息(2分)

    delete from t_boy where age < 16
    
  3. 写出查询语句,用左连接查看男生选择的心动女生都是谁,结果如下:(5分)

-- 7.用左连接查看男生选择的心动女生都是谁
select * from t_boy b left join t_girl g on b.girlId = g.girlId
-- 连接查询:外连接(左右)  内连接(inner join)  自连接
-- 左 :left join    左边主表,右边从表   会显示左表全部数据,没有匹配的数据,从表显示为空
-- 右:right join  右边主表,左边从表  会显示右表全部数据,没有匹配的数据,从表显示为空
select * from t_boy b right join t_girl g on b.girlId = g.girlId-- 内连接:join  等值匹配   没有匹配的数据,不显示
select * from t_boy b join t_girl g on (b.girlId = g.girlId)  select * from t_boy b,t_girl g where b.girlId = g.girlId-- where 缺点:多条件,语句较复杂,容易出错-- where   on    using
-- where :条件查询,常用做子查询
-- on :把关联表和过滤关系  分开,语义清晰,关联字段可放在括号内,查询结果中,关联字段显示两次
-- using: 必须对关联字段加括号,结果中,关联字段只显示1次。
select * from t_boy join t_girl using(girlId)-- 自连接:自己连接自己, 物理表,逻辑表
-- 分类表  105 四件套  208        208   家纺    301       301  居家  null
-- 外键列:p_id  参照 id
create table t_cate(
id int(5) primary key,
name varchar(20) not null,
p_id int(5)
)engine = innoDB default charset=utf8;alter table t_cate add constraint pid_id_id foreign key(p_id) references t_cate(id)insert into t_cate values(1,'家用电器',null);
insert into t_cate values(2,'电脑',null);insert into t_cate values(3,'电视',1);
insert into t_cate values(4,'洗衣机',1);insert into t_cate values(5,'整机',2);
insert into t_cate values(6,'配件',2);insert into t_cate values(7,'全面屏',3);
insert into t_cate values(8,'LED',3);select * from t_cate-- 查所有分类的父级分类
select * from t_cate a left join t_cate b on a.p_id = b.id-- 查询电脑分类下的二级分类
select * from t_cate where p_id = (select id from t_cate where name="电脑")-- 查询所有级别的分类 1 2 3
select * from t_cate a left join t_cate b on a.id = b.p_id left join t_cate c on b.id = c.p_id
  1. 写出查询语句,查看被选为心动女生的ID及对应的次数,并按次数降序排列,结果如下:(10分)
-- 8.被选为心动女生的ID及对应的次数select girlId '女生ID', count(girlId) '被选次数' from t_boy where girlId is not null group by girlId
  1. 写出查询语句,只查看男生、女生相互选择为心动的信息,且男女生都必须年满18岁,结果如下:(15分)
-- 9.查看男生、女生相互选择为心动的信息,且男女生都必须年满18岁select * from t_boy b join t_girl g using(girlId) where b.boyId = g.boyId having b.age>18 and g.age>18select * from
(select * from t_boy where age>18)b
left join (select * from t_girl where age>18)g
on b.girlId = g.girlId
where b.boyId = g.boyId;
  1. 删除表t_boy和t_girl,跑路(5分)

    -- 10.删外键、删表、删库alter table t_boy drop foreign key boy_girl_id;
    alter table t_girl drop foreign key girl_boy_id;drop table t_boy,t_girl;-- mysql 序列:一组整数 123456789,默认是从1开始,自定义设置开始序列
    create table t_t(id int(4) auto_increment primary key
    )engine=innodb auto_increment = 100 charset=utf8;insert into t_t values(null),(null),(null),(null),(null),(null),(null);select * from t_t;-- alter 语句:加列、删列、约束# 语法: alter table 表名 add 列名 数据类型 约束;
    # 语法:alter table 表名 drop column 列名;alter table t_t add name varchar(20) not null;alter table t_t drop column name;# 添加外键:alter table 表名 add constraint 外键名  foreign key (外键字段)  referrnces 表名(被引用字段)
    # 删除外键:alter table 表名 drop foreign key 外键名

题目1:MySQL基本练习【单、多表】相关推荐

  1. mysql五-1:单表查询

    一 介绍 本节内容: 查询语法 关键字的执行优先级 简单查询 单条件查询:WHERE 分组查询:GROUP BY HAVING 查询排序:ORDER BY 限制查询的记录数:LIMIT 使用聚合函数查 ...

  2. mysql如何恢复单表_MySQL如何恢复单库或单表,以及可能遇到的坑

    前言: MySQL 逻辑备份工具最常用的就是 mysqldump 了,一般我们都是备份整个实例或部分业务库.不清楚你有没有做过恢复,恢复场景可能就比较多了,比如我想恢复某个库或某个表等.那么如何从全备 ...

  3. mysql 存储过程月单拆天单_为部门整理的mysql_db使用军规

    mysql_db使用军规: 1.禁止开发测试人员在IDC环境手工删除和修改数据 2.所有需求通过DB工具系统提交 3.禁止在IDC环境DB进行测试 4.IDC环境提交的sql语句一定要经过非正式环境验 ...

  4. mysql中一个表怎么查询多以上的信息,MySQL怎么样实现多个表的或查询?

    我想要像上图那样在两个表里面查询username,只有其中一个表有这个数据就返回true,但是MySQL判断必须两个表都有才返回true. 请问有什么办法可以实现这样的查询呢?(两个表中任何一个表有数 ...

  5. mysql 跳表 b 树_简单谈谈Mysql索引与redis跳表

    摘要 面试时,交流有关mysql索引问题时,发现有些人能够涛涛不绝的说出B+树和B树,平衡二叉树的区别,却说不出B+树和hash索引的区别.这种一看就知道是死记硬背,没有理解索引的本质.本文旨在剖析这 ...

  6. mysql 分区表_MySQL 分区分表应用场景分析和分区中可能遇到的坑点

    MySQL的分区和分表应用场景分析 在日常工作中当我们的某张表的数据量过大的时候,首当其冲的可能就是进行分区和分表,但是是如何分区或者分表都要结合一点的业务场景下进行分析,才会显著的提升性能,来聊一聊 ...

  7. shell判端mysql数据库是否存在_Shell脚本检测和检查mysql数据库是否存在坏表

    shell脚本检测和检查mysql数据库是否存在坏表 此脚本的主要用途是检测mysql服务器上所有的数据库或者单独数据库中的坏表,适用于RHEL/Centos系列 #!/bin/bash #此脚本的主 ...

  8. Java定时任务中间表,mysql 通过定时任务更新中间表

    mysql 通过定时任务更新中间表 以前有一个任务需求,统计前十个物品的数量和名字.当时该表的数据量一共有四百二十多万的数据.执行一个sql语句花了我25秒,sql语句如下: select DISTI ...

  9. mysql索引和redis比较_聊聊Mysql索引和redis跳表

    摘要 面试时,交流有关mysql索引问题时,发现有些人能够涛涛不绝的说出B+树和B树,平衡二叉树的区别,却说不出B+树和hash索引的区别.这种一看就知道是死记硬背,没有理解索引的本质.本文旨在剖析这 ...

  10. 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...

    在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...

最新文章

  1. java lambda 变量_为什么Java中lambda表达式不能改变外部变量的值,也不能定义自己的同名的本地变量呢?...
  2. 天线巴伦制作和原理_一种基于LTCC技术的新型Marchand巴伦滤波器
  3. PaddlePaddle, TensorFlow, MXNet, Caffe2 , PyTorch五大深度学习框架2017-10最新评测
  4. Linux把应用放在桌面上
  5. vue 数组数据改变 视图不更新解决方案
  6. [vue] 如何引入scss?引入后如何使用?
  7. algol语言_ALGOL的完整形式是什么?
  8. java jtable 按钮_java web 怎么在jtable中添加按钮?
  9. linux中对文件的权限设置以及作用
  10. SqlTransaction事务和Response.Redirect
  11. Spring 菜鸟教程 异常 集锦
  12. 大华(华瑞)MVP网络通讯教程实例
  13. 简谈变电站综合自动化系统在变电站的应用分析
  14. 想自学编程?这么多编程自学网站,总有一个适合你吧!
  15. 怎么使用播放麦克风输入的音频呢
  16. 开单大师目录结构学习
  17. 连接无线路由器显示windows找不到证书来登录无线网络
  18. Windows Support Tools
  19. 云栖科技评论第70期:数字时代需要双螺旋
  20. 计算机故障有哪些判断方法有哪些,电脑故障详解之——“点不亮”的故障判断方法...

热门文章

  1. mysql 导出指定分隔符_mysql 导出行数据到txt文件,指定字符分割
  2. 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)
  3. Suse linux 关闭防火墙命令,suse防火墙关闭
  4. 免费CMS插件文章采集伪原创发布插件
  5. 【JZOJ 5776】【NOIP2008模拟】小x游世界树 (树)
  6. Java桌面应用程序设计新贵:SWT简介
  7. 应用实践 | Apache Doris 在网易互娱的应用实践
  8. VGG16系列IV: 参数计算
  9. 手机QQ山寨微信 3万网友愤愤不平
  10. nginx+docker+gunicorn+flask部署到云服务器