今天是学习MySQL的第二天,其实今天重心并不在数据库这块,但JDBC也要开始学习了,争取明天之前看完这本书。
day 2 第12章 -第22章
第12章 汇总数据
汇聚函数
除了COUNT(*)不忽略NULL外,其他都忽略列值为NULL的行。
聚集不同值:DISTINCT,(ALL为默认) DISTINCT必须使用列名
第13组 分组数据
创建分组:GROUP BY 子句(WHERE子句之后,ORDER BY 子句之前)
过滤分组:HAVING (WHERE过滤行)
SELECT子句顺序:
第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);
-rope*
(4.x代码更改,只能识别-ropes)
第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
建立智能存储过程:
COMMENT: 在SHOW PROCEDURE STATUS结果中显示
检查存储过程: SHOW CREATE PROCEDURE (like '名字')名字;
SHOW PROCEDURE STATUS:列出所有存储过程 什么时候,由谁创建等信息。
SHOW PROCEDURE STATUS like '名字' ; 过滤模式