MySql和Sql Server数据库总结

  最近一直忙着做了几个项目,顺带熟悉了Sql server和MySql这两个数据库,下面总结一下自己得到的经验。

  时间日期类型数据:

  不知道大家有没有想过,为什么数据库要专门了定义这样类型的数据,当然是为了跟编程语言对应,那么编程语言为什么要有这玩意呢?仔细思考,这东西还必须得有。平常咱么做东西总会碰到日期时间的计算,譬如算一下7月28日到8月2日有几天?这问题掰一下是指头就知道了,但是程序中你怎么实现呢?两个字符串相减吗?况且你的算法还得考虑大小月,比较特殊的2月,2月的话还得考虑闰年和平年(还是挺麻烦的!)。所以就有了这种类型的数据了,系统给你封装好,方便使用嘛大笑

  对于Sql server的话,有date和datetime这两种比较常见的(别的,如time,还有DateTimeOffset),这些都是能顾名思义的,存储格式也是有限定的。

  现在说说比较有意思的是MySql,MySql存储时间日期一般是用int类型的,它存储的是一个UNIX时间戳,网上的说法是:定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。这样做很显然可以更精确的控制时间。MySql跟php结合的很好,php对UNIX时间戳也有很多内置的转换方法,所以用php举个例子:

  php的date函数可以把传入的UNIX时间戳返回一个字符串表示(如果不传UNIX,但还是得传参数的,用来控制输出格式,不然会用警告,则返回当前时间的字符串),而strtotime函数可以把这种字符串转化为UNIX时间戳(刚好互补),另外,strtotime函数根据传入的字符串如(“+1 day”)得到其他时间的UNIX时间戳:

<?php 

echo date("Y-m-d");
echo "<br/>";
echo date("Y-m-d", 1414684800);
echo "<br/>";
echo strtotime(date("Y-m-d"));
echo "<br/>";
echo date("Y-m-d", strtotime("+1 day"));

 ?>
输出结果:

2014-11-30
2014-10-30
1417302000
2014-12-01
另外注意一点:这里的显示结果跟php环境的 时区设置有关系,网上百度一下。


  MySql数据表存储引擎:
  什么是存储引擎:百度了一下,找了一个比较浅显的定义:存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。Mysql比较特殊,有不同的存储引擎,在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。其实对我们来说,只要了解一下,不同引擎的区别,用的时候考虑一下那种选择为最优即可。

Mysql常见的数据引擎:MyISAM,InnoDB,NDB ClusterFEDERATED最常用的就是MyISAM和InnoDB,前者读取效率很高,但是不支持事务处理和外键,后者支持外键和事务处理,如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。用sql修改表的存储引擎:

ALTER TABLE tablename ENGINE = MyISAM ;

  MySql查看外键和约束:

  最好使的一句SQL是:

show create table table_name;










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值