MySQL学习(day2)

今天是学习MySQL的第二天,其实今天重心并不在数据库这块,但JDBC也要开始学习了,争取明天之前看完这本书。

day 2  第12章 -第22章

第12章 汇总数据

汇聚函数

MySQL学习(day2)_第1张图片

除了COUNT(*)不忽略NULL外,其他都忽略列值为NULL的行。

聚集不同值:DISTINCT,(ALL为默认)  DISTINCT必须使用列名

MySQL学习(day2)_第2张图片

第13组 分组数据

创建分组:GROUP BY 子句(WHERE子句之后,ORDER BY 子句之前)

过滤分组:HAVING  (WHERE过滤行)

SELECT子句顺序:

MySQL学习(day2)_第3张图片

第14章 使用子查询

内部嵌套

相关子查询:涉及外部查询的子查询。

使用WHERE IN

第15章 联结表

主键 外键 

维护引用完整性

内部联结=等值联结

SELECT

FROM   INNER JOIN

ON

第16章 创建高级联结

使用表别名: AS

自联结: xx AS P1,xx AS P2;

自然联结:排除多次出现,使每个列只返回一次。(SELECT *)

外部联结:包含在相关表没有关联行的行。

LEFT/RIGHT JOIN

ON

MySQL没有*=操作符

第17章 组合查询

组合查询:并(UNION),复合查询

UNION去除了重复行 ,如果想匹配所有行, UNION  ALL

第18章 全文本搜索

常用引擎:MyISAM(支持)   InnoDB(不支持,可靠的事物处理引擎)MEMORY(数据存储在内存,速度快)

外键不能跨引擎

CREATE TABLE   (

FULLTEXT(---);

)

WHERE  Match(指定被搜索的列) Against(要使用的搜索表达式)  AS rank(优先级);

使用查询扩展:Against(要使用的搜索表达式 WITH QUERY EXPANSION);

布尔文本搜索:不用设置FULLTEXT索引,但非常缓慢,性能随着数据量的增加而下降。

Against(要使用的搜索表达式  IN BOOLEAN MODE);

MySQL学习(day2)_第4张图片

-rope*

(4.x代码更改,只能识别-ropes)

MySQL学习(day2)_第5张图片

第19章 插入数据

安全:INSERT INTO  表名

(列名)

VALUES(列名对应的值

);

NULL值(默认值)不必要的,不用赋值。

降低插入优先级:INSERT  LOW_PRIORITY  INTO

插入检索出来的值:

 INSERT SELECT

第20章 更新和删除数据

UPDATE 

SET

WHERE

无视更新时的错误

UPDATE IGNORE xx

删除某列的值,可以设置为NULL

删除数据:

DELECT FROM   (DELECT 删除整行,删除指定的列,使用UPDATE)

WHERE

删除所有行:  TRUNCATE TABLE 

第21章 创建和操纵表

CREATE TABLE  表名  IF NOT EXISTS(

.......,

PRIMARY KEY()

)ENGINE =InnoDB

自动增长: AUTO_INCREMENT:每列每当增加一行时自动增量

自动获得该值: SELECT last_insert_id()

指定默认值:DEFAULT 5,

更新表: (加列) ALTER TABLE

ADD

(删列)

ALTER TABLE

DROP

删除表:DROP TABLE 表名;

重命名表: RENAME TABLE 旧 TO 新;

第22章  使用视图

视图:包含 SQL查询,不包含具体数据行或列

创建: CREATE  VIEW   视图名  AS

查询代码块

查看创建视图的语句:SHOW  CREATE  VIEW  viewname

删除视图: DROP VIEW viewname

更新视图: 先DROP再CREATE  或:  CREATE OR REPLACE VIEW

视图中的WHERE子句与传递给视图的WHERE子句自动结合。

不允许更新视图:

分组,联结,子查询,并,聚集函数,DISTINCT,导出列

视图主要用于检索数据

第23章 使用存储过程

存储过程:为以后的使用保存一条或多条MySQL语句的集合   =批文件

简单,安全,高性能

执行存储过程:  CALL  名字(@参数名,。。。);

创建存储过程:

CREATE PROCEDURE 名字(参数)

BEGIN

.....

END

;分隔符的错误:添加 DELIMITER //头     尾   //  DELIMITER;

使用存储过程:CALL 名字(参数值);

删除存储过程:DROP 名字   IF EXISTS;

使用参数:

(OUT    )  从存储过程中传出

BEGIN

INTO .....

IN 传递给存储过程

INOUT  对存储过程传入和传出

END

MySQL变量都是以@开始的。

显示检索数据: SELECT @xx

建立智能存储过程:

MySQL学习(day2)_第6张图片

 

COMMENT: 在SHOW PROCEDURE STATUS结果中显示

检查存储过程: SHOW CREATE PROCEDURE  (like '名字')名字;

SHOW PROCEDURE STATUS:列出所有存储过程  什么时候,由谁创建等信息。

SHOW PROCEDURE STATUS like '名字'  ;   过滤模式

你可能感兴趣的:(MySQL学习(day2))