SQL基础
sql 是分为好几种的,这种创建数据库、创建表等修改结构的 sql 叫做 <font style="color:rgb(37, 41, 51);">DDL</font>
(Data Definition Language),而增删改那种叫做 <font style="color:rgb(37, 41, 51);">DML</font>
(Data Manipulate Language),查询数据的叫做 <font style="color:rgb(37, 41, 51);">DQL</font>
(Data Query Language)。
一些快捷键
- 执行整篇 sql 脚本:【Ctrl】+【Shift】+【Enter】
- 执行当前行:【Ctrl】+【Enter】
创表
可使用````包裹有关键字的数据库或表名。顶部使用 USE
指定sql在那个数据库中执行。使用USE后CREATE TABLE
hello-mysql.student
便可以写成CREATE TABLE student
1 |
|
查表
基础查询
- where:查询条件,比如 where id=1
- as:别名,比如 select xxx as ‘yyy’
- and: 连接多个条件
- in/not in:集合查找,比如 where a in (1,2)
- between and:区间查找,比如 where a between 1 and 10
- limit:分页,比如 limit 0,5
1 |
|
稍微进阶
**<font style="color:rgb(37, 41, 51);">order by</font>**
指定排序的列: <font style="color:rgb(37, 41, 51);">asc</font>
升序 <font style="color:rgb(37, 41, 51);">desc</font>
降序
1 |
|
**<font style="color:rgb(37, 41, 51);">GROUP BY</font>**
** **分组统计
- 根据班级来分组是
<font style="color:rgb(37, 41, 51);">GROUP BY</font>
class。求平均成绩使用 sql 内置的函数<font style="color:rgb(37, 41, 51);">AVG()</font>
。意思就是按 class 分组,查询每个 class 的平均 score 再汇总后输出。
1 |
|
**<font style="color:rgb(37, 41, 51);">HAVING</font>**
在使用 分组 <font style="color:rgb(37, 41, 51);">GROUP BY</font>
后还需进一步过滤时使用,这个时候就不能使用 <font style="color:rgb(37, 41, 51);">where</font>
啦, 也不该使用 <font style="color:rgb(37, 41, 51);">order by</font>
了
1 |
|
**<font style="color:rgb(37, 41, 51);">distinct</font>**
去重
1 |
|
增删改
1 |
|
ALTER
修改表结构
修改数据库中已存在的表或者其他数据库对象。常见的使用场景包括添加列、删除列、改变数据类型等。
1:删除列
1 |
|
2:增加列
1 |
|
3:修改列的类型信息
1 |
|
4:重命名列
1 |
|
5:重命名表
1 |
|
6:删除表中主键
1 |
|
7:添加主键
1 |
|
8:添加索引
1 |
|
9:修改列的属性
1 |
|
内置函数
聚合函数
用于对数据的统计,比如 AVG(平均数)、COUNT(计数)、SUM(总和)、MIN(最小值)、MAX(最大值)。
1 |
|
字符串函数
用于对字符串的处理,比如 CONCAT(字符串拼接)、SUBSTR(字符串截取)、LENGTH(字符串长度)、UPPER(字符串大写)、LOWER(字符串小写)
<font style="color:rgb(37, 41, 51);">SUBSTR(str, 开始下标, ?结束下标)</font>
mysql 下标从 1 开始
1 |
|
<font style="color:rgb(37, 41, 51);">数值函数</font>
用于对数值的处理,比如 ROUND(四舍五入)、CEIL(向上取整)、FLOOR(向下取整)、ABS(绝对值)、MOD(取模)
取模:即计算两个数相除后的余数: <font style="color:rgb(37, 41, 51);">SELECT MOD(15, 4)</font>
👉 这将返回结果为<font style="color:rgb(37, 41, 51);">3</font>
,因为 15 除以 4 的商为 3,余数为<font style="color:rgb(37, 41, 51);">3</font>
。
1 |
|
<font style="color:rgb(37, 41, 51);">日期函数</font>
用于对日期、时间的处理,比如 DATE、TIME、YEAR、MONTH、DAY
1 |
|
<font style="color:rgb(37, 41, 51);">条件函数</font>
条件是否成立返回不同的值,比如 IF、CASE
<font style="color:rgb(37, 41, 51);">if</font>
函数适合单个条件,
1 |
|
<font style="color:rgb(37, 41, 51);">case</font>
适合多个条件,和 js 的 swtch 语句很像
<font style="color:rgb(37, 41, 51);">case when ... then ... else ... end</font>
1 |
|
<font style="color:rgb(37, 41, 51);">系统函数</font>
用于获取系统信息,比如 VERSION、DATABASE、USER。
1 |
|
<font style="color:rgb(37, 41, 51);">类型转换函数</font>
转换类型为另一种,比如 CAST、CONVERT、DATE_FORMAT、STR_TO_DATE
CAST
类型转换,可转换的类型如下:
- signed:整型;
- unsigned:无符号整型
- decimal:浮点型;
- char:字符类型;
- date:日期类型;
- time:时间类型;
- datetime:日期时间类型;
- binary:二进制类型
1 |
|
<font style="color:rgb(37, 41, 51);">DATE_FORMAT</font>
日期格式化
1 |
|
STR_TO_DATE
字符串转 DATE 类型
1 |
|
<font style="color:rgb(37, 41, 51);">其他函数</font>
<font style="color:rgb(37, 41, 51);">NULLIF</font>
:如果相等返回 null,不相等返回第一个值。
<font style="color:rgb(37, 41, 51);">COALESCE</font>
:返回第一个非 null 的值:
<font style="color:rgb(37, 41, 51);">GREATEST</font>
:返回几个值中最大。<font style="color:rgb(37, 41, 51);">LEAST</font>
:返回几个值中最小。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!