• MySQL学习笔记_时间,多表更新,数据库元数据


    MySQL技术内幕
    一、MySQL基础知识
    1.1、显示表中的列
    SHOW COLUMNS FROM order_info like 'order%'
    1.2、显示表
    SHOW TABLES LIKE 'order%';
    1.3、限制返回行数
    例如从第10行开始返回5个记录
    SELECT last_name FROM student ORDER BY birth DESC LIMIT 10,5;
    1.4、时间相关
    SELECT
    CURDATE() AS 当前日期,
    YEAR(NOW()) AS 年,

    QUARTER(NOW()) AS 季节,
    MONTH(NOW()) AS 月,
    DAYOFMONTH(NOW()) AS 日,
    DATE_ADD(NOW(),INTERVAL 10 DAY) 日期添加,
    DATE_ADD(NOW(),INTERVAL 10 MONTH) 月份添加,
    DATE_ADD(NOW(),INTERVAL -2 YEAR) 年份添加,
    DATE_SUB(NOW(),INTERVAL 10 YEAR) 年份添加2,
    TO_DAYS(NOW()) - TO_DAYS('2015-08-01') AS 日期相减,
    TIMESTAMPDIFF(DAY,NOW(),'2015-08-01')AS 日期相减2,
    UNIX_TIMESTAMP(NOW()) AS 时间 戳 ,
    FROM_UNIXTIME(1439869720) 时间戳转,
    STR_TO_DATE('2008-4-2 15:3:28','%Y-%m-%d %H:%i:%s') AS 时间
    二、使用SQL管理数据
    2.1、大小写:
    数据库,数据表和视图的名字由服务器的操作系统规定(Windows不区分,Unix区分)
    关键字和函数名不区分大小写,
    存储函数、存储过程和事件的名字不分大小写,
    数据列和索引的名字不区分大小写,
    触发器的名字要区分大小写,
    数据表的别名最好保存同样的的字母大小写组合
    2.2、快速建表
    CREATE TABLE kehu_20150819 LIKE kehu -- 只复制数据结构
    CREATE TABLE kehu_20150818 AS SELECT * FROM kehu -- 复制表结构和数据
    2.3、获取数据库元数据
    列出数据库
    SHOW DTABASES;
    列出默认数据库或者给定数据库的表
    SHOW TABLES;
    SHOW TABLES FROM db_name;
    查看数据表的create table语句
    SHOW CREATE TABLE tbl_name;
    查看数据表的数据列或者索引信息
    SHOW COLUMNS FROM tbl_name;
    SHOW INDEX FROM tbl_name;
    最好的方法查询information_schema库
    2.4、涉及多个数据包的删除和更新
    2.4.1 一次删除多个数据表的数据行
    DELETE t1,t2 FROM t1 INNER JOIN t2 ON t1.id = t2.id;
    或者
    DELETE FROM t1,t2 USING t1 INNER JOIN t2 ON t1.id = t2.id;
    2.4.2 从数据表找出兵删除数据行
    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id =t2.id WHERE t2.id IS NULL;
    或者
    DELETE FROM t1 USING t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;
    2.4.3 更新单表
    UPDATE score ,grade_event SET score.score =score.score +1
    WHERE score.event_id = grade_event.event_id
    AND grade_event.date = '2015-08-01' ;
    或者
    UPDATE score SET score =score +1
    WHERE event_id = (SELECT event_id FROM grade_event WHERE date = '2015-08-01' );
    必须用到2.4.1写法的情况:
    UPDATE t1,t2 SET t2.a = t1.a WHERE t2.id = t1.id;
    三、数据类型
    坐标值 POINT(10 20)
    空值 NULL "N"解释为NULL
    SELECT
    INET_ATON('192.168.1.1') AS IP转整数,
    INET_NTOA(3232235777) AS 整数转IP;
    四、查询优化
    索引类型:
    hash index 散列索引在使用"="或者"<=>"操作符进行的精确匹配比较操作速度快,但是在查找一个范围的
    比较操作表现不佳,例如 id< 50 weight BETWEEN 100 AND 150
    bit tree index 在使用<,<=,=,>=,>,<>,!=和BETWEEN 进行的精确操作比较或者范围比较操作里很有效率。

  • 相关阅读:
    Hbase架构与原理(转)
    Hbase的表结构中rowkey的设计---避免热点问题
    mysql之my.cnf详解
    MongoDB CPU利用率很高,怎么破(转)
    数据库设计(2/9):域,约束和默认值(Domains, Constraints and Defaults)
    数据库设计(1/9):数据元(Data Elements)
    SQL Server安全(11/11):审核(Auditing)
    VARCHAR列上的索引
    SQL Server 2016里的sys.dm_exec_input_buffer
    在SQL Server里禁用聚集索引——真的好么?
  • 原文地址:https://www.cnblogs.com/kenwong/p/4736190.html
Copyright © 2020-2023  润新知