Mysql 基础知识

1.	Mysql建表字段数据类型的选择:
(1)	Varchar类型的长度在范围内是可变的,所以varchar占用的空间小于char,所以对于长度变化较大的字符串类型最好选择varchar;而char类型的处理速度要快于varchar,所以对于长度变化不大和查询速度要求较高的字符串类型选择char较好。
(2)	在Mysql中,定点数Decimal以字符串的形式存储。因此其精度要比浮点数高。而且浮点数会存在误差,所以对精度要求较高的数据比如钱,采用decimal会比较安全。
(3)	需要记录时间和日期选择datetime类型和timestamp类型,而datetime的范围比较大。
(4)	当属性字段的取值在一定得离散范围内,可以选择使用enum和set类型。Enum可以在取值列表内取一个值比如说性别,而set可以取多个值,比如说兴趣爱好。定义的列表中的每个值都有一个序列号,mysql中存储的是这个序列号不是真正的列表值。
(5)	当存储大数据时,可以选择使用text和blob类型,其中text是存储文本数据,而blob是存储图片等二进制文件。
(6)	在一般情况下,数据库不会直接存储图片、影音等文件,而只是存储这些文件的路径,表示路径的‘\’会被过滤掉,应该使用‘/’和‘\\’来替代‘\’;
2.	Mysql存储引擎的选择:

特性	InnoDB	MyISAM	MEMORY
事务安全	支持	无	无
存储限制	64TB	有	有
空间使用	高	低	低
内存使用	高	低	高
插入数据速度	低	高	高
对外键的支持	支持	无	无

根据其不同的特性,选择存储引擎可以根据如下建议:
	InnoDB:InnoDB支持事务,支持外键,当需要实现并发控制的时候,以及需要频繁的更新和删操作的时候选择InnoDB,因为其可以事务的Commit和Rollback。
	MyISAM:MyISAM存储引擎插入数据速度很快,空间和内存的使用都很低。当对事务和并发性要求较低,并且表主要用于插入新数据和查询读出记录,可以考虑使用MyISAM存储引擎。
	MEMORY:Memory存储引擎把所有数据存储在内存中,有很快的读写速度,如果对数据的安全行要求较低,数据比较少,而且需要建立一个临时表,可以选择MEMORY。
3.	创建、修改、删除表:
	创建数据库:create database 数据库名;
	使用数据库:use 数据库名
	创建表:create table 表名(字段名 字段类型 唯一性约束 primary key auto_increment,……..)
	查看表创建语句:show create table 表名 \G
	查看表的结构:desc 表名
	删除表:drop table 表名;删除表之前保证外键约束已经删除
	修改表名:alter table 旧表名 rename 新表名
	修改字段属性:alter table 表名 modify 属性名 数据类型 约束条件
	修改字段名:alter table 表名 change 旧属性名 新属性名 约束条件
	增加字段:alter table 表名 add 属性名 数据类型 约束条件 after 属性
	删除字段:alter table 表名 drop 属性名
	更改表的存储引擎:alter table 表名 engine=存储引擎名
4.	Mysql中的索引主要包括:普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引。索引可以提高查询速度,但是创建和维护索引也会耗费时间,向有索引的表中插入数据时,数据库系统会按照索引排序,速度会被降低,所以经常进行排序的查询建立所以可以避免查询时的排序操作。
5.	索引有两种存储类型,包括BTREE和HASH索引。InnoDB和MyISAM存储引擎支持BTREE索引,MEMORY存储引擎支持HASH和BTREE索引。
6.	索引的设计原则:
	使用唯一性索引:可以更快速的定位数据。
	为经常需要排序、分组和联合操作的字段建立索引:避免排序操作。
	为经常作为查询条件的字段建立索引
	限制索引的数目:越多的索引,使更新表的操作浪费更多的时间。
	尽量使用数据量少的索引
	尽量使用前缀来索引:如果字段很长的话可以使用前缀来索引。
	删除不再使用或者很少使用的索引:减少索引的维护。
7.	创建表时可以创建索引,也可以在已经存在的表中添加索引:
Create table 表名(属性名 约束条件,…. ,UNIQUE INDEX 索引名(属性 desc | asc));
Alter table 表名 ADD UNIQUE INDEX 索引名(属性名 desc | asc)。
删除索引:drop index 索引名 on 表名
8.	触发器是由INSERT、UPDATE、和DELETE等事件来触发某种特定的操作。满足触发操作的条件时,数据库就会执行触发器定义的程序,这样做可以保证某些操作之间的一致性。创建触发器的语句:
->Create trigger trigger名字 before | after insert 
->On 表名1 for each row
->执行语句;
我在试验中发现:其中执行语句中不可包含表名1,否则会报错。不知道为什么会有这样的设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值