MySQL的端口:3306
MySQL数据库中命令不区分大小写;
每创建一个数据库就会在data目录下创建一个以此数据库名称命名的文件夹;
在Windows下数据库名称也是不区分大小写的,但在Linux下数据库名称严格区分大小写;
字符集:
①数据库服务器字符集
在MySQL的配置文件my.ini中配置:default-character-set=utf8
②数据库字符集:继承数据库服务器字符集
③数据表字符集:继承数据库字符集
④数据表字段的字符集:继承数据表字符集
⑤校验字符集
对中文进行排序:collate utf8_general_ci
⑥数据库客户端字符集
如使用cmd客户端连接数据库时使用:set names utf8;
⑦连接字符集:set names utf8;
数据表的引擎(ENGINE)及存储位置:
MySQL支持的主要类型有 MyISAM、InnoDB:
1.MyISAM数据表类型的特点是成熟、稳定和易于管理
2.MyISAM表类型会产生碎片空间,要经常使用命令“optimize table table_name”去清理空间
3.MyISAM不支持事务处理,InnoDB支持
4.MyISAM不支持外键,InnoDB支持
5.MyISAM产生3个文件:.frm(表结构)、.MYI(表索引)、.MYD(表数据);InnoDB只产生1个文件:.frm(表结构),“data/ibdata1”存储所有数据库中所有InnoDB表的索引和数据(共享表空间)
6.MyISAM的效率高于InnoDB
数值类数据列类型:
tinyint:非常小的整数 -128~127;0~255 1字节
smallint:较小的整数 0~65535 2字节
mediumint:中等大小的整数 0~16777215 3字节
int:标准整数 0~42亿 4字节
bigint:大整数 8字节
float:单精度浮点数
double:双精度浮点数
decimal:以字符串形式表示浮点数
注:
1、整型后面的数字如:int(3)中的3只是表示显示值的位数,配合 zerofill 使用;
2、float(3,1)中3代表显示总长度,1代表小数长度;
字符串类数据列类型:
char(m):定长字符串,值为m字节
varchar(m):可变字符串,值为m字节
tinyblob、tinytext:非常小的blob(二进制大对象)和文本串
blob、text:小blob和文本串
mediumblob、mediumtext:中等的blob和文本串
longblob、longtext:大blob和文本串
enum('val1','val2'...):枚举
set('val1','val2'...):集合
注:
1、char和varchar:当传入的实际值长度大于指定长度时,字符串会被截取至指定长度或报错;当传入值小于指定长度时,char会使用空格补至指定长度,而varchar不会;
2、blob和text是可以存放任意大数据的数据类型;blob区分大小写,text不区分大小写;text不支持 not null或default属性;
3、enum只能选择其中一个值,而set可以选择多个值;
4、text后面不能写not null或default,否则会报错;
时间和日期类数据类型:
date:“YYYY-MM-DD”格式表示的日期
time:“hh:mm:ss”格式表示的时间
datetime:“YYYY-MM-DD hh:mm:ss”格式
timestamp:“YYYYMMDDhhmmss”格式
YEAR:“YYYY”格式的年份值
字段属性:
unsigned:非负/无符号,无“+”和“-”,只能用于设置数值型,不允许出现负数后最大存储长度增加了一倍
zerofill:只能用于设置数值型,例:int(3)中数字3为整型的显示位数,当数值位数不足时在前面用0填充:001
null:字段值允许为空,默认值为null(无插入值时)
not null:值不允许为空
default:默认值,配合 not null 使用
primary key:主键,一个数据表只能有一个主键,主键代表唯一,而且被设置成主键的字段就自动不能为空
auto_increment:自增长,对于整型字段有用,且该字段须为索引
unique:唯一索引,值不能重复,一个表中可以有多个字段添加唯一索引
索引分类:
1.主键索引:primary key 唯一性
2.唯一索引:unique 唯一性
3.普通(常规)索引:index / key
4.全文索引:fulltext
用来进行全文数据的搜索;很少使用,可以用 sphinx 全文检索引擎来进行替代
5.外键索引:foreign key
通常情况下,配合一张表的主键使用;两表或多表关联时使用;但外键只能在InnoDB表中使用,不推荐使用,效率低
数据表添加索引的三种方式:
①在创建数据表时,在每个字段属性之后添加该字段的索引
create table `table_name`(
`id` int unsigned auto_increment primary key,
`username` varchar(32) not null unique,
`phone` varchar(20) not null,
`sex` enum('男','女','保密') not null default '保密'
)engine=myisam default charset=utf8;
注意:此时数据表中的`id`对应为主键索引,`username`对应为唯一索引,若要再添加普通索引,不可在字段属性后直接加“index/key”,否则会报错,须使用另外两种方式来添加普通索引
②在创建数据表时,编辑完所有字段的最后,再添加索引
create table `table_name`(
`id` int unsigned auto_increment,
`username` varchar(32) not null,
`phone` varchar(20) not null,
`sex` enum('男','女','保密') not null default '保密',
primary key(`id`),
unique table_name_字段名(`字段名`),
key table_name_字段名1(`字段名1`),
key table_name_字段名2(`字段名2`)
)engine=myisam default charset=utf8;
③用修改表结构的方式添加索引
alter table table_name add primary key(id);
alter table table_name add unique table_name_字段名(字段名);
alter table table_name add index table_name_字段名_index(字段名);