《MySQL必知必会》读书笔记1

第一到三章:了解SQL、MySQL简介、使用MySQL

  • 数据库: DB
    • 模式 -> 什么是模式?
    • 数据类型
    • 主键
  • 数据库管理系统: DBMS(比如MySql)
  • SQL: 一种与数据库通信的结构化查询语言
  • MySQL: 一个数据库软件
  • MySQL工具: MySQL命令行实用程序、 MySQL Administrator、 MySQL Query Browser
  • 连接和登录数据库
    • 主机名(本地localhost)
    • 端口(默认3306)
    • 合法的用户名
    • 密码
  • 选择数据库
  • 查看表
  • 查看列
    • desc table; 或者 show column from table;
  • 其他show 语句: help show;
    • show status; //获取服务器状态信息
    • show create database; show create table; //显示创建数据库或者表的mysql语句
    • show grants; //显示授予用户的安全权限
    • show errors; show warnings; //显示服务器错误或者警告消息
  • infomation_schema: 获得和过滤模式信息

第四章:检索数据

  • SELECT

    • 想选择什么?
    • 想从什么地方选择?
  • 检索一个列

    • SELECT name FROM tb_student;
  • 检索多个列

    • SELECT name, age FROM tb_student;
  • 检索所有列

    • SELECT * FROM tb_student;
  • 检索不同的行(去重)

    • DISTINCT
    • SELECT address FROM student;
    • SELECT address, department FROM student;(每行都不同才算重复)
  • 限制结果

    • LIMIT 5 :表示返回不超过5条数据
    • LIMIT 5, 3 :表示返回从第3行开始的5条数据
    • SELECT * FROM student LIMIT 5, 3;
  • 完全限定的表名

    • 可以使用 表名.列名 和 数据库名.表名 限定
    • SELECT student.name FROM crashcource.student;

第五章:排序检索数据

  • ORDER BY 字句 (order by 对文本的排序取决于数据库设置)
    • SELECT* FROM student ORDER BY birth; //把检索出来的结果按birth排序
  • 按多个列排序
    • SELECT * FROM student ORDER BY address, birth; //先按address排序,再按birth排序
  • ORDER BY 默认是升序(从A到Z),指定 DESC 关键字是降序。
    • SELECT * FROM student ORDER BY birth DESC;
  • 多列降序排序
    • SELECT * FROM student ORDER BY birth DESC, address; //先按birth降序排列,birth一样的再按address排列
  • ORDER BY 和 LIMIT 的组合
    • SELECT birth FROM student ORDER BY birth DESC LIMIT 1; //找出年纪最小的出生年份

第六章:过滤数据(WHERE字句)

  • WHERE字句操作符 = != < > >= <=

    • <> 不等于
    • BETWEEN AND 在指定的两个值间
    • SELECR * FROM student WHERE name='小明';
    • SELECR * FROM student WHERE birth BETWEEN 1990 AND 1999;

    操作符后面是数值不需要单引号,如果是字符,就需要单引号

    • 检查空值
    • SELECR * FROM student WHERE birth IS NULL; //检索出生日期是空的学生

第七章:数据过滤(高级搜索条件)

  • 逻辑操作符
    • AND 与 (优先级更高)
    • OR 或
      • WHERE 可以包含任意条 AND 或者 OR 操作符,不过要注意优先级,加上小括号消除歧义
    • IN 指定范围的匹配,跟 OR 功能一致,不过检索效率比 OR 更高
      • SELECR * FROM student WHERE id IN (1,2,3); //查询id=1、2、3的记录
    • NOT 取反
      • 否定后面的条件
      • SELECR * FROM student WHERE id NOT IN (1,2,3); //查询id=1、2、3以外的记录

第八章:通配符

  • LIKE 操作符
  • % 通配符:任何字符出现任意次数(可以区分大小写,怎么区分?)
    • SELECT * FROM student WHERE name LIKE '谢%'; //检索出名字以'谢'开头的所有人
  • _ 通配符:只能匹配单个字符
  • 注意事项:
    • 不要过度使用通配符,能用其他操作符代替就使用其他操作符
    • 除非必须,不要把通配符放在搜索模式的开始处,效率最低

第九章:正则表达式

  • 需要学习正则表达式的语法和规则

  • REGEXP 操作符

    • SELECT * FROM student WHERE name REGEXP '.岳';
  • 区分大小写

    • 默认是不区分的
    • 要区分的话需要加上 BINARY 关键字
      • SELECT * FROM student WHERE name REGEXP BINARY '.yue';
  • OR 匹配

    • REGEXP '1000 | 2000'
  • 匹配几个字符之一

    • REGEXP '[123]' 相当于 '1|2|3'
  • 匹配范围

    • [0123456789] 相当于 [0-9]
  • 匹配特殊字符(转义)

    • 正则表达式里面有一些特殊字符,要匹配这些特殊字符的时候,需要加上双反斜杠 \\ 在前面转义
      • \\. \\- \\| \\[ \\] \\\
    • \\f 换页
    • \\n 换行
    • \\r 回车
    • \\t 制表
    • \\v 纵向制表
  • 匹配字符类

    • 常见的一些组合的匹配
    • [:alnum:] 任意字母和数字,同[a-zA-Z0-9]
    • [:alpha:] 任意字母,同[a-zA-Z]
    • [:blank:] 空格和制表,同[\t]
    • [:cntrl:] ASCII控制字符(ASCII 0到31和127)
    • [:digit:] 任意数字,同[0-9]
    • [:graph:] 任意可打印字符,除了空格
    • [:lower:] 任意小写字母,同[a-z]
    • [:print:] 任意可打印字符
    • [:punct:] 既不在 [:alnum:] 也不在 [:cntrl:] 中的任意字符
    • [:space:] 包括空格在内的任意空白字符,同[\\f\\n\\r\\t\\v]
    • [:upper:] 任意大写字母,同[A-Z]
    • [:xdigit:] 任意十六进制数字,同[a-fA-F0-9]
  • 重复元字符

    • * 任意个
    • + 1个或者多个,同 {1,}
    • ? 0个或者1个,同 {0,1}
    • {n} 指定数目的匹配
    • {n,} 不少于指定数目的匹配
    • {n,m} 匹配数目的范围(m不超过255)
  • 定位符

    • ^ 文本的开始

    • $ 文本的结尾

    • [[:<:]] 词的开始

    • [[:>:]] 词的结尾

      • REGEXP '^[0-9\.]' 匹配任意数字或者.开头的记录

你可能感兴趣的:(《MySQL必知必会》读书笔记1)