前端入门sql

310 阅读4分钟

最近学了下sql , 这里简单的做下笔记, 便于备忘.

为什么学习sql ?

最近想做一做后端 , sql就成了必学的东西, 并且学习sql的性价比非常高 , 基本后端,测试,运维都需要掌握sql,做为前端学习sql,也能扩大自己的视野

sql概述

SQL(sructured query language)

分为: 表 列 行

主键: 每行数据用于确定唯一身份 的 列

sql 又子句构成 . 有的是必选有的可选 如from order BY

as可以给列名重新命别名 select name as a from...

检索数据

简单的查询 select 列... form 表名

单列 : select id form table

多列 : select id,name form table

所有列 : select * form table

获取不重复值的列 DISTINCT

比如想去除学校相同的行

select DISTINCT school form table

限制结果 limit

limit 3,4 值返回重第3行开始的3条数据

limit 5 只返回上面的5条

排序

order by (确保写在结尾)

排序方向 order by id desc,name desc

数据过滤

image.png

BETWEEW 2 and 4 是对同一列过滤

and or 对不同的列进一步过滤

in ('a','b') 指定条件范围 , 比or跟合适

not用于否定后面的子句 , 写在子句的前面

通配符 : 匹配部分字符

用like开头 , 后面使用通配符

where name like '汪%'

  • % 匹配任意数量的任意字符 . %abc% 包含abc
  • _ 与%差不多,但匹配单个字符
  • 指定字符集 [ac]% 必须以ac开头

计算字段

用于更改数据的格式

as将计算好的列重新命名

TRIM函数 去除空格

拼接 concat(mysql) , +

函数

不同的数据库 , 函数差异大 , 所以要查看相关数据库的文档

  • 日期处理函数 , 不同的数据库有不同的方言

    mysql

    year mouth 返回年月

  • 常用的文本处理函数

函 数 说 明 LEFT( 列 , 截取长度 )(或使用子字符串函数) 返回字符串左边的字符
LENGTH()(也使用DATALENGTH()或LEN()) 返回字符串的长度 LOWER() 将字符串转换为小写 LTRIM() 去掉字符串左边的空格 RIGHT()(或使用子字符串函数) 返回字符串右边的字符 RTRIM() 去掉字符串右边的空格 SUBSTRING(列 , start , end) 提取字符串的组成部分

SOUNDEX() 返回字符串的SOUNDEX值 UPPER() 将字符串转换为大写

  • 数值处理函数 , 不同的数据库有不同的方言

    ABS()

    返回一个数的绝对值

    COS()

    返回一个角度的余弦

    EXP()

    返回一个数的指数值

    PI()

    返回圆周率 π 的值

    SIN()

    返回一个角度的正弦

    SQRT()

    返回一个数的平方根

    TAN()

    返回一个角度的正切

数据聚集

将多个行 , 聚集到同一行来 , 配合分组使用

  • 聚集函数

    AVG()

    返回某列的平均值

    COUNT()

    返回某列的行数

    MAX()

    返回某列的最大值

    MIN()

    返回某列的最小值

    SUM()

    返回某列值之和

分组

group by 对没个组 进行数据的聚集 , 可以对多个字段进行聚集

having : 对分组进行过滤 与where类似 , where是在分组钱进行过滤 , having在分组后

  • SELECT 子句顺序

子查询

SELECT cust_id
FROM Orders
WHERE order_num IN (SELECT order_num
FROM OrderItems
WHERE prod_id = 'RGAN01');

常用与in操作符 , 也能在计算字段使用, 也可用于两子表做链接

联结

通过键联结多个表 , 用的最多的联结也就是等值联结

内间接  也叫等值联结   inner join table on a.id==b.id

自然链接  id这种会出现在多个表 . 但链接时 , 会选出两列id  , 需要加上限度 select Orders.id from

自联结  连接自己 , 需要用到别名 一个表多次使用

外联结和全联结  都只是加上空的行

组合查询

UNION : 可以将多个select 查询出的结果进行合并 , 也就是得出满足任意一个where子句的行

SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL','IN','MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';

以上就核心的查询部分 , 更多内容可以参考

sql必知必会 (电子书)

sql学了之后要及时练习 , 推荐牛客的题库 www.nowcoder.com/exam/oj?pag…