您的位置:首页 > 数据库

《SQL必知必会》-- 笔记(1-5)

2016-01-14 17:19 260 查看
# 1.1.3 数据类型;

varchar和char的区别

表中的每个列都有相应的数据类型,需要注意的是在不同的数据库中相同类型的命名也是不同的,这个需要查看对应数据库的文档说明;

就字符类型来说,mysql有char和varchar,而Oracle除了这两种还有一种varchar2类型,同时它们对应的格式要求也是不同的,在mysql中char和varchar列的最大长度为8000,而Oracle中的最大长度则为4000(byte);

由于现在主要使用的是mysql,看到这里的时候顺道在网上查了一下varchar和char的区别;

官方文档里的这个表格大致能说明问题:

文档连接:http://dev.mysql.com/doc/refman/5.7/en/char.html

varchar:

主要特征是数据存储长度是可变的,如上表所示,当我定义一个长度为4的varchar列时,如果存放的值为ab,则存放长度为3个字符(其中有一个用于记录数据长度);

就是说它申请存储空间的时候相对于char很占优势,可以避免不必要的资源消耗;但相对的,在处理速度上和char对比起来则要逊色一些;所以当对存储资源的要求比较严格的时候,可以使用varchar;

char

其长度是固定的,当存放的数据长度不足指定长度时,会在右侧采用空格占位;相对于varchar来说,在存储很短的如编号之类的信息时,可以使用char,因为varchar还需要一个字节来记录数据长度;

同时它的处理速度要比varchar快,因为varchar每次在处理时要对长度进行一次计算,而相比之下char则没有这样的问题,所以当对数据的处理速度有要求的时候可以采用char;

# 1.1.5 主键

复数的主键

理论上主键为表中记录值非空且唯一的某一列,但也可以指定多列作为主键,这种情况下主键对应的规则应用到所有指定了主键的列中,且主键列的数据组合需要保持唯一性;

mysql中指定复数主键的方法;
PRIMARY KEY (`userid`, `username`)


需要注意的是,在建表时这样指定复数的主键是不行的,虽然语法没有错误,但实际操作会发现并不能满足上面主键列的组合唯一这个约束;

正确的方法是使用UNIQUE,
UNIQUE(`userid`, `username`)


可以参考这篇文章:http://blog.csdn.net/devonliu/article/details/15238091

# 4.2.0 WHERE子句操作

where的操作符;

操作符的使用需要根据具体的DBMS的配置来确定,最好的办法是查看官方文档,例如书中提到的!> 和!< 这样的使用方式在mysql中就无法使用;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: