SQL 55) -LIMIT 分页查询employees表

LIMIT 语句结构: LIMIT X,Y

  • Y :返回几条记录
  • X:从第几条记录开始返回(第一条记录序号为0,默认为0)
SELECT *
FROM employees
LIMIT 5,5 表示返回第二页数据,每页5行

sql 54 找排除当前最大、最小salary之后的员工的平均工资avg_salary

即用not in 排除最大和最小

select avg(a.salary) avg_salary
from salaries a
where a.to_date='9999-01-01'
and a.salary not in (select max(b.salary) from salaries b where b.to_date='9999-01-01')
and a.salary not in (select min(b.salary) from salaries b where b.to_date='9999-01-01');

其中,最大值要限定是to_date=‘9999-01-01’ 时的最大值,最小值要限定是to_date='9999-01-01’的最小值,然后求平均即可,本题主题意思不明确或者说是与答案根本不符,本题没有说明要去掉to_date='9999-01-01’这个条件下的最大、最小值,所以很多人就编译不通过。

SQL53 按照dept_no进行汇总

聚合函数group_concat(X,Y),其中X是要连接的字段,Y是连接时用的符号,可省略,默认为逗号。
此函数必须与GROUP BY配合使用。此题以dept_no作为分组,将每个分组中不同的emp_no用逗号连接起来(即可省略Y)。
答案:
SELECT dept_no,group_concat(emp_no) employees
FROM dept_emp GROUP BY dept_no

SQL52 获取Employees中的first_name

三种方法都可以用
LEFT(s,n)返回字符串 s 的前 n 个字符
RIGHT(s,n)返回字符串 s 的后 n 个字符
第一种:(right)
select first_name
from employees
order by right(first_name,2)
第二种:(substr)
select first_name from employees  order by substr(first_name,-2)
第三种:(substring)
select first_name from employees  order by substring(first_name,-2)

MySQL substr() 函数 :截取字符串

substr( )与substring( )意思相等

函数语法

substr(str, pos)
截取从pos位置开始到最后的所有str字符串

substr(str, pos, len)

参数说明:

str为列名/字符串;
pos为起始位置;mysql中的起始位置pos是从1开始的;如果为正数,就表示从正数的位置往下截取字符串(起始坐标从1开始),反之如果起始位置pos为负数,那么 表示就从倒数第几个开始截取;
len为截取字符个数/长度

SQL51 查找字符串 10,A,B 中逗号,出现的次数cnt

思路:
把串 “10,A,B” 中的 逗号用空串替代, 变成了 “10AB”
然后原来串的长度 - 替换之后的串的长度 就是 被替换的 逗号的个数

select (length("10,A,B") - length(replace("10,A,B",",","")) )
as cnt;
==知识点总结==
统计字符串长度:
char_length('string')/char_length(column_name)
1、返回值为字符串string或者对应字段长度,长度的单位为字符,一个多字节字符(例如,汉字)算作一个单字符;
2、不管汉字还是数字或者是字母都算是一个字符;
3、任何编码下,多字节字符都算是一个字符;length('string')/length(column_name)
1、utf8字符集编码下,一个汉字是算三个字符,一个数字或字母算一个字符。
2、其他编码下,一个汉字算两个字符, 一个数字或字母算一个字符。
select char_length("10,A,B")-char_length(replace("10,A,B",",",""))

SQL50 将employees表中的所有员工的last_name和f

问题描述:将employees表中的所有员工的last_name和first_name通过(’)连接起来。(sqlite不支持concat,请用||实现,mysql支持concat)
MYSQL解法:

SELECT CONCAT(RTrim(last_name),"'",LTrim(first_name)) AS name
FROM employees;

注意:
建议这里的last_name,first_name采用去左、去右空格的函数R(L)Trim(),防止联结时部分字段存在空格导致结果出错。
补充:
RTrim():去除字符串右端空格
LTrim():去除字符串左端空格
Trim():去除字符串两端的空格

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

方法1:连接查询(先join两张表)
update salaries as s join emp_bonus as e on s.emp_no=e.emp_no
set salary=salary*1.1
where to_date='9999-01-01'
方法2:子查询(两次select)update salaries
set salary=salary*1.1
where to_date='9999-01-01'and salaries.emp_no in(select emp_no from emp_bonus)
比较:
推荐使用连接查询(JOIN)
连接查询不需要创建+销毁临时表,因此速度比子查询快。

SQL 46) -ADD CONSTRAINT FOREIGN KEY 创建外键约束

方法)创建外键
代码
ALTER TABLE audit
ADD CONSTRAINT FOREIGN KEY (emp_no)
REFERENCES employees_test(id);
创建外键语句结构:
ALTER TABLE <表名>
ADD CONSTRAINT FOREIGN KEY (<列名>)
REFERENCES <关联表>(关联列)

补充

外键

外键概念

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表

在实际操作中,将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主键值)。此时,第二个表中保存这些值的属性称为外键(foreign key)。

外键作用

保持数据一致性完整性,主要目的是控制存储在外键表中的数据,约束。使两张表形成关联,外键只能引用外表中的列的值或使用空值。

创建外键

建表时指定外键约束
-- 创建外键的方式一 : 创建子表同时创建外键-- 年级表 (id\年级名称)
CREATE TABLE `grade` (
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级ID',
`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
PRIMARY KEY (`gradeid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8-- 学生信息表 (学号,姓名,性别,年级,手机,地址,出生日期,邮箱,身份证号)
CREATE TABLE `student` (
`studentno` INT(4) NOT NULL COMMENT '学号',
`studentname` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`sex` TINYINT(1) DEFAULT '1' COMMENT '性别',
`gradeid` INT(10) DEFAULT NULL COMMENT '年级',
`phoneNum` VARCHAR(50) NOT NULL COMMENT '手机',
`address` VARCHAR(255) DEFAULT NULL COMMENT '地址',
`borndate` DATETIME DEFAULT NULL COMMENT '生日',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
`idCard` VARCHAR(18) DEFAULT NULL COMMENT '身份证号',
PRIMARY KEY (`studentno`),
KEY `FK_gradeid` (`gradeid`),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
-- 创建外键方式二 : 创建子表完毕后,修改子表添加外键
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`);

SQL45 将titles_test表名修改为titles_2017

关于MySQL中ALTER TABLE 的命令用法

看到有朋友在疑问为啥会是ALTER TABLE + 修改的表+修改内容/方式。
这里补充一下在MySQL中ALTER TABLE 语句的用法。

常见的有:(我写的不是很规范,只是方便大家理解;更规范的语法请参考MySQL官方文档:https://dev.mysql.com/doc/refman/8.0/en/alter-table.html)

ALTER TABLE 表名 ADD 列名/索引/主键/外键等;
ALTER TABLE 表名 DROP 列名/索引/主键/外键等;
ALTER TABLE 表名 ALTER 仅用来改变某列的默认值;
ALTER TABLE 表名 RENAME 列名/索引名 TO 新的列名/新索引名;
ALTER TABLE 表名 RENAME TO/AS 新表名;
ALTER TABLE 表名 MODIFY 列的定义但不改变列名;
ALTER TABLE 表名 CHANGE 列名和定义都可以改变。

mysql牛客网网刷题函数总结相关推荐

  1. MySQL牛客网刷题3

    目录 SQL18 分组计算练习题 问题分解: 细节问题: 完整代码: SQL19 分组过滤练习题 问题分解: 细节问题: 完整代码: SQL20 分组排序练习题 问题分解: 细节问题: 完整代码: S ...

  2. 力扣牛客每日刷题(Python解法持续更新)

    力扣牛客每日刷题(持续更新) 初试结束第15天, 之前简单的处理了部分毕设方面的任务, 对接下来的学习做了个简单的规划 决定每天开始刷几道力扣题提高一下算法的理解,不能让之前学的数据结构都忘记了 每道 ...

  3. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  4. 牛客网 刷题前的准备工作(输入 输出 如何接收?)

    牛客网 刷题前的准备工作 牛客网 刷题前的准备工作 1. 数据读取接受问题 2.牛客刷题前的准备: 2.1. 弄清楚输入输出的行数关系 3.代码怎么写 3.1. 在牛客上测试自己的模板代码,是否能正确 ...

  5. 牛客网刷题记录 || 结构体和类

    这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  6. 2023年大年初一 —— 牛客网刷题经验分享~

    2023年大年初一 -- 牛客网刷题经验分享~

  7. 牛客网刷题记录 || 循环

    这是牛客网刷题记录专栏第七篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  8. 【牛客网刷题】中秋节前开启java专项练习错题总结第一天

    [牛客网刷题]中秋节前开启java专项练习错题总结第一天 概述 写在前面 错题分析 值得记录的错题 总结 写在最后 概述 还有十几天就到中秋节了,从此又老了一岁,也多了一年的知识积累.对于这样一个特殊 ...

  9. verilog牛客网刷题代码汇总

    verilog牛客网刷题代码汇总 作者:安静到无声 个人主页 作者简介:人工智能和硬件设计博士生.CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇. Thanks♪(・ω・)ノ 如果 ...

最新文章

  1. java常用的7大排序算法汇总
  2. 局域网读取文件_教你windows局域网如何设置共享文件
  3. mysql5720_Mysql内置功能《五》 函数
  4. 新手教程:如何改变应用名称
  5. linux下c 指针变量大小,C语言sizeof关键字
  6. 使用GHOST打包制作gho镜像文件
  7. 吃青春饭的程序员的成长史
  8. alsa 麦克风采集音频
  9. JavaScript如何打开exe文件
  10. 雨林木风 Ghost XP SP3 纯净版 Y1.0
  11. ESP32:蓝牙BLE控制M3508电机
  12. Python爬虫新手教程:微医挂号网医生数据抓取
  13. Python量化交易开源框架:AmazingQuant
  14. USB转RS232不稳定
  15. html 软键盘 页面高度,深入理解高度,获取屏幕、webview、软键盘高度
  16. Django REST Framework——4. 请求与响应
  17. 开始实习了.....
  18. 2.10 流水线吞吐率计算
  19. 财务上的预提、摊销、计提
  20. Hcip-datacom自学教程

热门文章

  1. 项目二《品优购电商网站》
  2. 剪辑视频,怎么虚化边框缩小原视频
  3. 三和弦与七和弦——Overture乐理小课堂
  4. Unity VS插件配置
  5. 从源码角度看 Golang 的调度
  6. java求π的近似值
  7. 【XMR】/usr/bin/ld: 找不到 -lstdc++
  8. 赛事直播软件搭建中解说+连麦的技术架构难点解读
  9. Crontab语法规则格式、使用方式及日志查看
  10. 读书笔记——数据阅读器的应用;数据适配器+数据表的应用