SQL
SQL介绍
SQL是结构化查询语言,是一种用来操作RDBMS(关系型数据库管理系统)的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过SQL操作oracle,sql server,mysql等关系型数据库。
SQL语句主要分为
- DDL语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。
- DML语句:数据操纵语句,用于添加、删除、更新、和查询数据库记录,并检查数据完整性
- DCL语句:数据控制语句,用于控制不同数据段直接许可和访问级别的语句。
数据完整性
在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束。
数据类型
常用数据类型
- 数值类型
- 日期时间类型
- 字符串类型
数值类型
| 整数类型 | 有符号范围 | 无符号范围 |
|---|---|---|
| TINYINT(size) | -128~127 | 0~255 |
| SMALLINT(size) | -32768~32767 | 0~65535 |
| MEDIUMINT(size) | -8388608~8388607 | 0~16777215 |
| INT(size) | -2147483648~2147483647 | 0~4294967295 |
| BIGINT(size) | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 |
| 小数类型 | 描述 |
|---|---|
| FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
| DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
| DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。(定点数类型) |
字符串类型
| 字符串类型 | 字节大小 | 示例 |
|---|---|---|
| CHAR(size) | 0-255 | char(3)输入’ab’,实际存储为’ab ‘,输入’abcd’,实际存储为’abc’ |
| VARCHAR(size) | 0-65535 | varchar(3)输入’ab’,实际存储为’ab’,输入’abcd’,实际存储为’abc’ |
枚举类型
枚举类型英文为ENUM,对1~255个成员的枚举需要1个字节存储;对于255~65535个成员,需要2个字节存储。最多允许65535个成员。创建方式:enum(“M”,”F”);
日期类型
| 数据类型 | 描述 |
|---|---|
| DATE() | 日期。格式:YYYY-MM-DD 注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’ |
| DATETIME() | 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ |
| TIME() | 时间。格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’ |
| YEAR() | 2 位或 4 位格式的年。 4 位格式:1901 到 2155。2 位格式:70 到 69,表示从 1970 到 2069 |
| TIMESTAMP() | 时间戳。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC |
注意
- decimal表示定点小数,如decimal(5,2)表示共存5位数,小数占2位。不写则默认为decimal(10,0)
- char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为’ab ‘
- varchar表示可变长度的字符串,如varchar(3),填充’ab’时就会存储’ab’
- 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
- 枚举类型不区分大小写
详细数据类型可参考:http://blog.csdn.net/anxpp/article/details/51284106
约束
- 主键约束(primary key):它能够唯一确定表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得字段不重复且不为空。
- 自增约束(auto_increment)
- 唯一约束(unique):此字段的值不允许重复
- 非空约束(not Null):此字段不允许填写空值
- 默认约束(default):当不填写此值时会使用默认值,如果填写时以填写为准
- 外键约束(foreign key):对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
