mysql必知必会学习笔记

时间:2022-09-16 10:48:08

第一章:了解MySQL

  1. 数据库(database): 保存有组织的数据的容器(通常是一个文
    件或一组文件),相当于文件柜。
    通常的数据库软件应称为DBMS(数据库管理系统),数据库是通过DBMS创建和操纵的容器。
    表(table) 某种特定类型数据的结构化清。
  2. 主键: 唯一标识表中每行的这个列(或这组列)。主键列不允许NULL值;不更新主键列中的值;不重用主键列的值;不在主键列中使用可能会更改的值。
  3. 查看当前使用的数据库:select database();

第二章:MySQL简介

  1. 查看数据库并发数:show status like 'Threads%';(多好空闲线程/激活线程等)

第三章:使用MySQL

  1. 查看表中字段: show columns from table_name/desc table_name;
  2. 显示广泛的服务器状态信息:show status;
  3. 显示建表建库语句:SHOW CREATE DATABASE和SHOW CREATE TABLE
  4. 显示服务器错误或警告消息:SHOW ERRORS和SHOW WARNINGS
  5. 来显示授予用户的安全权限:SHOW GRANTS
  6. mysql帮助:help contents(总目录) / help xxx(详细帮助)
  7. SQL在处理OR操作符前,优先处理AND操作符, AND在计算次序中优先级更高。
  8. %:表示任何字符出现任意次数,但是不能匹配NULL。
  9. _:只匹配单个字符
  10. Concat: 字符串链接函数

第四章:MySQL函数

    • 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。
    • 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。
  1. sum/max/min/avg/ 函数忽略列值为NULL的行。
  2. WHERE过滤行,而HAVING过滤分组(配合group by), 其他的用法完全一致. WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤
  3. 一般在使用GROUP BY子句时,应该也给
    ORDER BY子句。这是保证数据正确排序的唯一方法。千万不要仅依赖GROUP BY排序数据
  4. 顺序: select -> from -> where -> group by -> having -> order by -> limit

第四章:Join

  1. 写法(表之间的关系):

    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

  2. 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

  1. insert可省略的列必须满足以下某个条件。
    (1)该列定义为允许NULL值(无值或空值)。
    (2)在表定义中给出默认值。这表示如果不给出值,将使用默认值。如果对表中不允许NULL值且没有默认值的列不给出值,则
    MySQL将产生一条错误消息,并且相应的行插入不成功。
  2. INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name
  3. select last_insert_id()返回最后一个AUTO_INCREMENT值
  4. 数据库开发人员使用默认值而不是NULL列,MySQL不允许使用函数作为默认值,它只支持常量.
  5. 使用ALTER TABLE要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份),理想状态下,当表中存储数据以后,该表就不应该再被更新。
  6. froeign key : 如果一个实体的某个字段指向另一个实体的主键,就称为外键.
    参考文献: froeign key
  7. 视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。视图提供了一种MySQL的SELECT语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。
  8. 所有MySQL变量都必须以@开始

第五章:事务

  1. 事务处理中不能回退CREATE或DROP操作。事务处理块中可以使用这两条语句,但如果你执行回退,它们不会被撤销。
  2. SHOW CHARACTER SET / show variables like `character%` 字符集
    SHOW COLLATE/ show variables like `collation%` 校对规则(比较规则)
    区分大小写(由_cs表示),不区分大小写(由_ci表示)。校对在对用ORDER BY子句检索出来的数据排序时起重要的作用,可以在select语句中为字段单独临时指定校对规则.
  3. show grants for username 查看赋予用户账号的权限。
  4. 为了保证所有数据被写到磁盘(包括索引
    数据),可能需要在进行备份前使用FLUSH TABLES语句
  5. LIKE和REGEXP的不同在于,LIKE匹配整个串而REGEXP匹配子串。
    可以在不使用数据库表的情况下用SELECT来测试正则表达式。REGEXP检查总是返回0(没有匹配)或1(匹配)。可以用带文字串的REGEXP来测试表达式,并试验它们。相应的语法如下:Select 'Hello ' regrexp '^x'