《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中指定复数主键的方法;
需要注意的是,在建表时这样指定复数的主键是不行的,虽然语法没有错误,但实际操作会发现并不能满足上面主键列的组合唯一这个约束;
正确的方法是使用UNIQUE,
可以参考这篇文章:http://blog.csdn.net/devonliu/article/details/15238091
# 4.2.0 WHERE子句操作
where的操作符;
操作符的使用需要根据具体的DBMS的配置来确定,最好的办法是查看官方文档,例如书中提到的!> 和!< 这样的使用方式在mysql中就无法使用;
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中就无法使用;
相关文章推荐
- sql语句优化SQL Server
- PostgreSQL中删除的数据能否恢复
- 数据库——基础(数据库操作,表格操作)
- 秒杀场景下MySQL的低效
- redis 模糊删除命令
- sqllite 自动增长列
- SqlServer按半小时分组统计
- 数据库中间键mycat 实现oracle数据库读写分离
- C#使用ODBCl连接MySql详细教程
- 【集群】redis 3.0的集群部署
- MySql学习笔记
- MariaDB缓冲区详解
- MySQL并发复制系列三:MySQL和MariaDB实现对比
- mysql 主从
- PL/SQL笔记(1)-流程控制,循环,异常,块
- MySQL并发复制系列二:多线程复制
- ORACLE分页查询SQL语法——最高效的分页
- 输入值/表单提交参数过滤有效防止sql注入的方法
- VCS引起的oracle数据库异常重新启动一例
- 设置tomcat集群使用redis实现分布式session