mysql特殊处理
mysql> create table ef (bc time);
Query OK, 0 rows affected (0.03 sec)
mysql> insert into ef values (current_timestamp);
Query OK, 1 row affected (0.00 sec)
mysql> select * from ef;
+----------+
| bc |
+----------+
| 11:33:26 |
| 11:33:35 |
| 11:33:39 |
+----------+
3 rows in set (0.00 sec)
mysql> create table ii(qq datetime);
由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的。代替的方案是使用TIMESTAMP类型代替DATETIME类型。
CREATE TABLE test (
uname varchar(50) NOT NULL,
updatetime timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL中,默认值无法使用函数也就是你无法设置某一列,默认值是 NOW () 这样的处理
假如需要某列的默认值为当前数据库时间,那么可以使用 TIMESTAMP 数据类型。插入的时候,填写 null 即可。
mysql> create table testA ( dt TIMESTAMP );
Query OK, 0 rows affected (0.09 sec)
mysql> insert into testA VALUES( null );
Query OK, 1 row affected (0.01 sec)
mysql> insert into testA VALUES( null );
Query OK, 1 row affected (0.08 sec)
mysql> select * from testA;
+---------------------+
| dt |
+---------------------+
| 2011-10-15 20:30:35 |
| 2011-10-15 20:30:36 |
+---------------------+
2 rows in set (0.00 sec)
select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1<>2,'a'='a','a'<>'b',其目的就只有一个,where 的条件为永真,得到的结果就是未加约束条件的。
如果不写1=1呢,那么在每一个不为空的查询条件面前,都必须判断有没有where字句,否则要在第一个出现的地方加where
where 1=1的写法是为了检化程序中对条件的检测
打个比方有三个参数a, b, c
@sql=select * from tb'
这三个参数都可能为空
这时你要构造语句的话,一个个检测再写语句就麻烦
select * from account where username like "%leo.lee%";
update account set state = 1 where state != 1
select count(*) from account where state != 1;
FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件。
但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中(这一点很重要)。
使用FEDERATED建表语句如下:
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'
创建成功后就可直接在本地查询相应的远程表了。
需要注意的几点:
1.本地的表结构必须与远程的完全一样。
2.远程数据库目前仅限MySQL
3.不支持事务
4.不支持表结构修改
相关文章
- MYSQL存储过程及事件
- 【mysql+pandas】用MySQL命令处理在python中处理DataFrame数据 pandasql库
- PHP MySQL -处理语句
- c#基础之异常处理及自定义异常 从SQLServer转储数据到MySQL
- 用navicat连接数据库报错:1130-host ... is not allowed to connect to this MySql server如何处理
- 关于mysql存储过程创建动态表名及參数处理
- (转)主从同步常遇见问题处理-线上MYSQL同步报错故障处理总结
- 在 MySQL 中处理日期和时间 - 第二章节
- 在 MySQL 中处理日期和时间 - 第三章节
- MySQL 主从复制高延迟
- Mysql事物与二阶段提交
- Mysql对结果集的各种处理操作
- 【转载】 mysql explain用法
- 3.MySQL数据库的下载与安装
- mysql大数据高并发处理
- mysql group by
- 基于Java+MySQL实现燃气管进销存管理系统【100010498】
- 下一个猎杀目标:近期大量 MySQL 数据库遭勒索攻击
- mysql域名解析引起的远程访问过慢?
- 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果
- MySQL数据库服务器 主从配置
- 【MySQL】在MySQL中如何给表起别名
- 实体类中将mysql数据库中datetime类型字段所对应实体类的属性进行格式化操作
- mysql开启skip-name-resolve 导致root@127.0.0.1(localhost)访问引发的ERROR 1045 (28000)错误解决方案
- Mysql中处理1970年前的日期(unixtime为负数的情况)负数时间戳格式化
- MySQL对时间的处理总结
- mysql 分区处理数据
- MySQL具体解释(13)------------事务
- MySQL 在读取异常错误缓冲区方面的提升
- 使用systemctl启动mysql,不使用mysqld_safe
- mysql 字符串的处理
- 常用数据库高可用和分区解决方案(1) — MySQL篇
- MySQL的xml中对大于,小于,等于的处理转换