七天学习SQL——第二天

导入示例数据库

mysql> use yiibaidb;
mysql> source D:\SQL/yiibaidb.sql;

在这里插入图片描述

SQL是什么?MySQL是什么?

SQL:结构化查询语言,专门用来操作数据库的标准化语言。
MySQL 是最流行的关系型数据库管理系统。

查询语句 SELECT FROM

语句解释

想选择什么,以及从什么地方选择

SELECT 
    column_name1, column_name2, ...
FROM
    table_name
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
WHERE
    conditions
GROUP BY column_name1
HAVING group_conditions
ORDER BY column_name1
LIMIT offset, length;
**关键词介绍:**
SELECT 语句由以下列表中所述的几个子句组成:
SELECT 之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
FROM 指定要查询数据的表或视图。
JOIN 根据某些连接条件从其他表中获取数据。
WHERE 过滤结果集中的行。
GROUP BY 将一组行组合成小分组,并对每个小分组应用聚合函数。
HAVING 过滤器基于GROUP BY子句定义的小分组。
ORDER BY 指定用于排序的列的列表。
LIMIT 限制返回行的数量。
去重语句
SELECT DISTINCT
    columns
FROM
    table_name
WHERE

可以发现存在重复的名字
上图可以发现Bondur,Firrelli重复了,使用SELECT DISTINCT可以去掉重复
在这里插入图片描述

前N个语句

使用LIMIT子句,LIMIT offset , count;
offset :指定要返回的第一行的偏移量。第一行的偏移量是0,而不是1
count :指定要返回的最大行数
这里LIMIT 5就只返回了5行数据在这里插入图片描述

CASE…END判断语句

CASE…WHEN…THEN…END两种结构
1.简单的CASE函数

CASE SEX 
                WHEN '1' THEN '男'
                WHEN '0'  THEN '女'
                ELSE '其他' END

2.CASE搜索函数

CASE 
            WHEN SEX ='1'  THEN '男'
            WHEN SEX ='0'  THEN '女'
            ELSE '其他' 
            END
    ```

**注:**这两种方式,可以实现相同的功能。简单CASE函数的书写方法相对比较简介,但是和CASE搜索函数相比,功能方面会有些限制,CASE函数只返回一个符合条件的值,剩下的CASE部分将会被忽略。
Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略

筛选语句 WHERE

语法
SELECT column_name1,column_name2
FROM table_name
WHERE column_name operator value;
语句解释

允许根据指定的过滤表达式或条件来指定要选择的行。

实例

图1为customers表中所有记录,图二为creditLimit大于10000的记录
图1
在这里插入图片描述
图2

运算符/通配符/操作符
运算符
运算符描述
=等于
<>(!=)不等于
>大于
<小于
>=大于等于
<=小于等于
BEWEEN在某范围内
LIKE搜索某种模式
IN指定针对某个列的多个可能值
通配符

在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。

通配符描述
%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]或[!charlist]不在字符列中的任何单一字符
操作符
操作符描述
IN 操作符IN 操作符允许您在 WHERE 子句中规定多个值。
BETWEEN 操作符BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期
LIKE 操作符LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式

IN 操作符语法:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

BTWEEN操作符语法:

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
LIKE操作符语法:

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

分组语句 GROUP BY

聚集函数

传回选取的结果集中行的数目
语法:

SELECT COUNT(column_name) FROM table_name
语句解释
HAVING子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据
语法:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
**HAVING** aggregate_function(column_name) operator value;

排序语句 ORDER BY

语句解释

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序记录进行排序,可以使用 DESC 关键字。
语法:

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
正序、逆序

DESC 为降序,默认为升序,且DESC只对紧跟着的第一个列名有效

函数

时间函数

NOW() 函数
返回当前系统的日期和时间
语法:

SELECT NOW() FROM table_name;
数值函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。
有用的 Aggregate 函数:
AVG() - 返回平均值
COUNT() - 返回行数
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和

字符串函数

SQL Scalar 函数基于输入值,返回一个单一的值。
有用的 Scalar 函数:
UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符,MySql 中使用
SubString(字段,1,end) - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式

SQL注释

样式1:从 – 到行尾
双重冲突注释样式至少需要在第二个破折号之后的空格或控制字符(空格,制表符,换行符等)。

SELECT * FROM users; -- This is a comment

:样式2:

SELECT 
    lastName, firstName
FROM
    employees
WHERE
    reportsTo = 1002; # get subordinates of Diane

样式3:C语言风格的注释/* */可以跨越多行。您使用此注释样式记录一个SQL代码块。

/*
    Get sales rep employees
    that reports to Anthony
*/

SELECT 
    lastName, firstName
FROM
    employees
WHERE
    reportsTo = 1143
        AND jobTitle = 'Sales Rep';

SQL代码规范

详细规范整理 https://www.cnblogs.com/gzhcsu/p/7832148.html

参考资料:

https://www.yiibai.com/mysql/
http://www.runoob.com/sql/sql-tutorial.html
CASE END参考> http://www.cnblogs.com/prefect/p/5746624.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值