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创建数据表(中)的更多相关文章

  1. MySQL学习笔记_2_MySQL创建数据表(上)

    MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...

  2. MySQL学习笔记_4_MySQL创建数据表(下)

    MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...

  3. MySQL学习(一) 数据表基本操作

    创建数据库:create database db_name 查看数据库结构:show create database db_name 删除数据库:drop database db_name 查看数据库 ...

  4. mysql学习(八)数据表类型-字符集

    数据存储引擎: MyISAM:强化快速读取操作. 也有缺点.一些功能不支持 InnoDB:支持一些MyIASM一些不支持的功能                 缺点:占用空间大 对比          ...

  5. MySQL学习(三): 初识数据表

    打开数据库: USE db_name : 打开数据库. 创建数据表: 查看数据表: 查看数据表结构: 数据简单的插入与查找: 插入:INSERT [INTO] tbl_name [(col_name) ...

  6. MySQL学习笔记02_数据库和表的基本操作

    02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...

  7. MySQL学习笔记十一:数据导入与导出

    数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本use ...

  8. MySQL 使用while语句向数据表中批量插入数据

    1.创建一张数据表 mysql> create table test_while ( -> id int primary key) charset = utf8; Query OK, ro ...

  9. mysql for Mac 下创建数据表中文显示为?的解决方法

    在我的绝版Mac mini下安装了mysql 5.7版本,实例中,在通过load data 导入数据时发现表中的中文显示为  ? 通过百度,发现多个版本的解决方法,将其中一个成功解决的方法贴上来: 大 ...

随机推荐

  1. reload(sys)后print失效问题解决

    python版本: python2.7.6 #查看python默认编码格式 >>> import sys >>> print sys.getdefaultencod ...

  2. A potentially dangerous Request.Form value was detected from the client问题处理

    问题剖析: 用户在页面上提交表单到服务器时,服务器会检测到一些潜在的输入风险,例如使用富文本编辑器控件(RichTextBox.FreeTextBox.CuteEditor等)编辑的内容中包含有HTM ...

  3. popen() 使用举例 (转载)

    函数原型: #include "stdio.h" FILE *popen( const char* command, const char* mode ) 参数说明: comman ...

  4. 自定义Retrofit转化器Converter

    我们来看一下Retrofit的使用 interface TestConn { //这里的Bitmap就是要处理的类型 @GET("https://ss0.baidu.com/73F1bjeh ...

  5. APP自动化框架LazyAndroid使用手册(3)--核心API介绍

    作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...

  6. Swift中String和NSString的一个不同之处

    我们知道在Swift中String和NSString是可以互相转换使用的-额-应该是在绝大数情况下可以互相转换使用.在某些情况下可能还有一丝丝略微的差别:比如在涉及到处理字符串中字符索引的时候. 我们 ...

  7. 剑指Offer——京东实习笔试题汇总

    剑指Offer--京东实习笔试题汇总 编程题1 题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息. n.s.B.S其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入 ...

  8. shell命令执行hive脚本(hive交互,hive的shell编程)

    Hive执行方式 Hive的hql命令执行方式有三种: 1.CLI 方式直接执行 2.作为字符串通过shell调用hive –e执行(-S开启静默,去掉"OK","Tim ...

  9. iOS网络基础

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51376048 本文出自:[openXu的博客] 常用类 get请求 post请求 NSURL ...

  10. java.io.FileNotFoundException: ..\lib\commons-el.jar

    安装openfire成功后,启动遇到java.io.FileNotFoundException: ..\lib\commons-el.jar错误,并不是缺少了jar包,只需以管理员身份运行即可解决.