• MySQL必知必会复习笔记(1)


    MySQL必知必会笔记(一)

    MySQL必知必会是一本很优秀的MySQL教程书,并且相当精简,在日常中甚至能当成一本工作手册来查看。本系列笔记记录的是:1.自己记得不够牢的代码;2.自己觉得很重要的代码;3.方便查缺补漏。

    Unit1

    • 主键

      1.应该总是定义主键。

      2.不更新主键列中的值。

      3.不重用主键列的值。

      4.不在主键列中使用可能会更改的值。

    Unit3

    选择数据库

    USE databasename
    

    了解数据库和表

    //用show命令来显示信息
    SHOW DATABASES;
    SHOW TABLES;
    // show亦可以用来显示列, SHOW COLUMNS需要给出一个表名(customers)
    SHOW COLUMNS FROM customers;
    // mysql支持使用DESCRIBE作为show columns from 的一种快捷方式 
    SHOW STATUS  // 用于显示广泛的服务器状态信息
    SHOW CREATE DATABASE;
    SHOW CREATE TABLE;  // 分别用来显示创建特定数据库或表
    SHOW GRANTS;     // 显示授予用户的安全权限
    SHOW ERRORS;
    SHOW WARINGS;
    

    Unit4

    select语句

    select prod_name from products;
    // 输出的数据是未排序数据(瞎排的)
    // 检索多个列
    select prod_id, prod_name from products;
    // 检索所有列
    select * from products;
    // 检索不同的(唯一)的列,DISTINCT关键字
    select distinct vend_id from products;
    

    注意:不能部分使用distinct,因为distance关键字应用于所有列,如果给出select distance vendid, prodprice,除非指定的两个列都不同,否则所有行都会被检索出来。

    //限制结果(LIMIT)
    select prod_name from products limit 5;
    // 从x行开始的y行, LIMIT x,y
    select prod_name from products limit 5, 5;
    

    注意:第一行为行0

    //完全限定表名
    select products.prod_name from products;
    

    关键点:select, distance, limit

    Unit5

    数据排序

    ORDER BY子句取一个或多个列的名字,据此对输出进行排序

    select prod_name from products order by prod_name;
    

    注意:多个列排序,仅在prodprice具有多个相同值时才对prodname进行排序

    select prod_id, prod_price, prod_name 
    from products 
    order by prod_price, prod_name;
    

    注意:指定排序方向(默认是升序),使用DESC,如果想在多个列上降序,每个列都要指定DESC。

    select prod_id, prod_price, prod_name 
    from products 
    order by prod_price DESC, prod_name;
    

    //e.g. 使用order by 和limit找到最高或最低的值
    select prod_id, prod_price, prod_name
    from products
    order by prod_price DESC
    limit 1;

    关键点:order by, DESC

    Unit6

    本章重点是过滤数据,应使用where子句。

    //检查单个值
    select prod_id, prod_price, prod_name 
    from products 
    where prod_price = 2.50;
    

    注意:同时使用orderby 和 where子句时,应该让orderby位于where之后

    // 列出所有小于10的产品
    select prod_name, prod_price 
    from products 
    where prod_price < 10;
    

    //不匹配检查,列出供货商不是1003制造的产品
    select vend_id, prod_name
    from products
    where vend_id <> 1003;
    // where vend_id != 1003; 推荐用 !=

    //范围值检查(between and)
    select prod_id, prod_price, prod_name
    from products
    where prod_price between 5 and 10;

    注意:between and 关键字包含范围内所有值,包括开始值和结束值

    // 空值检测
    select cust_id
    from customers
    where cust_email is NULL;
    

    关键点: where, between and, <>

    Unit7

    操作符

    AND 和 OR 操作符

    select prod_name, prod_price
    from products
    where vend_id = 1002 or vend_id = 1003 and prod_price >= 10;
    

    注意:AND在计算次序中优先度更高 注意:任何时候使用具有AND OR操作符的where子句都应该使用圆括号明确的确定分组

    IN操作符

    select prod_name, prod_price
    from products
    where vend_id in (1002, 1003)
    order by prod_name
    

    注意:IN操作符比OR执行的更快

    NOT操作符

    select prod_name, prod_price
    from products
    where vend_id NOT IN (1002, 1003)
    order by prod_name
    

    注意:NOT 支持对IN BETWEEN 和 EXISTS子句取反

    关键点: AND, OR, IN, NOT

    Unit8

    通配符

    LIKE操作符
    // 百分号%通配符: %表示任何字符出现任意次数,0,1,或无数
    select prod_name, prod_price
    from products
    where prod_name like 'jet%';
    

    //e.g. jet开头的任意代码
    // %jet% 无论jet字符串前后出现的什么东西都能匹配出来

    注意: % 可以匹配0个字符

    // _ 下划线通配符
    // 下划线与%相似,但只匹配一个字符
    

    关键点:%, _

    Unit9

    正则表达式

    REGEXP关键字

    select prod_name, prod_price
    from products
    where prod_name regexp '1000';
    

    注意:如果匹配的东西在列值中出现,like不会返回,但是regexp会返回。

    //以下的正则表达式在实际使用中应该看见就知道什么作用
    '.000'                   //.
    '1000|2000'              //or
    '[123] Ton'             //匹配几个字符之一
    '[1-5] Ton'             //匹配范围
    '[a - z]'
    '\.'                   //匹配特殊符号
    
    • : 0个或多个
    • : 1个或多个(等于{1,})
      ? : 0个或一个(等于{0, 1})
      {n} : 指定数目匹配
      {n,} :不少于指定数目的匹配
      {n,m} : 匹配数目的范围(m不超过255)

    select prod_name, prod_price
    from products
    where prod_name regexp '([0-9] sticks?)'

    // 定位符
    ^ : 文本的开始
    $ : 文本的结尾
    [[:<:]] : 词的开始
    [[:>:]] : 词的结尾

    select prod_name, prod_price
    from products
    where prod_name regexp '[1]'//在匹配串的开始,只在.或任意数字为串中第一个字符才匹配


    1. 0-9. ↩︎

  • 相关阅读:
    Access操作必须使用一个可更新的查询
    SAP资料学习好地方
    Access关键词大全
    WPF零散笔记
    WPF:如何实现单实例的应用程序(Single Instance)
    WPF应用程序启动显示图片资源
    Drawable、Bitmap、Canvas和Paint的关系以及部分使用方法
    C#中一种可调用的异常处理方法
    easyui datagrid 点击列表头排序出现错乱的原因
    easyui datagrid 没数据时显示滚动条的解决方法
  • 原文地址:https://www.cnblogs.com/kylinxxx/p/11973249.html
Copyright © 2020-2023  润新知