第一章:了解MySQL
- 数据库(database): 保存有组织的数据的容器(通常是一个文
件或一组文件),相当于文件柜。
通常的数据库软件应称为DBMS(数据库管理系统),数据库是通过DBMS创建和操纵的容器。
表(table) 某种特定类型数据的结构化清。 - 主键: 唯一标识表中每行的这个列(或这组列)。主键列不允许NULL值;不更新主键列中的值;不重用主键列的值;不在主键列中使用可能会更改的值。
- 查看当前使用的数据库:
select database();
第二章:MySQL简介
- 查看数据库并发数:
show status like 'Threads%';
(多好空闲线程/激活线程等)
第三章:使用MySQL
- 查看表中字段:
show columns from table_name/desc table_name;
- 显示广泛的服务器状态信息:
show status;
- 显示建表建库语句:
SHOW CREATE DATABASE和SHOW CREATE TABLE
- 显示服务器错误或警告消息:
SHOW ERRORS和SHOW WARNINGS
- 来显示授予用户的安全权限:
SHOW GRANTS
- mysql帮助:
help contents(总目录) / help xxx(详细帮助)
- SQL在处理OR操作符前,优先处理AND操作符, AND在计算次序中优先级更高。
-
%:
表示任何字符出现任意次数,但是不能匹配NULL。 -
_:
只匹配单个字符 Concat: 字符串链接函数
第四章:MySQL函数
-
- 使用
COUNT(*)
对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。 - 使用
COUNT(column)
对特定列中具有值的行进行计数,忽略NULL值。
- 使用
-
sum/max/min/avg/
函数忽略列值为NULL的行。 -
WHERE
过滤行,而HAVING
过滤分组(配合group by
), 其他的用法完全一致. WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤 - 一般在使用GROUP BY子句时,应该也给
出ORDER BY
子句。这是保证数据正确排序的唯一方法。千万不要仅依赖GROUP BY排序数据 - 顺序:
select -> from -> where -> group by -> having -> order by -> limit
第四章:Join
- 写法(表之间的关系):
select t1.x , t2.y from t1,t2 where t1.x=t2.x
select t1.x , t2.y from t1 inner join t2 on t1.x=t2.x
- join 用于多表中字段之间的联系,语法:
... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona.
table1:左表;table2:右表。
JOIN 按照功能大致分为如下三类:- INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。
- LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录。
- RIGHT JOIN(右连接):与 LEFT JOIN相反,取得右表(table2)完全记录,即是左表(table1)并无匹配对应记录。
3.
UNION/UNION ALL
: UNION
用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。当 ALL
随 UNION 一起使用时(即 UNION ALL),不消除重复行.第五章:insert
- insert可省略的列必须满足以下某个条件。
(1)该列定义为允许NULL值(无值或空值)。
(2)在表定义中给出默认值。这表示如果不给出值,将使用默认值。如果对表中不允许NULL值且没有默认值的列不给出值,则
MySQL将产生一条错误消息,并且相应的行插入不成功。 INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name
-
select last_insert_id()
返回最后一个AUTO_INCREMENT值 - 数据库开发人员使用默认值而不是NULL列,MySQL不允许使用函数作为默认值,它只支持常量.
- 使用
ALTER TABLE
要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份),理想状态下,当表中存储数据以后,该表就不应该再被更新。 -
froeign key
: 如果一个实体的某个字段指向另一个实体的主键,就称为外键.参考文献: froeign key
- 视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。视图提供了一种MySQL的SELECT语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。
- 所有MySQL变量都必须以@开始
第五章:事务
- 事务处理中不能回退CREATE或DROP操作。事务处理块中可以使用这两条语句,但如果你执行回退,它们不会被撤销。
-
SHOW CHARACTER SET / show variables like `character%`
字符集SHOW COLLATE/ show variables like `collation%`
校对规则(比较规则)
区分大小写(由_cs
表示),不区分大小写(由_ci
表示)。校对在对用ORDER BY子句检索出来的数据排序时起重要的作用,可以在select语句中为字段单独临时指定校对规则. -
show grants for username
查看赋予用户账号的权限。 - 为了保证所有数据被写到磁盘(包括索引
数据),可能需要在进行备份前使用FLUSH TABLES
语句 -
LIKE和REGEXP
的不同在于,LIKE匹配整个串而REGEXP匹配子串。
可以在不使用数据库表的情况下用SELECT来测试正则表达式。REGEXP检查总是返回0(没有匹配)或1(匹配)。可以用带文字串的REGEXP来测试表达式,并试验它们。相应的语法如下:Select 'Hello ' regrexp '^x'