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 进行的精确操作比较或者范围比较操作里很有效率。
MySQL学习笔记_时间,多表更新,数据库元数据的更多相关文章
- MySQL学习笔记_4_MySQL创建数据表(下)
MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...
- MySQL学习笔记_2_MySQL创建数据表(上)
MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...
- MySQL学习笔记_3_MySQL创建数据表(中)
MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] ...
- MySQL学习笔记2(多表操作)
外键:使两张表之间存在关联 特点: 1.从表外键的值是对主表主键的引用 2.从表外键类型,必须与主表主键类型一致 示例: 创建两个表并准备数据: USE mybase; CREATE TABLE ca ...
- MySQL学习笔记:从一个表update到另外一个表
# ---- 测试数据 ---- # 表1 CREATE TABLE temp_x AS AS c_id, 1.11 AS c_amount FROM DUAL UNION ALL AS c_id, ...
- MySQL学习笔记:生成时间维度表
# ---- 对应时间戳怎么生成的? ---- /*TIME_CD TIME_CD1000000 000005000001 000005000002 000005000003 000005000004 ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- 一千行MySQL学习笔记 (转)
出处: 一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
随机推荐
- P2627 修剪草坪 (单调队列优化$dp$)
题目链接 Solution 70分很简单的DP,复杂度 O(NK). 方程如下: \[f[i][1]=max(f[j][0]+sum[i]-sum[j])\]\[f[i][0]=max(f[i-1][ ...
- Android中对Apk加固(加壳)续篇之---对Native层(so文件)进行加固
有人说Android程序用Java代码写的,再怎么弄都是不安全的,很容易破解的,现在晚上关于应用加固的技术也很多了,当然这些也可以用于商业发展的,梆梆加密和爱加密就是很好的例子,当然这两家加固的Apk ...
- php面向对象三大特性
1.封装: 目的:使类更加安全 步骤:1.成员变量变成private(私有的)2.设置方法/调用方法3.在方法中增加限制 <?php class shao { private $aa;//必须是 ...
- Recurrent Neural Network(2):BPTT and Long-term Dependencies
在RNN(1)中,我们将带有Reccurent Connection的node依照时间维度展开成了如下的形式: 在每个时刻t=0,1,2,3,...,神经网络的输出都会产生error:E0,E1,E2 ...
- Js类的静态方法与实例方法区分以及jQuery如何拓展两种方法
上学时C#老师讲到对象有两类方法,静态方法(Static)和实例方法(非Static),当时不理解静态是为何意,只是强记. 后来从事前端工作,一直在对类(即对象,Js中严格来说没有类的定义,虽众所周知 ...
- StringBuilder -字符串缓冲区,节约内层空间变长数组
package cn.learn; /* 字符串缓冲区 -缓冲可提高效率 java.lang.StringBuilder 字符串的底层是一个被final修饰的数组,不能改变,是一个常量 private ...
- 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name
HTTP Status 500 - Servlet.init() for servlet mybatis threw exception type Exception report message S ...
- Warning: session_start(): open(/var/lib/php/session/)
Warning: session_start(): open(/var/lib/php/session/) 今天放置一个新的站点www.96net.com.cn在里面,登陆后台出现这种错,之后再lin ...
- struts2 基础学习
Struts 2是在WebWork2基础发展而来的. 注意:struts 2和struts 1在代码风格上几乎不一样. Struts 2 相比Struts 1的优点: 1.在软件设计上Struts ...
- PHP中redis加锁和解锁的简单实现
背景说明 在程序开发过程中,通常会遇到需要独占式的访问一些资源的情形,比如商品秒杀时扣减库存.这时就需要对资源加锁.实现锁的方式有很多,比如数据库锁.文件锁等等.本文简单介绍PHP中使用redis来实 ...