目次
一、CRUD简介
二、Create新增
1.单行数据插入
2.查询
3. 多行数据插入
4.实行本机的SQL脚本插入
三、Retrieve检索
1.全列查询
2.指定列查询
3.查询字段为表达式
3.1 常量表达式
3.2列的值与常量运算
3.3列与列之间的运算
3.4为列指定别名
4.结果查询去重
5.Where条件查询
5.1比较运算符
5.2 逻辑运算符
5.3示例
1.查询英语成绩不及格的同学(<60)
2.查询语文成绩高于英语成绩的同学
3.总分在200分以下的同学
4.查询语文成绩大于80且英语成绩大于80的同学
5.查询语文成绩大于80或英语成绩大于80的同学
6.观察and和or的优先级
7.语⽂成绩在[80,90]分的同学
8.数学成绩是78或者79或者98或者99分的同学
9.查询所有姓孙的同学
10.查询姓孙且姓名共有两个字同学
11.查询英语成绩为NULL的记载
12.查询英语成绩不为NULL的记载
13.NULL与其他值进⾏运算结果为NULL
14.留意
6.Order by(排序)
6.1语法
6.2示例
1.按数学成绩从低到⾼排序(升序)
2.按语⽂成绩从⾼到低排序(降序)
3.按英语成绩从⾼到低排序
4.查询同学各⻔成绩,依次按数学降序,英语升序,语⽂升序的⽅式显⽰
5.查询同学及总分,由⾼到低排序
6.可以使⽤列的别名进⾏排序
7. 所有英语成绩不为NULL的同学,按语⽂成绩从⾼到低排序
8.留意
7.分页查询
7.1语法
1.语法1
2.语法2
3.语法3
四、Update修改
1.语法
2.示例
1.将孙悟空同学的数学成绩变更为 80 分
2.将曹孟德同学的数学成绩变更为60分,语⽂成绩变更为70分
3.将总成绩倒数前三的3位同学的数学成绩加上30分
3.Update留意事项
五、Delete删除
1.语法
2.示例
1.删除学生姓为孙权的记载
2.删除整张表数据
六、截断表
1.语法
2.示例
3.留意事项
七、插入查询
1.语法
2.示例
1.删除表中的重复记载,重复的数据只能有⼀份
2.重命名表
八、聚合函数
1.常用函数
2.示例
2.1Count
1.统计exam表中有多少记载
2.统计有多少学⽣参加数学考试
3.统计语⽂成绩⼩于60分的学⽣个数
2.2Sum
1.统计所有学⽣数学成绩总分
2.统计所有学⽣英语成绩总分
3.不能统计⾮数值的列
2.3Avg
1.统计英语成绩的平均值
2.格式化输出小数
3.统计平均总分
2.4Max && Min
1.查询英语最高分
2.查询 >70 的数学最低分
3.查询数学成绩的最⾼分与英语成绩的最低分
九、Group by分组查询
1.概念
2.语法
3.示例
1.统计每个⻆⾊的⼈数
2.统计每个⻆⾊的平均⼯资,最⾼⼯资,最低⼯资
4.having语句
1.示例
1.显⽰平均⼯资低于1500的⻆⾊和它的平均⼯资
2.Having 与 Where 的区别
十、内置函数
1.日期函数
2.字符串处理惩罚函数
2.1示例
1.显⽰学⽣的考试成绩,格式为 "XXX的语⽂成绩:XXX分,数学成绩:XXX分,英语成绩:XXX分"
3.数学函数
4.其它常用函数
一、CRUD简介
CURD是对数据库中的记载进⾏根本的增编削查利用:
• Create(创建)
• Retrieve(读取)
• Update(更新)
• Delete(删除)
二、Create新增
- INSERT [INTO] table_name
- [(column [, column] ...)]
- VALUES
- (value_list) [, (value_list)] ...
- value_list: value, [, value] ...
复制代码 1.单行数据插入
推荐使用指定字段列表,只要值与字段对应即可,和表定义时字段的顺序无关
没有自定id这一列时 id这一列会用默认值去添补 默认值是NULL
2.查询
3. 多行数据插入
4.实行本机的SQL脚本插入
或者
实行本机的SQL脚本
三、Retrieve检索
- SELECT
- [DISTINCT]
- select_expr [, select_expr] ...
- [FROM table_references]
- [WHERE where_condition]
- [GROUP BY {col_name | expr}, ...]
- [HAVING where_condition]
- [ORDER BY {col_name | expr } [ASC | DESC], ... ]
- [LIMIT {[offset,] row_count | row_count OFFSET offset}]
复制代码 1.全列查询
2.指定列查询
- select 列名[,列名] ... from 表名;
复制代码
3.查询字段为表达式
3.1 常量表达式
表达式在查询列表中,但是在表中不存在
返回的结果集是根据查询列表中的字段和表达式生成的一个暂时表,专门用来保存查询结果的 当结果集返回给客户端时,结果集就烧毁了
3.2列的值与常量运算
把所有学⽣的语⽂成绩加10分
当使用表达式盘算新成绩后 表达式中的成绩没有被修改
3.3列与列之间的运算
盘算所有学⽣语⽂、数学和英语成绩的总分
3.4为列指定别名
若中间有空格 必须用 ' ' 引起来
as可以省略不写
每一个查询的列都可以起别名
4.结果查询去重
- select distinct 列名[,列名] ... from 表名;
复制代码
要查询的结果集中发现重复数据只保存一条 不会删除原来的内容
在结果集中,每一列都时相同的MYSQL才判断为重复
5.Where条件查询
根据指定的一些条件,过滤掉不符合条件的记载,把符合条件的记载返回给用户
- SELECT
- select_expr [, select_expr] ... [FROM table_references]
- WHERE where_condition
复制代码 5.1比较运算符
运算符 | 说明 | >,>=,<,<= | ⼤于,⼤于等于,⼩于,⼩于等于 | = | 等于,对于NULL的⽐较不安全,⽐如NULL=NULL结果还是NULL | <=> | 等于,对于NULL的⽐较j是安全的,⽐如NULL<=>NULL结果是TRUE(1) | !=,<> | 不等于 | value BETWEEN a0
AND a1 | 范围匹配,[a0,a1],如果a0<=value<=a1,返回TRUE或1,NOT BETWEEN则取
反 | value IN(option,...) | 如果value在optoin列表中,则返回TRUE(1),NOT IN则取反 | IS NULL | 是NULL | IS NOT NULL | 不是NULL | LIKE | 含糊匹配,%表⽰任意多个(包罗0个)字符;_表⽰任意⼀个字符,NOT LIKE则取反 |
5.2 逻辑运算符
运算符 | 说明 | AND | 多个条件必须都为TRUE(1),结果才是TRUE(1) | OR | 任意⼀个条件为TRUE(1),结果为TRUE(1) | NOT | 条件为TRUE(1),结果为FALSE(0) | 5.3示例
1.查询英语成绩不及格的同学(<60)
插入一条英语成绩为NULL的记载 , 结果集中没有NULL的记载
2.查询语文成绩高于英语成绩的同学
3.总分在200分以下的同学
where子句不能以别名当作过滤条件
1.先找到这个表 -- from
2.定位符合条件的数据行 -- where
3.在过滤后的结果集中抽取要表现的列、表达式 -- select
以是在实行where子句时,select后边指定的别名还没有定义
4.查询语文成绩大于80且英语成绩大于80的同学
5.查询语文成绩大于80或英语成绩大于80的同学
6.观察and和or的优先级
not > and > or
推荐使用小括号给扩起来
7.语⽂成绩在[80,90]分的同学
8.数学成绩是78或者79或者98或者99分的同学
9.查询所有姓孙的同学
10.查询姓孙且姓名共有两个字同学
11.查询英语成绩为NULL的记载
12.查询英语成绩不为NULL的记载
13.NULL与其他值进⾏运算结果为NULL
14.留意
• WHERE条件中可以使⽤表达式,但不能使⽤别名
• AND的优先级⾼于OR,在同时使⽤时,建议使⽤⼩括号()包裹优先执⾏的部分
• 过滤NULL时不要使⽤等于号(=)与不等于号(!=,<>)
• NULL与任何值运算结果都为NULL
6.Order by(排序)
- -- ASC 为升序(从⼩到⼤)
- -- DESC 为降序(从⼤到⼩)
- -- 默认为 ASC
- SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC |
- DESC], ... ;
复制代码
6.1语法
- select 列名 from 表名 order by 列名 [ASC | DESC]
复制代码 指定排序的列 返回的结果集就是针对这个列进行排序后的结果集 实在暂时表中表现的
6.2示例
1.按数学成绩从低到⾼排序(升序)
2.按语⽂成绩从⾼到低排序(降序)
3.按英语成绩从⾼到低排序
NULL 在排序时 NULL值被认定为比任何值都小
4.查询同学各⻔成绩,依次按数学降序,英语升序,语⽂升序的⽅式显⽰
分别为每个列指定排序规则 在结果集中按从左到右的顺序进行排序
5.查询同学及总分,由⾼到低排序
6.可以使⽤列的别名进⾏排序
有了查询结果之后才可以进行排序
7. 所有英语成绩不为NULL的同学,按语⽂成绩从⾼到低排序
8.留意
• 查询中没有ORDER BY⼦句,返回的顺序是未定义的,永久不要依赖这个顺序
• ORDER BY⼦句中可以使⽤列的别名进⾏排序
• NULL进⾏排序时,视为⽐任何值都⼩,升序出现在最上⾯,降序出现在最下⾯
7.分页查询
- -- 起始下标为 0
- -- 从 0 开始,筛选 num 条结果
- SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
- -- 从 start 开始,筛选 num 条结果
- SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start, num;
- -- 从 start 开始,筛选 num 条结果,⽐第⼆种⽤法更明确,建议使⽤
- SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;
复制代码
7.1语法
1.语法1
从第零条开始,只取前面两条 作为返回的结果值
limit实行顺序在 order by 之后
2.语法2
表示从第1条开始 读取两条 留意起始位置从0开始计数
若起始位置超过了表中记载范围 实行没有题目 但是会返回一个空结果集
3.语法3
从位置为1的记载开始 向后读取2条记载
四、Update修改
1.语法
- UPDATE [LOW_PRIORITY] [IGNORE] table_reference
- SET assignment [, assignment] ...
- [WHERE where_condition]
- [ORDER BY ...]
- [LIMIT row_count]
复制代码 2.示例
1.将孙悟空同学的数学成绩变更为 80 分
2.将曹孟德同学的数学成绩变更为60分,语⽂成绩变更为70分
3.将总成绩倒数前三的3位同学的数学成绩加上30分
3.Update留意事项
• 以原值的基础上做变更时,不能使⽤math += 30这样的语法
• 不加where条件时,会导致全表数据被列新,审慎利用
五、Delete删除
1.语法
- DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
复制代码 2.示例
1.删除学生姓为孙权的记载
2.删除整张表数据
如果不加任何条件实行delete语句会把表中的数据全部删除 (非常伤害)
六、截断表
1.语法
- TRUNCATE [TABLE] tbl_name
复制代码 2.示例
表截断:
表回到了最初创建表时候的最初位置 自增ID也会从零开始
3.留意事项
• 只能对整表利用,不能像 DELETE ⼀样针对部分数据
• 不对数据利用以是⽐DELETE更快,TRUNCATE在删除数据的时候,不经过真正的事物,以是⽆法回滚
• 会重置 AUTO_INCREMENT 项
七、插入查询
1.语法
- INSERT INTO table_name [(column [, column ...])] SELECT ...
复制代码 2.示例
1.删除表中的重复记载,重复的数据只能有⼀份
2.重命名表
八、聚合函数
1.常用函数
函数 | 说明 | COUNT([DISTINCT] expr) | 返回查询到的数据的 数量 统计结果集的记载数 | SUM([DISTINCT] expr) | 返回查询到的数据的 总和,不是数字没故意义 | AVG([DISTINCT] expr) | 返回查询到的数据的 平均值,不是数字没故意义 | MAX([DISTINCT] expr) | 返回查询到的数据的最⼤值,不是数字没故意义 | MIN([DISTINCT] expr) | 返回查询到的数据的最⼩值,不是数字没故意义 | 2.示例
2.1Count
1.统计exam表中有多少记载
推荐使用count(*)
如果统计的列中有null值的行 则改行不参与统计
2.统计有多少学⽣参加数学考试
3.统计语⽂成绩⼩于60分的学⽣个数
2.2Sum
1.统计所有学⽣数学成绩总分
2.统计所有学⽣英语成绩总分
在进行求和运算时 会忽略无效的null值
3.不能统计⾮数值的列
2.3Avg
1.统计英语成绩的平均值
2.格式化输出小数
3.统计平均总分
2.4Max && Min
1.查询英语最高分
2.查询 >70 的数学最低分
3.查询数学成绩的最⾼分与英语成绩的最低分
九、Group by分组查询
1.概念
GROUP BY ⼦句的作⽤是通过⼀定的规则将⼀个数据集分别成若⼲个⼩的分组,然后针对若⼲个
分组进⾏数据处理惩罚,⽐如使⽤聚合函数对分组进⾏统计
2.语法
- SELECT {col_name | expr} ,... ,aggregate_function (aggregate_expr)
- FROM table_references
- GROUP BY {col_name | expr}, ...
- [HAVING where_condition]
复制代码 • col_name | expr:要查询的列或表达式,可以有多个,必须在 GROUP BY ⼦句中作为分组的依
据
• aggregate_function:聚合函数,⽐如COUNT(), SUM(), AVG(), MAX(), MIN()
• aggregate_expr:聚合函数传⼊的列或表达式,如果列或表达式不在 GOURP BY ⼦句中,必须
包含中聚合函数中
3.示例
1.统计每个⻆⾊的⼈数
2.统计每个⻆⾊的平均⼯资,最⾼⼯资,最低⼯资
4.having语句
使⽤GROUP BY 对结果进⾏分组处理惩罚之后,对分组的结果进⾏过滤时,不能使⽤ WHERE ⼦句,⽽要使⽤ HAVING ⼦句
1.示例
1.显⽰平均⼯资低于1500的⻆⾊和它的平均⼯资
2.Having 与 Where 的区别
• Having ⽤于对分组结果的条件过滤
• Where ⽤于对表中真实数据的条件过滤
十、内置函数
1.日期函数
函数 | 说明 | CURDATE() | 返回当前⽇期,同义词 CURRENT_DATE , CURRENT_DATE() | CURTIME() | 返回当前时间,同义词 CURRENT_TIME , CURRENT_TIME([fsp]) | NOW() | 返回当前⽇期和时间,同义语 CURRENT_TIMESTAMP ,CURRENT_TIMESTAMP | DATE(data) | 提取date或datetime表达式的⽇期部分 | ADDDATE(date,INTERVAL expr
unit) | 向⽇期值添加时间值(间隔),同义词 DATE_ADD() | SUBDATE(date,INTERVAL expr
unit) | 向⽇期值减去时间值(间隔),同义词 DATE_SUB() | DATEDIFF(expr1,expr2) | 两个⽇期的差,以天为单元,expr1 - expr2 | 在盘算时只使用日期部分 表达式1日期 早于 表达式2日期时 返回负数
一般对数据的处理惩罚在应用程序中完成,不要放在数据库中
2.字符串处理惩罚函数
函数 | 说明 | CHAR_LENGTH(str) | 返回给定字符串的⻓度,同义词 CHARACTER_LENGTH() | LENGTH(str) | 返回给定字符串的字节数,与当前使⽤的字符编码集有关 | CONCAT(str1,str2,...) | 返回拼接后的字符串 | CONCAT_WS(separator,str1,str2,...) | 返回拼接后带分隔符的字符串 | LCASE(str) | 将给定字符串转换成⼩写,同义词 LOWER() | UCASE(str) | 将给定字符串转换成⼤写,同义词 UPPER() | HEX(str), HEX(N) | 对于字符串参数str, HEX()返回str的⼗六进制字符串表⽰形式,对于数字参数N, HEX()返回⼀个⼗六进制字符串表⽰形式 | INSTR(str,substr) | 返回substring第⼀次出现的索引 | INSERT(str,pos,len,newstr) | 在指定位置插⼊⼦字符串,最多不超过指定的字符数 | SUBSTR(str,pos)
SUBSTR(str FROM pos FOR len)
| 返回指定的⼦字符串,同义词 SUBSTRING(str,pos)
SUBSTRING(str FROM pos FOR len)
| REPLACE(str,from_str,to_str) | 把字符串str中所有的from_str替换为to_str,区分⼤⼩写 | STRCMP(expr1,expr2) | 逐个字符⽐较两个字符串,返回-1,0,1 | LEFT(str,len) ,RIGHT(str,len) | 返回字符串str中最左/最右边的len个字符 | LTRIM(str) RTRIM(str) TRIM(str) | 删除给定字符串的前导、末端、前导和末端的空格 | TRIM([{LEADING | TRAILING
| BOTH } [remstr] FROM] | 删除给定符串的前导、末端或前导和末端的指定字符串 | 2.1示例
1.显⽰学⽣的考试成绩,格式为 "XXX的语⽂成绩:XXX分,数学成绩:XXX分,英语成绩:XXX分"
3.数学函数
函数 | 说明 | ABS(X) | 返回X的绝对值 | CEIL(X) | 返回不⼩于X的最⼩整数值,同义词是 CEILING(X) | FLOOR(X) | 返回不⼤于X的最⼤整数值 | CONV(N,from_base,to_base) | 不同进制之间的转换 | FORMAT(X,D) | 将数字X格式化为“#,###,###”的格式。##',四舍五⼊到⼩数点后D
位,并以字符串形式返回 | RAND([N]) | 返回⼀个随机浮点值,取值范围 [0.0, 1.0) | ROUND(X), ROUND(X,D) | 将参数X舍⼊到⼩数点后D位 | CRC32(expr) | 盘算指定字符串的循环冗余校验值并返回⼀个32位⽆符号整数 | 4.其它常用函数
函数 | 说明 | version() | 显⽰当前数据库版本 | database() | 显⽰当前正在使⽤的数据库 | user() | 显⽰当前⽤⼾ | md5(str) | 对⼀个字符串进⾏md5摘要,摘要后得到⼀个32位字符串 | ifnull(val1, val2) | 如果val1为NULL,返回val2,否则返回 val1 |
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |