【任务二】打卡——by 003-Vamein

#任务二#

MySQL 基础 (一)- 查询语句

#任务时间#

请于4月2日22:00前完成,在本文章评论打卡。逾期尚未打卡的会被清退。

#学习内容#

  1. 导入示例数据库,教程 https://www.yiibai.com/mysql/how-to-load-sample-database-into-mysql-database-server.html

在这里插入图片描述照着示例打,结果是错的,要把引号去掉

  1. SQL是什么?MySQL是什么?

  2. SQL:sequel是Structured Query Language(结构化查询语句)的缩写。SQL是一种专门用来与数据库沟通的语言。MySQL是一个关系型数据库管理系统。

  3. 查询语句 SELECT FROM
    语句解释:所需的列名写在select关键字之后,from关键字指出从哪个表中检索数据。
    去重语句:使用distinct关键字,它只是数据库只返回不同的值;distinct作用于所有的列
    select distinct country from offices;
    在这里插入图片描述
    前N个语句:用limit,例如select city from offices limit 5;这一点和别的数据库软件不一样。
    在这里插入图片描述
    CASE…END判断语句:
    参考于:https://www.cnblogs.com/clphp/p/6256207.html
    CASE
    WHEN 条件1 THEN 结果1
    WHEN 条件2 THEN 结果2
    WHEN 条件3 THEN 结果3

    WHEN 条件N THEN 结果N
    END
    这个暂时实现不了

  4. 筛选语句 WHERE
    语句解释
    在select语句中,数据根据where子句中指定的搜索条件进行过滤。where子句在表名(from子句)之后给出
    在这里插入图片描述
    运算符/通配符/操作符:
    运算符/操作符总结:
    在这里插入图片描述
    通配符总结:借用博客园的大佬
    https://www.cnblogs.com/hrhguanli/p/3826218.html

  5. 分组语句 GROUP BY
    聚集函数:
    1)avg() 返回某列的平均值
    2)count() 返回某列的行数
    3)max() 返回某列的最大值
    4)min() 返回某列的最小值
    5)sum() 返回某列之和
    语句解释
    HAVING子句查询:过滤条件

  6. 排序语句 ORDER BY
    语句解释:order by 列名1,列名2,···列名n
    可以根据多个列进行排序。当按照多个列进行排序时,只有第一列相同时才使用第二列:
    正序、逆序:正序排序时,可以使用asc作为排序方式的关键词,也可以不使用。逆序时,一定要使用desc作为关键词。

  7. 函数
    时间函数
    获得当前日期+时间(date + time):select now();
    获得当前日期+时间(date + time):sysdate()
    sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
    数值函数
    ABS(x):返回 x 的绝对值
    CEIL(x):返回不小于 x 的最小整数,也就是说得大于或等于x的最小整数,同义词:ceiling(x)
    FLOOR(x):返回不大于 x 的最大整数(与CEIL的用法刚好相反)
    MOD(x,y):返回数字x除以y后的余数:x mod y 和 x%y 的结果相同;模数和被模数任何一个为NULL(无效数)结果都为 NULL,余数可以有小数;除数为0不抛出异常
    ROUND(X[,D]):将数字X四舍五入到指定的小数位数D
    ①如果不指定D,则默认为0
    ②如果D是负数,表示从小数点的左边进行四舍五入
    TRUNCATE(X,D):将数字X截断到指定的小数位数D(不四舍五入)
    ①如果D为0,表示不要小数
    ②如果D是负数,表示从小数点的左边进行截断
     注意:TRUNCATE 和 ROUND 的区别在于 TRUNCATE 仅仅是截断,而不进行四舍五入
     RAND():返回一个随机浮点数v(0<=v<1.0)
    RAND(x):指定整数x,则用作种子值,产生一个可重复的数字序列
    利用RAND()函数可以取任意指定范围内的随机数
    类似于shell> $((RANDOM % 100))得到随机值  
    比如:产生 0~100 内的任意随机整数
    注意:

①当在 WHERE 子句中使用RAND()时,每次当WHERE执行时都要重新计算 RAND()

②不能在ORDER BY子句中使用带有随机值的列

但是,可以以随机的顺序从表中检索行

例如:mysql> SELECT * FROM players ORDER BY RAND();

③ORDER BY RAND()常和LIMIT子句一起使用:

例如:mysql> SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000;

字符串函数:
详见参考:MySQL常用字符串函数https://www.cnblogs.com/geaozhang/p/6739303.html

  1. SQL注释
    一、单行注释

SQL语句中的单行注释使用 –
二、多行注释

SQL语句中的多行注释采用 //

  1. SQL代码规范
    [SQL编程格式的优化建议] https://zhuanlan.zhihu.com/p/27466166
    [SQL Style Guide] https://www.sqlstyle.guide/

#作业#

项目一:查找重复的电子邮箱(难度:简单)
– 创建表
CREATE TABLE email (
ID INT NOT NULL PRIMARY KEY,
Email VARCHAR(255)
)
– 插入数据
INSERT INTO email VALUES(‘1’,‘a@b.com’);
INSERT INTO email VALUES(‘2’,‘c@d.com’);
INSERT INTO email VALUES(‘3’,‘a@b.com’);
在这里插入图片描述
–查询数据
1:先按邮箱Email分组,生成临时表A,表A中有Email和对应出现的次数。然后判断次数是否大于1

SELECT Email
FROM (SELECT Email, COUNT(*) AS Sum
FROM Email
GROUP BY Email) AS A
WHERE A.Sum>1
在这里插入图片描述
2:利用HAVING

WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。

SELECT Email FROM Email
GROUP BY Email
HAVING COUNT(*)>1
在这里插入图片描述

项目二:查找大国(难度:简单)
– 创建表
CREATE TABLE World (
name VARCHAR(50) NOT NULL,
continent VARCHAR(50) NOT NULL,
area INT NOT NULL,
population INT NOT NULL,
gdp INT NOT NULL
);
– 插入数据
INSERT INTO World
VALUES(‘Afghanistan’,‘Asia’,652230,25500100,20343000);
INSERT INTO World
VALUES(‘Albania’,‘Europe’,28748,2831741,12960000);
INSERT INTO World
VALUES(‘Algeria’,‘Africa’,2381741,37100000,188681000);
INSERT INTO World
VALUES(‘Andorra’,‘Europe’,468,78115,3712000);
INSERT INTO World
VALUES(‘Angola’,‘Africa’,1246700,20609294,100990000);
在这里插入图片描述
查询目标:name,population,area
查询范围:World表
查询条件:面积超过300万平方公里 或 人口超过2500万
在这里插入图片描述

#打卡规则#

大家请在下方打卡表格处第二次作业链接。
本次任务需放上作业code及输出结果截图
学员微信群编号+姓名+CSDN博客或Github链接。
比如我是0号,打卡内容就是 000+杨煜+https://github.com/magicyang5000/

项目一
– 创建表
CREATE TABLE email (
ID INT NOT NULL PRIMARY KEY,
Email VARCHAR(255)
)
– 插入数据
INSERT INTO email VALUES(‘1’,‘a@b.com’);
INSERT INTO email VALUES(‘2’,‘c@d.com’);
INSERT INTO email VALUES(‘3’,‘a@b.com’);

项目二
– 创建表
CREATE TABLE World (
name VARCHAR(50) NOT NULL,
continent VARCHAR(50) NOT NULL,
area INT NOT NULL,
population INT NOT NULL,
gdp INT NOT NULL
);
– 插入数据
INSERT INTO World
VALUES(‘Afghanistan’,‘Asia’,652230,25500100,20343000);
INSERT INTO World
VALUES(‘Albania’,‘Europe’,28748,2831741,12960000);
INSERT INTO World
VALUES(‘Algeria’,‘Africa’,2381741,37100000,188681000);
INSERT INTO World
VALUES(‘Andorra’,‘Europe’,468,78115,3712000);
INSERT INTO World
VALUES(‘Angola’,‘Africa’,1246700,20609294,100990000);

【任务说明】
任务二是最最基础的查询语句,可以说学完本次课程,SQL语句就掌握了30%了。
语言规范非常重要,请大家认真仔细阅读。请记住,你写SQL需要考虑别人review时的心情。写的过于杂乱会分分钟造成暴力事件。
学习内容中函数部分,是让大家了解下MySQL可以怎样处理一些数据。了解些常用的,等实际中遇到了再回头查找详细就行。
祝大家学习开心。?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值