- 浏览: 203085 次
- 性别:
- 来自: 重庆
文章分类
最新评论
一。not null vs DEAFUL value
在建表的时候,通常会要求给所有字段一个默认值,1来避免产生null字段,2来还可以在写代码的时候偷下懒。
case1: not null +default
于是这样的create sql就出来了
- DROP TABLE IF EXISTS `zhushan`.`admin`;
- CREATE TABLE `zhushan`.`admin` (
- `admin_id` int(10) unsigned NOT NULL auto_increment,
- `name` varchar(20) NOT NULL default 'admin',
- `pwd` varchar(20) NOT NULL default 'amdin',
- PRIMARY KEY (`admin_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
好,我一直以为这样是: name/pwd 字段不能为空,并且插入null的话,会默认填写admin
那么测试一下:
Column 'name' cannot be null .
实际上在Mysql指定列 not null 的时候,其含义是插入sql中,该字段值不能为null!!后面的default 也就不会执行了。因此在写了default value之后,还是需要把not null 去掉的。
case2: default ,没有not null
- DROP TABLE IF EXISTS `zhushan`.`admin`;
- CREATE TABLE `zhushan`.`admin` (
- `admin_id` int(10) unsigned NOT NULL auto_increment,
- `name` varchar(20) default 'admin',
- `pwd` varchar(20) default 'amdin',
- PRIMARY KEY (`admin_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
同样使用上面的sql进行插入:
得到的结果居然更恶心:default字段失效了!插入null居然直接赋值成null了
- mysql> SELECT * FROM admin a;
- +----------+-------+-------+
- | admin_id | name | pwd |
- +----------+-------+-------+
- | 1 | NULL | 2 |
- +----------+-------+-------+
case3: default /not null 其实都不能解决问题,最简单的办法就是全部not null + default, 对需要取默认值的字段,insert语句直接跳过该字段(类似case1,2中的admin_id),这样就会取到默认值了
二。行锁
InnoDB 行锁是通过给索引上的索引项加锁来实现的,这一点 MySQL 与 ORACLE 不同,后者是通过在数据块中对相应数据行加锁来实现的。 InnoDB 这种行锁实现特点意味着:只有通过索引条件检索数据, InnoDB 才使用行级锁,否则, InnoDB 将使用表锁!这里讲的很清楚 http://blog.chinaunix.net/u2/69385/showart_1852286.html
由于作者没有写是mysql4,还是mysql5,于是自己在 Mysql5下测试了一把,发现还是这样。
- Session1:
- mysql> set autocommit=0; //不自动提交
- Query OK, 0 rows affected (0.00 sec)
- mysql> SELECT * FROM account_seller t where issue_day = 0 for update;
- 4 rows in set (0.00 sec)
- Session2: //session2这里就等待了
- SELECT * FROM account_seller t where issue_day = 300 for update
- !Lock wait timeout exceeded; try restarting transaction
三。varchar
CHAR 和VARCHAR 类型声明的长度表示你想要保存的最大字符数.
gbk定义的VARCHAR(5), 可以装下多少东西呢???
可以放下5个1 '11111',也可以放下‘我是个坏人’,但是绝对放不下'123456'.
发表评论
-
分页,MySQL的SQL_CALC_FOUND_ROWS
2012-12-17 16:44 1346FOUND_ROWS() 函数 ,可以在调用包含LIMIT的 ... -
使用mysql的last_insert_id() 产生自增的id
2012-12-17 15:48 1085刚才查了下last_insert_id()相关资料,找到几篇不 ... -
innodb的记录锁、gap锁、next-key锁
2012-12-17 13:45 1388相关文章见: http://dev.mysql ... -
MySQL Innodb表死锁情况分析与归纳(转载)
2012-12-14 16:22 1940案例描述 在定时脚本运行过程中,发现当 ... -
MySQL连接超时
2012-12-13 20:41 1113在负载较重的MySQL服务器上,有时你偶尔会看到一些 ... -
mysql优化索引 —— Using filesort
2012-12-11 12:13 820用Explain分析SQL语句的时候,经常发现有的语句在 ... -
IN条件结果顺序问题
2012-11-23 14:42 664项目中需要记录用户的浏览历史,我的意见是前端直接存cook ... -
关于mysql auto_increment所带来的锁表操作
2012-09-01 14:00 1606以前内容主要是对官方文档中的意译,并加入了一些自己的理解 ... -
mysql 与unicode
2012-08-29 15:36 1682UTF8字符集(转换Unicode表示)是存储Unico ... -
深入Mysql字符集设置
2012-08-29 14:46 56105 Jan 08 深入Mysql字符集设置 ... -
关于set names
2012-08-29 14:37 809<?php$conn=mysql_connect( ... -
MYSQL索引优化和in or替换为union all
2012-08-22 17:16 4043一个文章库,里面有两个表:category和article。c ... -
mysql读写分离(PHP类)
2012-08-18 18:08 3609自己实现了php的读写 ... -
mysql分表的3种方法
2012-08-02 14:39 831当一张的数据达到几百万时,你查询一次所花的时间会变多,如 ... -
MySql BLOB类型
2012-08-02 13:42 710MySql的Bolb四种类型 MySQL中,BLOB是一个二进 ... -
MySQL 查询优化技巧
2012-07-18 20:26 756瓶颈 众所周知,几乎所有大型项目的最终效率瓶颈,都来自 ... -
mysql多表联合查询
2012-07-18 19:16 1638我在工作中天天研究zen cart的程序,那个叫人痛苦,最近比 ...
相关推荐
`id` varchar(6) NOT NULL COMMENT '主键', `name` varchar(30) NOT NULL COMMENT '名称', `parent_id` int(11) NOT NULL COMMENT '归属ID', `short_name` varchar(30) NOT NULL COMMENT '简短名称', `level_...
java+mySQL进销存管理系统包括源码与mysql数据库 详情见压缩文件 其中摘出一个mysql表: create database njue; use njue; /*MySQL数据库运行脚本*/ CREATE TABLE tb_customer( id char(10) primary key, ...
CREATE TABLE BOOK( BOOKID VARCHAR(50) PRIMARY KEY NOT NULL, BOOKID VARCHAR(50) PRIMARY KEY NOT NULL, WRITER VARCHAR(50) NOT NULL, PRESS VARCHAR(50) NOT NULL, PUBTIME DATETIME NOT NULL, PUBNUM INT NOT...
`name` varchar(255) NOT NULL DEFAULT '', `parent_id` smallint(6) NOT NULL DEFAULT '0' COMMENT '上级', `english_name` varchar(255) NOT NULL DEFAULT '' COMMENT '英文名', `letter2` varchar(255) NOT NULL ...
主要介绍了Mysql中varchar长度设置方法的相关资料,本文还给大家带来了valar类型的变化及char()和varchar()的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下
数据库设计:库mydb 表events <br>EVENT_ID BIGINT(20) NOT NULL AUTOINC EVENT_DATE DATETIME NULL title VARCHAR(255) NULL <br> <br>2. 注意文件的位置 <br>3. tomcat中配jdbc就不用说了, ...
`name` varchar(255) NOT NULL DEFAULT '', `parent_id` smallint(6) NOT NULL DEFAULT '0' COMMENT '上级', `english_name` varchar(255) NOT NULL DEFAULT '' COMMENT '英文名', `letter2` varchar(255) NOT ...
book: 列名 数据类型 是否为空/性质 说明 book_id int not null / PK 唯一书籍序号 book_name varchar not null 书籍名称 book_author varchar not null 书籍作者 图书管理系统数据库设计-MYSQL实现全文共10页,当前...
ALTER TABLE `ecs_brand` ADD COLUMN `brand_banner` VARCHAR(80) NOT NULL COMMENT '商品品牌banner'; ALTER TABLE `ecs_goods` ADD COLUMN `sales_count` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `click_...
`name` varchar(16) NOT NULL default '无名老饕', `password` varchar(16) NOT NULL default '', `power` int(2) NOT NULL default '0', `image` varchar(100) default 'D:\\Code_Maker\\eclipse9.0\\test\\Web...
在本篇文章中我们给大家分享了关于MySQL中int、char以及varchar的性能对比的相关内容,有兴趣的朋友们学习下。
消息聊天系统MySQL表设计_消息系统数据库设计 1、新建platform_info表,此表存储调⽤消息平台⽅应⽤信息 CREATE TABLE IF NOT EXISTS `platform_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `platform_code` ...
not null NICK_NAME varchar(50) not null BIRTHDAY date not null 0000-00-00 MINISTRATION varchar(50) not null MATE varchar(50) not null CHILD varchar(50) not null DEPT_NAME varchar(50) not null ADD_DEPT...
`zi` varchar(6) NOT NULL DEFAULT '' COMMENT '汉字', `py` varchar(32) NOT NULL DEFAULT '' COMMENT '无声调拼音', `pinyin` varchar(64) NOT NULL DEFAULT '' COMMENT '有声调拼音', `bihua` tinyint(4) NOT...
列名 数据类型 是否为空/性质 说明 stu_id int not null /PK 标明学生唯一学号 stu_name varchar not null 学生姓名 stu_sex varchar not null 学生性别 stu_age int not null 学生年龄 stu_pro varchar not null ...
* 0 译者序 * 1 MySQL的一般的信息 ... # 7.3.7.1 CHAR和VARCHAR类型 # 7.3.7.2 BLOB和TEXT类型 # 7.3.7.3 ENUM类型 # 7.3.7.4 SET类型 + 7.3.8 为列选择正确的类型 + 7.3.9 列索引 + 7.3.10 多列索引 +...
Java小区物业管理系统 ... `password` varchar(50) NOT NULL, ) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; CREATE TABLE `charge` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`areaname` varchar(32) NOT NULL, `pid` int(11) NOT NULL, `shortname` varchar(8) NOT NULL, `level` int(11) NOT NULL, `position` varchar(64) NOT NULL, `sort` tinyint(4) NOT NULL, PRIMARY KEY (`id...
SQL NOT NULL 约束 在默认的情况下,表的列接受 NULL 值。 SQL NOT NULL 约束 NOT NULL 约束强制列不接受 NULL 值。 NOT NULL 约束强制字段始终包含值。... LastName varchar(255) NOT NULL, FirstName varchar(25
MovieID bigint(20) NOT NULL auto_increment, Name varchar(200) default NULL, Sort varchar(50) default NULL, Lang varchar(50) default NULL, Addr varchar(50) default NULL, Intro text, Pic varchar...