MySQL-任务一&打卡-DW

#作业#

项目一:查找重复的电子邮箱(难度:简单)

创建 email表,并插入如下三行数据

+----+---------+

| Id | Email   |

+----+---------+

| 1  | a@b.com |

| 2  | c@d.com |

| 3  | a@b.com |

+----+---------+

编写一个 SQL 查询,查找 Email 表中所有重复的电子邮箱。 根据以上输入,你的查询应返回以下结果:

+---------+

| Email   |

+---------+

| a@b.com |

+---------+

说明:所有电子邮箱都是小写字母。

 

解决步骤;

建立数据库->建立表->添加纪录->查询;

注意:每进行一步最好进行验证,该步骤是否有问题;

建立数据库-创建表

错误点1:建立数据库后,没有使用该数据库,导致建表操作失败;

+:通过上下按键可以快速获得之前输入的语句;

添加记录

一次添加一行&一次添加多行;

错误点2:VALUES,拼写错误

查询重复记录

思路:条件为Email值计数大于1,返回Email值/Email值+重复次数;使用GROUP BY,结合HAVING+count()函数

SELECT Email FROM email GROUP BY Email HAVING count(*)>1;
SELECT Email,count(*) FROM email GROUP BY Email HAVING count(*)>1;

 

项目二:查找大国(难度:简单)

创建如下 World 表

+-----------------+------------+------------+--------------+---------------+

| name            | continent  | area       | population   | gdp           |

+-----------------+------------+------------+--------------+---------------+

| Afghanistan     | Asia       | 652230     | 25500100     | 20343000      |

| Albania         | Europe     | 28748      | 2831741      | 12960000      |

| Algeria         | Africa     | 2381741    | 37100000     | 188681000     |

| Andorra         | Europe     | 468        | 78115        | 3712000       |

| Angola          | Africa     | 1246700    | 20609294     | 100990000     |

+-----------------+------------+------------+--------------+---------------+

如果一个国家的面积超过300万平方公里,或者(人口超过2500万并且gdp超过2000万),那么这个国家就是大国家。 编写一个SQL查询,输出表中所有大国家的名称、人口和面积。

例如,根据上表,我们应该输出:

+--------------+-------------+--------------+

| name         | population  | area         |

+--------------+-------------+--------------+

| Afghanistan  | 25500100    | 652230       |

| Algeria      | 37100000    | 2381741      |

+--------------+-------------+--------------+

解决步骤:建立表-插入记录-查询

查询:多条件查询,A或(B且C)=A OR ( B AND C)、

创建表

插入记录

查询

使用表的别名能够大大加快查询速度;

SELECT name,population,area FROM world WHERE area>3000000 OR (population>25000000 AND gdp>20000000);

SELECT w.name,w.population,w.area FROM world as w WHERE w.area>3000000 OR (w.population>25000000 AND w.gdp>20000000);

 

2019/5/12 23:30

 

 

 

学习任务&笔记(以下内容整理自网络&书上)

1.1 MySQL 软件安装及数据库基础

#学习内容#

1.软件安装及服务器设置。

2.(选做,但是强烈建议) 使用图形界面软件 Navicat for SQL

3.数据库基础知识    

数据库:存放数据的仓库。长期存储在计算机内、有组织的、可共享的大量数据的集合。

关系型数据库:关系模式再某一时刻对应的关系的集合。

二维表:每个关系的数据结构是一张规范的二维表。

行:数据的一条记录

列:一个字段;

主键:PRIMARY KEY,唯一标识符,在其表内不可有重复值。

外键:FOREIGN KEY,关联表的主键;

4.MySQL数据库管理系统

视图:视图是从一个或几个基本表(或视图)导出的表,是一个虚表。

存储过程:是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中。

1.2 MySQL 基础 (一)- 查询语句

#学习内容#

1-导入示例数据库

CREATE Database;
USE Database;
SOURCE D:/bin1/bin2/database.sql;

2-SQL是什么?MySQL是什么?

SQL:Structured Query Language,结构化查询语言;

MySQL:是一个关系型数据库管理系统(DMS)

3-查询语句 SELECT FROM 

1)SELECT语句

SELECT 字段1,字段2...

FROM 表1,表2...

JOIN 表3 ON conditions(连接条件)

WHERE conditions(查询条件)

GROUP BY column1(按column1的值分组)

HAVING group_conditions(过滤器,基于GROUPBY定义的分组)

ORDER BY column1 ASC|DESC(按column1的值升序/降序,默认升序)

LIMIT offset,length(限制返回行的数量,offset默认0)

2)重复数据

---统计重复数据(利用COUNT(*)、GROUPBY、HAVING)

---过滤重复数据(DISTINCT/GROUP BY)

        SELECT DISTINCT coulum1 FROM table1;

        SELECT column1 FROM table1 GROUP BY column1;

4-筛选语句 WHERE 

1)运算符:

    算数运算符:+、-、*、/(DIV)、%(MOD)

    比较运算符:=(等于)、<>/!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<=>(严格比较两个NULL是否相等)

                        BETWEEN、NOT BETWEEN、IN、NOT IN、LIKE、REGEXP(RLIKE)、IS NULL、IS NOT NULL

    逻辑运算符:NOT(!)、AND、OR、XOR(异或)

    位运算符:&、|、^、!、<<、>>

2)通配符(%、_)

    %代表零个或多个字符;

    _代表单个字符;

5-分组语句 GROUP BY

    按照某列的值进行分组,相同值的为一组;

    HAVING子句用来限制分组后的条件,理解为第二个WHERE,GROUPBY分组后需要再筛选,但是不能再写WHERE,用HAVING来限定条件。

6-排序语句 ORDER BY 

    正序ASC、逆序DESC

7-函数

1)时间函数

now(),返回当前日期和时间;

timediff(),计算两个TIME或DATETIME之间的差值

2)数值函数

avg(),取平均值

count(),计数

sum(),求和

3)字符串函数

format(),格式化

length(),char_length(),按字节和字符获取字符串长度

substring(),从某个长度开始取子串;

8-SQL注释

--这是单行注释
/*这是
多行
注释*/

9-SQL代码规范

命名:可读性强,字母数字下划线组成

格式:关键字全大写,表名字段名小写,适当用空格、缩进、回车;

格式化代码工具/插件:SQLinForm、Sublime添加zsong/SqlBeautifier插件

2019年5月13日 21点44分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值