• 马哥学习笔记十五——MySQL进阶之SQL语句


    数据库:

      create database|schema [if not exists] db_name [character set =] [collate =];

      alter database

      drop {database | schema} [if exists] db_name;

    表:

      1、直接定义一张空表;
      2、从其它表中查询出数据,并以之创建新表;
      3、以其它表为模板创建一个空表;

      CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_defination, constraint )

      CREATE TABLE tb1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL)  ENGINE [=] engine_name;

      CREATE TABLE tb2 (id INT UNSIGNED NOT NULL AUTO_INCREMENT, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL, PRIMARY KEY(id),UNIQUE KEY(name),INDEX(age));

      单字段:  PRIMARY KEY  UNIQUE KEY

      单或多字段:  PRAMARY KEY (col,...)  UNIQUE KEY (col,...)  INDEX (col,...)

    键也称作约束,可用作索引,属于特殊索引(有特殊限定):B+Tree

    SHOW INDEXES FROM tb_name:显示指定表上的索引

    索引创建:
      CREATE INDEX index_name ON tb_name (col,...);

      col_name [(length)] [ASC | DESC]

    查询语句类型:

      简单查询

      多表查询

      子查询

    SELECT field1,field2 FROM tb_name; 投影

    SELECT [DISTINCT] * FROM tb_name WHERE qualification; 选择

      distinct:相同的值只显示一次

    FROM子句: 要查询的关系         表、多个表、其它SELECT语句

    WHERE子句:

      布尔关系表达式  =、>、>=、<=、<  

      逻辑关系:   AND   OR   NOT

      BETWEEN ... AND ...  

      LIKE ‘’   

        %: 任意长度任意字符   

        _:任意单个字符  

      REGEXP, RLIKE:支持正则表达式

      IN:离散取值

      IS NULL  

      IS NOT NULL

    ORDER BY field_name {ASC|DESC}:将查询后的数据进行排序

    字段别名:AS

    LIMIT子句:LIMIT [offset,]Count

    聚合函数:SUM(), MIN(), MAX(), AVG(), COUNT()

    GROUP BY: 分组  

      HAVING qualification:对分组过滤

    多表查询:
      连接:
        交叉连接:笛卡尔乘积
        自然连接:
        外连接:
          左外连接:... LEFT JOIN ... ON ...
          右外连接: ... RIGHT JOIN ... ON ...
        自连接:

    子查询:  

      比较操作中使用子查询:

      子查询只能返回单个值;  

      IN(): 使用子查询;  

      在FROM中使用子查询;

    联合查询:  UNION

    视图: 存储下来的SELECT语句;  

      基于基表的查询结果;

      VIEW

      CREATE VIEW

      物化视图:SELECT

    SHOW CREATE:显示创建过程

    mysql -e 'SQL语句':在shell命令函中执行SQL语句

    广义查询:

      DML:  

        DELETE  

        INSERT INTO  

        UPDATE

    INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, val2, ...),...]

      字符型:单引号  

      数值型:不需要引号  

      日期时间型:  

      空值:NULL, ''

    REPLACE INTO

    DELETE:  DELETE FROM tb_name WHERE condition;

    TRUNCATE tb_name: 清空表,并重置AUTOINCREMENT计数器;

    UPDATE tb_name SET col1=..., col2=... WHERE

  • 相关阅读:
    BZOJ 4032: [HEOI2015]最短不公共子串 (dp*3 + SAM)
    后缀自动机详解!
    BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机 多串)
    BZOJ 3938 Robot
    [JSOI2008]Blue Mary开公司
    [ZJOI2017]树状数组
    [JSOI2015]非诚勿扰
    [HNOI2011]任务调度
    BZOJ 3680 吊打XXX
    POJ 3318 Matrix Multiplication
  • 原文地址:https://www.cnblogs.com/wangyongbin/p/3728260.html
Copyright © 2020-2023  润新知