mysql rollup函数_MySQL必知必会知识点整理

买了这本书,想着边看边整理一下,可以方便以后查阅。分享出来,大家都可以看看!

第3章 使用MySQL

  • 使用数据库 —— USE 数据库名称
  • 了解数据库 —— SHOW 数据库名称
  • 查看数据库中的表 —— SHOW TABLES
  • 查看表中列的消息 —— SHOW COLIMNS from 表名(DESCRIBE 表名)
  • 自动增量 ——AUTO_INCREMENT
  • 主键 —— PRIMARY KEY

第4章 检索数据库

SELECT语句:

  • 检索一个列: SELECT 列名 FROM 表名
  • 检索多个列: SELECT 列名1,列名2 FROM 表名
  • 检索所有列: SELECT * from 表名
  • LIMIT 关键字: SELECT 列名 from 表名 limit 2(检索不多于2行的)

SELECT 列名 from 表名 limit 2,2 (从行2开始检索两行)注意:行2表示的是表中的第三行

  • DISTINCT关键字: SELECT DISTINCT 列名1 from 表名(只显示该列中不相同的数据)

第5章 排序检索数据

  • ORDER BY关键字: SELECT * from 表名 ORDER BY 列名1 (按列名1排序检索表格)

SELECT * from 表名 ORDER BY 列名1 DESC (按列名1逆序排序检索表格)

SELECT * from 表名 ORDER BY 列名1 DESC,列名2(先按列名1逆序排序,再按列名2正序排 序)

第6章 过滤数据

WHERE子句

  • 使用方法: SELECT * FROM 表名 WHERE 条件
  • 与ORDER BY混合使用: SELECT * FROM 表名 WHERE 条件 ORDER BY 列名;(ORDER BY必须放在WHERE之后)
  • where子句后的条件: <> ,> ,< >=,<= ,and ,or
  • 范围值检索: SELECT * from 表名 WHERE 列名 BETWEEN 数字1 AND 数字2 (按列名在数字1和数字2之间检索)
  • 空值检索: SELECT * from 表名 WHERE 列名 IS NULL;

第7章 数据过滤

  • AND和OR操作符: AND的优先级高于OR
  • IN操作符:SELECT * from 表名 WHERE 列名 IN(数值1,数值2)
  • NOT操作符: SELECT * from 表名 WHERE 列名 NOT IN(数值1,数值2)

第8章 用通配符进行过滤

LIKE操作符

  • 百分号(%)通配符: SELECT * from 表名 WHERE 列名 LIKE ‘XXX%’(检索列名以XXX开头的任何字符)

SELECT * from 表名 WHERE 列名 LIKE ‘%XX%’(检索列名中间为XX的任何字符)

(注意:用%不能匹配值为NULL的行)

  • 下划线(_)通配符:SELECT * from 表名 WHERE 列名 LIKE ‘_XXX’

注意: %可以匹配多个字符,而_只能匹配一个字符

第9章 使用正则表达式进行搜索

正则表达式的作用是匹配文本,将一个模式与一个文本串进行比较

  • 使用方法: SELECT 列名 from 表名 WHERE 列名 REGEXP ‘正则表达式’ ;

SELECT 列名 from 表名 WHERE 列名 REGEXP ‘000’(‘000’表示匹配任意一个字符)

  • 进行OR匹配: SELECT 列名 from 表名 WHERE 列名 REGEXP ‘字符1| 字符2’(匹配数值1和数值2中的其中一个)
  • 匹配几个字符之一: SELECT 列名 from 表名 WHERE 列名 REGEXP ‘[字符1 字符2 字符3] XXX’(匹配这三个字符中的一个)

l 匹配范围: SELECT 列名 from 表名 WHERE 列名 REGEXP '[字符1- 字符3]XX'

l 匹配特殊字符: SELECT 列名 from 表名 WHERE 列名 REGEXP ‘ .’

l 定位符: SELECT 列名 from 表名 WHERE 列名 REGEXP '^[8.]'(以8开头的所有字符) ($这是结尾标志符)

第10章 创建计算字段

  • 拼接字段 —— CONCAT

SELECT CONCAT (列名1,‘(', 列名2,')’))from 表名

SELECT CONCAT (RTrim(列名1),LTrim(列名2)) from 表名(RTrim去除列值右边的空格

  • 算数运算 —— * 、/、+、-

第11章 使用数据处理函数

  • UPPER()和LOWER()函数——字段全部大写或者小写
  • DATE()函数 —— 仅提取列中的日期
  • YEAR() 函数 —— 从日期中返回年
  • Month()函数 —— 从日期中返回月
  • 数值处理函数 —— abs()/Cos()/Exp()/MOd()/Pi()

第12章 汇总数据

  • 聚集函数——AVG()/COUNT()/MAX()/MIN()/SUM()

注意: SELECT COUNT(*) from 表格 (对表中行的数目进行统计,不管表列中是否包含空值)

SELECT COUNT(列名) from 表格 (对当前列中不是空值的行的数目进行统计)

  • SELECT AVG(DISTICNCT 列名) from 表格 (去重后求取平均值)

第13章 分组数据

  • 分组 —— GROUP BY

GROUP BY子句必须在where子句之后,在ORDER BY子句之前

SELECT 列名1,count(列名2) AS new_列名2 FROM 表名 group by 列名1 WITH ROLLUP;(ROLLUP得到每个分组和每个分组汇总级别的值)

  • 过滤分组 ——HAVING

where中的子句部分,都可以在having中用,但是where在分组前进行过滤,而having在分组后过滤;

例如: SELECT 列名1,COUNT(列名2) as new_c from 表格 group by 列名1 having COUNT(列名2)>= 2;

SELECT 列名1,sum(列名2 * 列名3) as new from 表名 group by 列名1 having sum(列名2 * 列名3) >=50

在HAVING中使用聚合函数的时候,必须写全不能用其重命名

第14章 使用子查询

  • 子查询 —— SELECT语句中嵌套SELECT语句

第15章 联结表

  • 联结表的基础是有关系数据表的存在
  • 内部联结(inner join)—— SELECT * from 表1 inner join 表2 on 表1.列名 = 表2.列名

第 16 章 创建高级联结

  • 自联结 —— 就是同一张表引用多次
  • 自然联结
  • 外部联结 —— OUTER JOIN

SELECT a.列名1,a.列名2,b.列名1 FROM 表1 as a LEFT OUTER JOIN 表2 as b ON a.列名 = b.列名

外部联结中必须使用LEFT或者RIGHT指定联结方向;

  • 聚集函数也可以使用在联结中

第17章 组合查询

  • 使用条件 : 1)在单个查询中从不同的表返回类似结构的数据;2)对单个表执行多个查询,按单个查询返回数据;
  • 创建组合查询 —— UNION关键字

SELECT 语句1 UNION SELECT 语句2 (UNION在查询时会自动去掉重复行)

SELECT 语句1 UNION ALL SELECT 语句2 (UNION在查询时不会去掉重复行)

  • UNION和WHERE的区别:UNION相当于是WHERE的补充,即如果需要每个条件的匹配行全部出现,就必须用UNION ALL ;

第18章 全文本搜索

  • 一般在创建表时指定FULLTEXT:例如:FULLTEXT(note_txt)
  • 全文本搜索—— Match() 和Against()

Match() 指定被搜索的列,Against() 指定要使用的搜索表达式式;

SELECT note_tx FROM 表名 WHERE Match(note_txt) Against('表达式')

Match使用说明:传递给Match()的值必须与FULLTEXT()定义的相同;如果指定多个列就必须列出它们且次序正确

  • 使用查询扩展

SELECT note_txt FROM 表名 WHERE Match(note_txt) Against('字符串' WITH QUERY EXPANSION)

扩展查询输出与你想要的搜索结果有关的值,但是也并不包含你的搜索结果

  • 布尔文本搜索—— IN BOOLEAN MODE

SELECT note_txt from 表名 WHERE Match(note_txt) Against('字符串' IN BOOLEAN MODE)

e44c2fd4873ac30cd3272c84a6050cb3.png

例如: SELECT note_txt FROM 表名 WHERE Match(note_txt) Against('+词1 <词2''' IN BOOLEAN MODE)

SELECT note_txt FROM 表名 WHERE Match(note_txt) Against('"词1 词2"' IN BOOLEAN MODE)(匹配短语)

第19章 插入数据

  • INSERT语句

INSERT INTO 表名 VALUES(按列次序输入每列中的值)

INSERT INTO 表名(各个列名)VALUES(按列输入每个值)

  • 插入检索出的数据

INSERT INTO 表名 (各个列名)SELECT (各个列名)FROM 表名1;

第20章 更新和删除数据

  • 更新数据——UPDATE(1,更新表中所有行;2,更新表中特定行)

UPDATE 表名 SET 更新公式 where 条件

  • IGNORE关键字 ——作用是更新多个行的时候忽略可能出现的错误 UPDATE IGNORE 表名...
  • 删除数据——DELETE(1,从表中删除特定的行;2,从表中删除所有行)

DELETE FROM 表名 WHERE 条件 (使用DELETE时不能省略where 防止删除整个表)

注意:小心使用UPDATE和DELETE,因为这两个是不可逆的

第21 章 创建和操纵表

  • 创建表

例如: CREATE TABLE price

( pro_id int not null primary key auto_increment,

pro_name char(50) not null,

pro_date datetime not null)

注意:主键值必须唯一,如果主键使用单个列,则它的值必须唯一;如果使用多个列,则这些列的组合值必须唯一

允许NULL值的列不能作为唯一标志,NULL值不是空值

  • 更新表(使用ALTER时要格外小心,最好做一个备份)

ALTER TABLE 表名 ADD 列名 char(20) ——给原表增加一个新列(列名)

ALTER TABLE 表名 DROP COLUMN 列名 —— 删除表中的列(列名)

  • 删除表

DROP TABLE 表名

  • 重命名表

RENAME TABLE 表名 to 新表名

第22章 使用视图

  • 创建视图 —— CREATE VIEW 。。。。
  • 使用视图 —— SHOW CREATE VIEW viewname
  • 删除视图 —— DROP viewname
  • 视图一般用于检索而不用于更新(INSERTUPDATEDELETE)

第23章 使用存储过程

使用存储过程的好处:简单、安全、高性能

  • 创建存储过程

CREATE PROCEDURE save_name ()

BEGIN

SELECT 语句1;

SELECT 语句2;

END

  • 调用存储: CALL save_name()
  • 删除存储过程: DROP PROCEDURE save_name;
  • 带参数的存储过程: CREATE PROCEDURE save_name(参数1,参数2,参数3)

调用过程: CALL save_name(@变量1,@变量2,@变量3)

第24 章 使用游标

  • 游标(cursor)是一个存储在MySQL服务器上的数据库查询,是被SELECT语句检索数来的结果集,存储了游标后,应用程序可以根据需要滚动或者浏览其中的数据
  • 创建游标

DECLARE 游标名 CURSOR FOR SELECT语句

  • 打开或关闭游标

OPEN/CLOSE 游标名

例如:

CREATE PROCEDURE procedure_name()

BEGIN

DECLARE ordernumbers CURSOR

FOR

SELECT order_num FROM orders ;

OPEN ordernumbers ;

FETCH ordernumbers INTO o; %查询游标中的一行

CLOSE ordernumbers

END ;

第25章 使用触发器

用于数据表发生变化(DELETE、INSERT、UPDATE)时,自动执行的一条SQL语句

CREATE TRIGGER 触发器名 AFTER INSERT ON 表名 FOR EACH ROW;

CREATE TRIGGER 触发器名 BEFORE/AFTER DELETE/UPDATE ON 表名 FOR EACH ROW;

第26章 管理事物处理

事物处理可以用来维护数据库的完整性,保证成批的MYSQL操作要么全部执行,要么都不执行。

关于事物处理需要知道的术语: 事物回退提交保留点

  • 执行事物——COMMIT
  • 撤销 —— ROLLBACK
  • 保留点 —— SAVEPOINT (用于在回退时可以回退到保留点)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值