首页 > 数据库 >DW集训营数据库Mysql梳理(二)

DW集训营数据库Mysql梳理(二)

时间:2023-02-06 16:36:42浏览次数:52  
标签:语句 goods 28 sex 2019 Mysql DW 集训营 SELECT


  1. 导入示例数据库
    首先创建并打开数据库,接着在数据库下执行sql或者将sql语句复制执行sql语句。
  2. SQL是什么?MySQL是什么?
    SQL即结构化查询语言(Structured Query Language),是一种特殊的数据库查询和程序设计语言,用来对数据进行crud。
     MySQL是一个关系型数据库管理系统。
  3. 查询语句 SELECT FROM
    语句解释 :查询表达式
    去重语句:
    select distinct name from A
    前N个语句:
    select column_name(s) from table_name limit number
    CASE…END判断语句:
    使用case…end 实现if条件判断
SELECT CASE sva 
WHEN 1 THEN '男'
ELSE '女'
END AS ssva
FROM taname
WHERE id = '1'
  1. 筛选语句 WHERE
    语句解释: where语句进行条件查询
    运算符/通配符/操作符:
    运算符主要有两种–>
    一种是使用比较运算符:
    主要有:=、>、<、>=、<=、<>、!=、<=>
SELECT goods_name, 
goods_price
FROM tdb_goods
WHERE goods_cate = '超级本';

一种是用ANY、SOME 或ALL 修饰的比较运算符:

SELECT goods_id, 
goods_name,
goods_price
FROM tdb_goods
WHERE goods_price = any (SELECT goods_price
FROM tdb_goods
WHERE goods_cate = '超级本');
  1. 分组语句 GROUP BY
    聚集函数:
    [GROUP BY {col_name | position}] [ASC | DESC],…]
    语句解释
    查询结果分组,GROUP BY之后加可以加上列名,也可以加上位置参数:
SELECT sex 
FROM users
GROUP BY sex;

# 不推荐用位置的方式表示参数
#1不是代表id,是代表SELECT sex....语句中的sex,所以这里的1其实就是sex的意思;
#如果SELECT后面跟多个字段,比如username,sex两个字段,如果你GROUP BY还是希望用sex字段的话,就要用数字2而不是1了,这是因为sex排在username后面
SELECT sex
FROM users
GROUP BY 1;

HAVING子句:对分组附加条件
分组条件语法结构:[HAVING where_condition]
比如对年龄大于35岁的用于进行性别分组:

SELECT sex 
FROM users
GROUP BY sex
HAVING age > 35;

但是这样操作会报错,报错的原因是因为HAVING后面的条件只能为聚合函数(比如SUM,MIN,MAX等)或者该条件出现在SELECT中,所以我们可以将SELECT中加入age:

SELECT sex, age 
FROM users
GROUP BY sex
HAVING age > 35;

或者使用聚合函数,在这里表示对id数大于等于2的sex进行分组:

SELECT sex 
FROM users
GROUP BY sex
HAVING count(id) >=2;
  1. 排序语句 ORDER BY
    语句解释:order by语句对查询结果排序
    正序、逆序:
    ASC:升序(默认),DESC:降序,
    比如我们按照id降序排序:
SELECT * 
FROM users
ORDER BY id DESC;

如果对多个字段进行排序时,如果第一个字段可以排出想要的结果,则忽略其他字段,如果不能,则遵守第二个字段,依次类推,比如我们首先按照年龄默认排序,如果其中有同龄的用户,我们可以设置为如果同龄,则按照id降序进行排序:

SELECT * 
FROM users
ORDER BY age,id DESC;
  1. 函数
    时间函数
    NOW():表示当前日期和时间
SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2019-02-28 17:25:31 |
+---------------------+
1 row in set

CURDATE():当前日期

SElECT CURDATE();
+------------+
| CURDATE() |
+------------+
| 2019-02-28 |
+------------+
1 row in set

CURTIME():当前时间

SElECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 17:26:44 |
+-----------+
1 row in set

DATE_ADD():日期变化

SELECT DATE_ADD('2019-2-28',INTERVAL -365 DAY);
+-----------------------------------------+
| DATE_ADD('2019-2-28',INTERVAL -365 DAY) |
+-----------------------------------------+
| 2018-02-28 |
+-----------------------------------------+
1 row in set

DATEDIFF():日期差值

SELECT DATEDIFF('2019-3-1','2018-2-28');
+----------------------------------+
| DATEDIFF('2019-3-1','2018-2-28') |
+----------------------------------+
| 366 |
+-----------------------

DATE_FORMAT():日期格式化

SELECT DATE_FORMAT('2019-2-28\','%m / %d / %Y ');
+------------------------------------------+
| DATE_FORMAT('2019-2-28','%m / %d / %Y ') |
+------------------------------------------+
| 02 / 28 / 2019 |
+------------------------------------------+
1 row in set

数值函数
CEIL():进一取整(向上取整)
DIV:整数除法
FLOOR():舍一取整(向下取整)
MOD:取余数(取模) (和%等价,同时可以对整数也可以对浮点型取余)
POWER():幂运算,比如2的三次方
ROUND():四舍五入
TRUNCATE():数字截取(不四舍五入)

字符串函数
CONCAT():字符连接
CONCAT_WS():使用指定的分隔符进行字符连接
FORMAT():数字格式化
LOWER():转换成小写字母
UPPER():转换成大写字母
LEFT():获取左侧字符,RIGHT():获取右侧字符
需要两个参数,第一个是从哪个字符串获取,第二个是获取几位:
LENGTH():获取字符串长度
TRIM():删除前导和后续空格

SUBSTRING():字符串截取,一共三个参数,第一个从哪个字符串截取,第二个是从第几个字符开始截取,第三个是截取几位:
REPLACE():字符串替换

  1. SQL代码规范
    ​​​ [SQL编程格式的优化建议] SQL编程格式的优化建议 - 知乎​

作业
项目一:查找重复的电子邮箱(难度:简单)
表数据为
±—±--------+
| Id | Email |
±—±--------+
| 1 | ​​​[email protected]​​​ |
| 2 | ​​​[email protected]​​​ |
| 3 | ​​​[email protected]​​​ |
±—±--------+

通过对Email列分组,分组完后,再对其设置条件,如果count>1则认为是重复:

select * 
from email
group by Email
having count(Email) > 1;

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

+-------------+-----------+---------+------------+-----------+
| 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 |
+-------------+-----------+---------+------------+-----------+

输出所有大国的名称,人口和面积,可以先想到select name,population,area;接着再考虑加条件,条件为筛选出大国:

select name,population,area
from world as w
where w.population >25000000
and w.gdp>20000000;


标签:语句,goods,28,sex,2019,Mysql,DW,集训营,SELECT
From: https://blog.51cto.com/u_15955938/6039474

相关文章

  • DW集训营数据库Mysql梳理(四)
    MySQL基础–表联结学习内容1.MySQL别名别名除了允许用于列名和计算字段外,SQL还允许给表名起别名,好处在于:(1)缩短SQL语句;(2)允许在一条SELECT语句中多次使用相同的表。为......
  • MySQL 查看数据库中每个表占用的空间大小
    1、进去指定schema数据库(存放了其他的数据库的信息) mysql>useinformation_schema;Databasechanged2、查询所有数据的大小mysql>selectconcat(round(sum(DATA_LEN......
  • MYSQL更改引擎为InnoDB
    MYSQL更改引擎为InnoDB因为MYSQL默认是MyISAM引擎,但是MyISAM引擎不支持事务和外键,所以我们需要设置默认为InnoDB引擎。打开my.ini文件(安装路径根目录下)文件划到最下面......
  • MySQL(九)插入、更新和删除
    常用的SQL语句,除了select用于查询,还有insert、update、delete等。 一、insertinsert:用来插入(或添加)行到数据库中,常见方式有以下几种:①插入完整的行;②插入行的一部分;③插入......
  • MySQL(十一)视图及存储过程
    一、视图视图是虚拟的表,它只包含使用时动态检索数据的查询。1、使用视图的好处①重用SQL语句;②简化复杂的SQL操作(可以方便的重用它而不必知道它的基本查询细节);③使用表的组......
  • MySQL(十)操纵表及全文本搜索
    一、创建表MySQL不仅用于表数据操作,还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。创建表一般有如下两种方式:①使用具有交互式创建和管理表的工具;②直接使用M......
  • mysql max_allowed_packet查询和修改
    ​mysql根据配置文件会限制server接受的数据包大小。有时候大的插入和更新会被max_allowed_packet参数限制掉,导致失败。查看目前配置  showVARIABLESlike......
  • MySQL错误锦集【持续更新】
    [42000][1075]Incorrecttabledefinition;therecanbeonlyoneautocolumnanditmustbedefinedasakey出现情景:在当前表格,有添加了主键的auto_increment但......
  • MySQL执行流程
    MySQL执行流程select语句执行流程增删改语句执行流程update语句的整体执行流程和select语句是一样的。只是少了缓存的那一步骤。mysql想完成数据的修改,会先从存储引擎......
  • SolidWORKS 开启小金球
    转抄:RealHackSolidWORKS2015安装过程:1、首先安装上SolidWORKS2015,并使用注册机激活。 2、启动SolidWORKS2015一次,然后关闭掉。 3、打开注册表,可直接在命令窗口......