Mysql入门命令及数据类型

时间 : 13-11-22 栏目 : mysql精讲 作者 : 老薛 评论 : 0 点击 : 925 次

一:入门语句

1.创建数据库 (数据库名字不能修改)

create database php; 创建一个名为php的数据库

2.创建数据表

create table class ( stu int, name varchar(6), age int ); 创建了一个class表,学生int型,名字varchar型,年龄int型。

3.删除数据库

drop database php; 删除php数据库

4.修改表名字

rename table oldname to newname;

5.查看表结构

desc tablename;

二.增删改查

1.插入 insert into tablename (id, name, title) values (1, 'zhangsan', 'notitle'); 一次可插入多个: \

2.改 update msg set content = 'thefirst' where id = 1;

还有一种ALTER命令: 如:alter table class add age2 int unsigned; 向表中增加一列。
3.查 select name,content from msg where id > 2; name,content控制部分列,id控制部分行。
4.删 delete from msg where id = 5;

三.整型列的字节与存储规范

整型有:

整型列的可选属性: tinyint(M) unsigned zerofill M: 宽度(在0填充的时候才有意义,类似于printf的宽度), unsigned: 无符号类型 zerofill(0填充,默认无符号)
1.列可以声明默认值。 NULL不呢和任何值比较,不能使用!=,=,null=null等比较方式,只有一种select null is
null; 所以我们需要声明默认值。 比如:alter table class add age5 tinyint not null
default 0;

二:浮点型

mysql支持的三个浮点类型是float,double和decimal类型。float单精度,double双精度。
与整型一样,这些类型也有附带参数:一个显示宽度指示器和一个小数点指示器。比如float语句float(7,3)规定显示的值不超过7位数组,小数点后面带有三位数字。
对于小数点后面位数超过允许范围的值,MySQL会自动地将它四舍五入为最接近它的值,再插入它。
decimal数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数,精度在这里值为这个值保存的有效数字的总个数,而计数方法
表示小数点后数字的位数。比如语句decimal(7,3)规定了存储的值不会超过7位数字,并且小数点后不超过3位。
忽略decimal数据类型的精度和计数方法修饰符将会是mysql数据库吧所有标识为这个数据类型的字段精度设置为10,计算方法设置为0。

三:字符型

有char,varchar,text三种类型。
面试问:char 和 varchar 有什么区别?
char型:定长字符串,char(M),M代表宽度,即可容纳的字符数(不是字节数)。 varchar:变长字符串, varchar(M)同样代表可容纳的字符数。
区别在哪呢? char定长:M个字符,如果存的小于M个字符,实占个字符。 利用率i/M <= 100 varchar变长:M个字符,存的小于M个字符,实战i个字符+1到两个字节 ,利用率i/(i+1-2) < 100% \

使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间;

char和varchar区别

char类型:
对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,char存储定长数据很方便,char字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率高。

varchar类型:varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"

而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。

varchar存储变长数据,但存储效率没有char高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为
varchar(10)是最合算的。varchar类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。

1.char的长度是固定的,而varchar2的长度是可以变化的,
比如,存储字符串“abc",对于char (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的varchar2
(20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

2.char的效率比varchar2的效率稍高。

3.目前varchar是varchar2的同义词。工业标准的varchar类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型varchar2,这个类型不是一个标准的varchar,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用varchar2而不是varchar。

何时该用char,何时该用varchar?

char与varchar2是一对矛盾的统一体,两者是互补的关系。

varchar2比char节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

varchar2
虽然比char节省空间,但是如果一个varchar2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row
Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用char代替varchar2会更好一些。

char和varchar选择原则:

1.空间利用效率:四字成语表,char(4)

个人简介,微博,140字,varchar(140)

2.速度考虑 比如:用户名建议char

test字符型,文本串。可以存较大的文本段,搜索速度稍慢,不要加默认值。

本文标签

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/mysql/2164.html

随便看看

0