MySQL学习笔记_3_MySQL创建数据表(中)
MySQL创建数据表(中)
三、数据字段属性
1、unsigned【无符号】
可以让空间增加一倍
比如可以让-128~127增加到0~255
注意:只能用在数值型字段
2、zerofill【前导零】
e.g. createtable if not exists t2(num int(5) zerofill,price float(7,2)zerofill,name varchar(10));
注意:只能用在数值型字段,自动加上无符号属性
3、auto_increment【自增】
#auto自动;increment增量,增加
当插入值为:NULL,0,留空时,会自动+1;当插入已经存在的值时,则会报错
注意:只能用于整数,字段值不允许重复(需要结合其他属性实现,如:primarykey)
#primary主要的;初级的,基本的。
e.g. createtable if not exists t3(id int auto_increment primary key,namechar(10));
insertinto t3(id,name) values(null,”xiaofang”); #可以连续插入n次,null可以换成0
insertinto t3(name) values(“xiaofang”);
插入时,会按照最大的数加1的顺序插入
e.g. deletefrom t3 where id >1 and id <9;
然后按照前面的语句插入
select* from t3 order by id;
deletefrom t3;
insertinto t3(name) values(“xiaofang”); # * 5
select* from t3;
insertinto t3(id,name) values(100,”ashun”);
insertinto t3(name) values(“jichang”) # * 5
select* from t3 order by id;
最佳实践:每个表最好都设置一个ID字段,设置为自增长属性,auto_increment
4、NULL和
NOTNULL
NULL:默认是空
建议:在创建表时,每个字段都不要插入空值,因为NULL值在转换为其他程序语言时存在很多不确定因素。
NOTNULL:非空
e.g. createtable if not exists t4(id int not null,name varchar(10) notnull,price double(7,2) not null) ;
5、default【缺省值】
e.g. createtable if not exists t5(id int not null default 0,name varchar(10) notnull default “NULL”,price double(7,2) not null default 0.00);
6、综合
createtable users(
idint unsigned not null auto_increment primary key,
namevarchar(30) not null default “”,
heightdouble(10,2) not null default 1.00,
ageint unsigned not null default 1,
sexvarchar(5) not null default ”man”);
四、创建索引
1、主键索引【primarykey】
#duplicate复制,使加倍 entry进入,侵入
作用:确定数据库表里一条特定数据记录的位置,一个表只能有一个主键,并且,主键的值不能为空。
建议:最好为每一个数据表定义一个主键!
e.g. 1)create table t7(id int not null auto_increment primary key,namevarchar(10));
2) createtable t7(
idint not null auto_increment,
namevarchar(10) not null '',
primarykey(id)); #在最后指定主键索引
2、唯一索引【unique】
#unique唯一的,独一无二的
都可以防止创建重复的值,但是,每个表可以有多个唯一索引
createtable if not exists users(id int not null auto_increment,namevarchar(30) not null default '' unique,age int,primary key(id));
3、常规索引【index/key】
是最重要的技术,可以提升数据库的性能,是数据库优化最先考虑的方面。索引可以提高查找的速度,但是会减慢插入,删除,修改的速度
和表一样是独立的数据对象,可以在创建表时使用,也可单独使用
单独使用时:createindex ind1 on users(name,age);
dropindex ind1 on users; #删除索引
创建时使用:createtable carts(
idint not null auto_increment,
uidint not null,
sidint not null,
primarykey(id),
keycuid(uid),
indexcsid(sid));
4、全文索引
fulltext类型索引,只能MyISAM表类型上使用,只有在varchar,char,text上使用。也可以在多个数据列上使用。
createtable books(
idint not null auto_increment,
booknamevarchar(30) not null unique,
pricedouble,
detailtext not null,
fulltext(detail),
indexind(bookname),
primarykey(id));
原始查询:select* from books where bookname like '%C++%';
现在查询:selectbookname,price from books where match(detail)against('C++');
select match(detail) against('C++') from books; #match
匹配;against倚,靠;
可以明显的查询速度!
MySQL学习笔记_3_MySQL创建数据表(中)的更多相关文章
- MySQL学习笔记_2_MySQL创建数据表(上)
MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...
- MySQL学习笔记_4_MySQL创建数据表(下)
MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...
- MySQL学习(一) 数据表基本操作
创建数据库:create database db_name 查看数据库结构:show create database db_name 删除数据库:drop database db_name 查看数据库 ...
- mysql学习(八)数据表类型-字符集
数据存储引擎: MyISAM:强化快速读取操作. 也有缺点.一些功能不支持 InnoDB:支持一些MyIASM一些不支持的功能 缺点:占用空间大 对比 ...
- MySQL学习(三): 初识数据表
打开数据库: USE db_name : 打开数据库. 创建数据表: 查看数据表: 查看数据表结构: 数据简单的插入与查找: 插入:INSERT [INTO] tbl_name [(col_name) ...
- MySQL学习笔记02_数据库和表的基本操作
02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...
- MySQL学习笔记十一:数据导入与导出
数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本use ...
- MySQL 使用while语句向数据表中批量插入数据
1.创建一张数据表 mysql> create table test_while ( -> id int primary key) charset = utf8; Query OK, ro ...
- mysql for Mac 下创建数据表中文显示为?的解决方法
在我的绝版Mac mini下安装了mysql 5.7版本,实例中,在通过load data 导入数据时发现表中的中文显示为 ? 通过百度,发现多个版本的解决方法,将其中一个成功解决的方法贴上来: 大 ...
随机推荐
- JAVA不可变类(immutable)机制与String的不可变性
一.不可变类简介 不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值.如JDK内部自带的很多不可变类:Interger.Long和String等. 可变类:相对于不可变类, ...
- 酷伯伯实时免费HTTP代理ip爬取(端口图片显示+document.write)
分析 打开页面http://www.coobobo.com/free-http-proxy/,端口数字一看就不对劲,老规律ctrl+shift+c选一下: 这就很悲剧了,端口数字都是用图片显示的: 不 ...
- Django REST Framework 最佳实践
Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. 为什么要使用REST framework? - 在线可视的API,对于赢得你的开发者们十分有用 - 验 ...
- jQuery AJAX 简介
AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. jQuery AJAX 实例 使用 jQuery AJAX 修改文本内容 尝试一下 » 什么是 AJAX? A ...
- Docker 数据卷容器
如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器. 数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的. 首先,创建一个命名的数据卷容器 dbdata: $ sud ...
- Ubuntu命令行启动Matlab
原文转自:http://blog.csdn.net/striker_v/article/details/52884485 小编安装的是Matlab R2015b,使用的是默认安装目录,安装在目录/us ...
- Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)
1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的 ...
- Programming In Scala笔记-第二、三章
本系列博客以<Programming in Scala 2nd Edition>为主,围绕其中的代码片段进行学习和分析. 本文主要梳理Chapter2和Chapter3中涉及到的主要概念. ...
- Nginx的负载均衡 - 保持会话 (ip_hash)
Nginx版本:1.9.1 我的博客:http://blog.csdn.net/zhangskd 算法介绍 ip_hash算法的原理很简单,根据请求所属的客户端IP计算得到一个数值,然后把请求发往该数 ...
- Linux系统编程---守护进程
守护进程是什么?就是在后台运行的进程. 那么如何创建守护进程呢? 1. 创建孤儿进程 2. setsid() 创建进程会话 3. 重定向标准输入, 标准输出 4. chdir, 改当当前进程的工作目录 ...