MySql建表与索引
来源:互联网 发布:truncate mysql 编辑:程序博客网 时间:2024/06/05 12:14
常用命令
show databases; //查看数据库create database test; //创建数据库usetest;//选择数据库\s//查看数据库状态? create table; //创建表的帮助show tables; //查看表desc test; //查看表结构\c//退出创建表
一、创建表的基本模型([]为可选的):
CREATE TABLE [IF NOT EXISTS]表名称(
字段名1 列类型 [属性] [索引],
字段名2 列类型 [属性] [索引],
...
字段名n 列类型 [属性] [索引]
)[表类型] [表字符集];
表名称和字段名需要我们自己定义名称。
二、数据值和列类型:
细分都是按空间大小来区分的。
1、数值型
整形(整数)
非常小的整型 1字节 TINYINT
较小的整型 2字节 SMALLINT
中等大小的整型 3字节 MEDIUMINT
标准的整型 4字节 INT
大整型 8字节 BIGINT
浮点型(小数)M为位数,D为小数点保留几位
float(M,D) 4字节
double(M,D) 8字节
定点数decimal(M,D) M+2字节
2、字符型
char(M) 255 属于固定长度字符串
varchar(M) 255 可变长度字符串
3、日期型
DATE YYYY-MM-DD
TIME hh:mm:ss
DATETIME YYYY-MM-DD hh:mm:ss
TIMESTAMP YYYYMMDDhhmmss
YEAR YYYY
时间保存最好采用INT类型,因为它可以参与运算。
三、数据字段属性:
1、unsigned 可以让空间增加一倍,如果不希望在字段中插入负值就使用此属性,另外只能用在数值型字段。
2、zerofill 只能用在数值型字段,前导0(例如id int(5) zerofill,如果插入数据为11,会自动存储为00011),该字段自动应用unsigned。
3、AUTO_INCREMENT 只能是整数,数据每增加一条就会自动增1,字段的值不允许重复。
4、NULL和NOT NULL 控制字段插入数据是否可以为空值。
5、default 缺省值。在某个表里,某个字段不插入值的话,就会启用缺省值。
CREATE TABLE users(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT '',
height DOUBLE(10,2) NOT NULL DEFAULT 0.00,
age INT NOT NULL DEFAULT 0,
sex CHAR(4) NOT NULL DEFAULT '男'
);
四、创建索引:
1、主键索引
主要作用是确定数据库表里一条特定数据记录的位置。
最好为每一张数据表定义为一个主键索引。
一个表只能指定一个主键,主键的值不能为空。
指定主键有2种方法:
(1)
CREATE TABLE users(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
);
(2)
CREATE TABLE users(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id)
);
2、唯一索引
unique
它和主键索引一样,都可以防止创建重复的值,不同的是,每个表可以有多个唯一索引。
3、常规索引
最重要的技术,提高数据库性能,索引优化首先考虑常规索引。
查询提高了,增删改减慢了。
key和index是同义词,用哪个都可以。
创建方法:
单独创建常规索引:
CREATE index 索引名称 on 表名(字段名,多个用逗号分隔);
删除:
drop index 索引名称 on 表名;
创建表时创建常规索引:
CREATE TABLE users(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
uid INT NOT NULL,
index 索引名称(uid)
);
fulltext类型索引,只能在MyISAM表类型上使用,只有在varchar,char,text等文本字符串上使用,也可以多个数据列使用。
CREATE TABLE books(
id int,
bookname varchar(30),
price double,
detail text not null,
fulltext(detail,bookname),
index ind(price),
primary key(id)
);
正常查询:select * from books where bookname like '%php%';
全文索引查询:select bookname,price from books where MATCH(detail) AGAINST('php');
以上两种查询来比,全文索引查询效率比较高。
0 0
- MySql建表与索引
- Mysql建表与索引使用规范整理
- Mysql建表与索引使用规范详解
- Mysql建表与索引使用规范详解
- Mysql建表与索引使用规范详解
- Mysql建表与索引使用规范整理
- Mysql建表与索引使用规范整理
- Mysql建表与索引使用规范详解
- Mysql建表与索引使用规范整理
- mysql索引与全表扫描
- MySQL索引与存储
- mysql 索引与优化
- mysql与索引
- MySQL索引与优化
- MySQL索引与优化
- MYSQL 索引与优化
- Mysql索引与优化
- Mysql 索引与优化
- 几个常用的Sublime插件
- 工作笔记之“linux shell 常用命令”
- d3 学习参考
- 黑马程序员--面向对象(上)
- EOF文件结束符
- MySql建表与索引
- WebView注入Javascript的版本兼容问题
- java万年历
- yeoman、bower、grunt 开发收集
- struts异常:HTTP Status 404 - There is no Action mapped for namespace [/] and action name [promotion]
- Codevs 玛丽卡
- popupWindow的使用
- [TwistedFate]程序存储区划分、动态申请内存、内存操作函数
- IOS开发笔记3-SCANF函数使用和表达式