MySQL基础(一)-查询语句

简介

  • SQL:指结构化查询语言,全称是 Structured Query Language,让你可以访问和处理数据库。它包含以下三个功能:
  1. 数据创建:定义数据库和对象:表、视图、触发器、存储过程
  2. 数据操纵:更新数据、查询数据
  3. 数据控制:管理数据权限
  • MySQL:开源的数据管理系统,能够帮助你管理关系型数据库

查询语句

  • SELECT FROM:从一个表或者多个表中检索信息
    • 检索单个列SELECT 列名 FROM 表名;
    • 检索多个列SELECT 列名1,列名2,列名3,.... FROM 表名;
      注意用英文逗号分隔
    • 检索所有列SELECT * FROM 表名;
    • 去重语句SELECT DISTINCT 列名 FROM 表名;
      顾名思义,DISTINCT 关键字表示的是只返回不同的值
    • 查询前N个语句SELECT 列名 FROM 表名 LIMIT N;
      特别的,还可以指定从何处开始计数:
      SELECT 列名 FROM 表名 LIMIT M,N;
      该语句表示为从行M开始查找N个结果。注意,行M指的是第 M+1
    • CASE…END 语句:用于计算条件列表并返回多个可能结果表达式之一
      简单 CASE 语句的语法:
      在这里插入图片描述
      case_expression 可以是任何有效的表达式。我们将 case_expression 的值与每个 WHEN 子句中的 when_expression 进行比较,例如 when_expression_1when_expression_2 等。如果 case_expressionwhen_expression_n 的值相等,则执行相应的 WHEN 分支中的命令(commands)。ELSE 子句是可选的,如果省略 ELSE 子句,并且找不到匹配项,MySQL将引发错误。
      此处关于 CASE 语句部分的内容参考易百教程,链接中有进一步说明。

筛选语句

  • WHERE:在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。WHERE 子句在表名(FROM 子句)之后给出,如下所示:
     SELECT 列名 FROM 表名 WHERE 条件
    
  • 运算符:参考 MySQL运算符
  • 通配符:用来匹配值的一部分的特殊字符。为在搜索子句中使用通配符,必须使用 LIKE 操作符。在介绍通配符之前,首先要了解一个概念,即搜索模式——由字面值、通配符或两者组合构成的搜索条件,举个例子:
LIKE 'hello world'

其中 hello world 就是搜索模式。

  • 百分号通配符:% 表示任何字符出现任意次数。 注意
  1. 除了一个或多个字符外, % 还能匹配0个字符。 % 代表搜索模式中给定位置的0个、1个或多个字符
  2. 尾空格会干扰通配符匹配
  3. % 无法匹配 NULL
  • 下划线通配符:与 % 的区别在于,_ 只能匹配一个字符,不能多也不能少

分组语句

  • 聚集函数:运行在行组上,计算和返回单个值的函数。专门用于汇总数据而不把它们实际检索出来
函数说明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列值之和
  • 分组数据:分组是在 SELECT 语句的 GROUP BY 子句中建立的。使用了 GROUP BY ,就不必指定要计算和估值的每个组了。系统会自动完成。 GROUP BY 子句指示MySQL分组数据,然后对每个组而不是整个结果集进行聚集。
  • 过滤分组:若需要对分组添加条件进行过滤,不能使用 WHERE 进行过滤,必须使用 HAVING 语句,因为 WHERE 指定的是行而不是分组。

排序语句

  • ORDER BY :在查询语句中通常置于最后面,但应置于 LIMIT 前面。
    • 正序:SELECT 列名 FROM 表名 ORDER BY 列名ASCLIMIT 2,2
      SELECT 列名 FROM 表名 ORDER BY 列名 LIMIT 2,2
    • 逆序:SELECT 列名 FROM 表名 ORDER BY 列名DESCLIMIT 2,2

函数

  • 常用日期和时间函数
函数说明
AddDate()增加一个日期(天、周等)
AddTime()增加一个时间(时、分等)
CurDate()返回当前日期
CurTime()返回当前时间
Date()返回日期时间的日期部分
DateDiff()计算两个日期之差
Date_Add()高度灵活的日期运算函数
Date_Format()返回一个格式化的日期或时间串
Day()返回一个日期的天数部分
DayOfWeek()对于一个日期返回星期几
Hour()返回一个时间的小时部分
Minute()返回一个时间的分钟部分
Month()返回一个日期的月份部分
Now()返回当前的日期和时间
Second()返回一个时间的秒部分
Time()返回当前的日期时间的时间部分
Year()返回一个日期的年份部分

注意:MySQL的默认日期格式为 yyyy-mm-dd;如果要指定日期,请使用 DATE 函数。示例:
SELECT 列名 FROM 表名 WHERE DATE(日期列名) = '2005-10-01'

  • 数值函数
函数说明
ABS()返回一个数的绝对值
COS()返回一个角度的余弦
EXP()返回一个数的指数值
MOD()返回除操作的余数
PI()返回圆周率
RAND()返回一个随机数
SIN()返回一个角度的正弦
SQRT()返回一个数的平方根
TAN()返回一个角度的正切
  • 字符串函数
函数说明
LEFT()返回串左边的字符
LENGTH()返回串的长度
LOCATE()找出串的一个子串
LOWER()将串转换为小写
LTRIM()去掉串左边的空格
RIGHT()返回串右边的字符
RTRIM()去掉串右边的空格
UPPER()将串转换为大写

实操练习

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

SELECT
	email AS Email 
FROM
	`email` 
GROUP BY
	email 
HAVING
	COUNT( email ) > 1

任务二:查找大国(难度:简单)

SELECT
	`name`,
	population,
	area 
FROM
	world 
WHERE
	area > 3000000 
	OR ( population > 25000000 AND gdp > 20000000 );
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值