一:入门语句

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');

一次可插入多个:




mysql 改变数据类型 mysql修改数据类型语句_整型




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;



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


整型有:



mysql 改变数据类型 mysql修改数据类型语句_mysql 改变数据类型_02





整型列的可选属性:


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 有什么区别?



字符数(不是字节数)。


varchar:变长字符串, varchar(M)同样代表可容纳的字符数。



区别在哪呢?


char定长:M个字符,如果存的小于M个字符,实占个字符。   利用率i/M <= 100


varchar变长:M个字符,存的小于M个字符,实战i个字符+1到两个字节 ,利用率i/(i+1-2) < 100%



mysql 改变数据类型 mysql修改数据类型语句_整型_03




使用额外的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字符型,文本串。可以存较大的文本段,搜索速度稍慢,不要加默认值。


四:日期时间类型



1991-2155年。如果非法,或者没输入,year类型默认0000.


                  所以你如果输入两位'00~69'表示2000~2069,'70~99‘表示1970~1999’年,所以输入的时候输4位就行了。



date类型:典型格式:1992-08-12 


                  日期类型存储范围:‘1000-01-01’~'9999-12-31',存储范围较大


                 


time类型:典型格式,hh:mm::ss


                  表示范围:-838:59:59~+838:59:59左右,因为它可以表示时间差。



datetime类型:典型格式,'1989-05-06 14:32:08‘,格式是date和time相加之和。


表示范围:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59。




实际开发中一般不用日期事件类型,而用时间戳。



时间戳是1970-01-01 00:00:00到当前的秒数。



时间戳是一个int类型。




类型面试题:性别用什么存储?


1.tinyint   1个字节,用1表示男,0表示女


                 2.enum类型       比如: create table t2 ( gender enum('man', 'woman') );    性别gender枚举为man和woman,但是这和关系型数据库设计理念相违背,不是原子性。                                            因为它的的值即可能是男也可能是女。而且在字节上也不必tinyint节省。