Mysql学习笔记一

最近在学习mysql,以后工作会慢慢往这方面转向,所以提前预习。~~~

现在全世界都喊着去IOE,所以咱也必须提前做个准备。冲................


 

第一章基础知识

1、改变表结构
增加列:alter table test add name(char(6));
更改列定义:alter table test change year_born bithday;
改变列的名称:alter table test modify oldname newname;
2、表的改名有以下方法:
alter table aa rename bb;
alter table aa rename to bb;
rename aa to bb;


3、指定日期格式:
select date_format(birtyday,'%m/%d/%Y');   这个与oracle不太一样。
%m返回月份(01-12),%d返回日期(01-31),%Y返回四位数的年份,%W返回星期,%M返回月份的名字,%y返回两位数的年份。

4、返回当前日期和时间
select now(),current_date();
now()返回日期和时间。
有一个列类型datetime,格式以YYYY-MM-DD HH:MM:SS存储数据。


第2章 数据类型和表类型


在mysql中,数据库名与表名的大小写是相关的,如在windows下不相关,不区分。但在unix下是区分大小写的。
不过,可以通过修改数据库参数来进行大小写识别即一样。

数字列类型:整型与浮点型 ,有两个选项UNSIGNED(不允许有负数)和ZEROFILL(为该值添加上零,而不是常用的空格

,并且自动将它变为UNSIGED)

数字类型:
TINYINT(M)[UNSIGNED][ZEROFILL]  一个微小整数,-128~127(SIGNED),0~255(UNSIGNED),需要1字节的存储
SMALLINT(M)   一个小整数,-32768~32768,需要2字节的存储
INT(M)    一个整数,-2147483648~2147483647(SIGNED),0~4294967295(UNSIGNED)需要4字节

的存储,采用zerofill的默认值为10.
BIGINT     一个大整数,需要8字节的存储。

FLOAT(M,D)   一个小的或单精度浮点数,需要4字节的存储(单精度)
DOUBLE(M,D)   一个双精度浮点数,需要8字节的存储。

在决定选择哪种数字类型时,可以遵循如下的原则:
1、选择最小的可用类型(如值记永远不超过127,则tinyint强于int)
2、对于完全是数字的,选择整数类型。
3、对于高精度,使用整数类型而不使用浮点类型(舍入的错误会影响浮点数)。

 

字符串列类型:
char(M)[binary]  字符。固字长度的串,在右边补齐空格,达到指定的长度。从0到255个字符。
varchar(M)[binary] 可变长字符。其中的后缀空格在存储值时被删除。
TINYBLOB  微小的二进程大对象。最多255个字符。长度为+1字节的存储。与tinytext一样,大多数会用

它,而不是使用varchar.

BLOB   二进制大对象。最大65535个字符。要求长度+2字节的存储。与TEXT一样,只不过搜索是大小

写相关的。
TEXT   最大65535个字符。要求长度+2字节的存储。与BLOB一样,只不过搜索是大小写不相关的。

LONGBLOB  大的二进制大对象。最大4294967295个字符。要求长度+4字节的存储。只不过搜索是大小写

相关的。
LONGTEXT  大的二进制大对象。最大4294967295个字符。要求长度+4字节的存储。只不过搜索是大小写

不相关的。

在决定使用哪种字符串类型的时候,要遵守以下原则:
1、不要在字符串列中存储数字。将数字存储在数字列中,效率能够高的多。
2、从速度方面考虑,要选择固定的列,如char.
3、为了节省空间,使用动态的列如varchar。
4、为了将列中的内容限制在一种选择,使用ENUM。
5、对于想搜索的大小写不相关文本,使用TEXT
6、对于想搜索的大小写相关文本,使用BLOB。
7、对于图像和其它二进制的对象,将它们存储在文件系统中,而不要直接存储在数据库中。
默认情况下,char与varchar类型在搜索时是大小写不相关的,除非你使用了binary关键字。
如:select * from test5 where name='Jeffreyli'与where name='jeffreyli'是不一样的。


日期和时间列类型:
datetime YYYY-MM-DD HH:MM:SS,从1000-01-01 00:00:00到9999-12-31 23:59:59
date  YYYY-MM-DD,从1000-01-01到9999-12-31
timestamp YYYYMMDDHHMMSS
time  HH:MM:SS
year  YYYY


表类型:
有两个事务安全的表类型:innodb和bdb
非事务:isam,myisam,merge,heap

ISAM表:
索引顺序存储方法。myisam表的索引比isam表的索引要小的多,所以在myisam表中带有索引的select使用更少的系统。

现在新版本中已经不使用了。

MYISAM表
类型代替了isam.它的数据文件的扩展名是.MYD,索引文件名是.MYI。数据文件总是比索引文件大。
有三个子类型:静态、动态或压缩。

在创建表的时候,静态表是默认格式,只要没有varchar,blob或text列,它就存在。如果存在列类型一种,表就变成了

动态的。


MEGRE表:
是相同Myisam表的合并。
优点:
1、在有些情况下速度快(可以将不同的表分离到不同的磁盘上,然后通过megre表将它们合面一个表来访问)
2、表的尺寸较小;
缺点:
1、对于eq_ref搜索,它们很慢。
2、replace不能工作。
3、表使用比较多的文件描述符。


HEAP表
是最快的表类型,因为他们存储在内存里,并使用散列的索引。
缺点是由于存储在内存中,所有的数据会在出问题时丢失。他们也不能保留太多的数据。可以作为中间表使用。
它们不能使用order by;不支持NULL列上的索引;不支持BLOB或TEXT列;不支持AUTO_INCREMENTgq .


INNODB表:
是事务安全的表类型,在myiasm表中,执行插入时整个表被锁定,在那一瞬间,不能对表执行其它的语句。innodb使用

记录级的锁定,以便只锁定该记录,而不是整个表。
如果你的数据执行大量的insert或update,建议使用innodb.如果执行select多,建议使用myisam。
innodb不是存储在一个目录中,将表作为文件。所有的表和索引都存储在innodb表空间中,如ibdata1。
建innodb:
create table test (name char(6)) type=innodb;或engine=innodb;

 

BDB表:
是伯克利数据库,它也是一个事务安全的表类型,与innodb一样。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值