SQL是访问和处理关系数据库的计算机标准语言。
数据库模型:层次模型、网状模型、关系模型
关系型数据库
目前,主流的关系数据库主要分为以下几类:
- 商用数据库,例如:Oracle,SQL Server,DB2等;
- 开源数据库,例如:MySQL,PostgreSQL等;
- 桌面数据库,以微软Access为代表,适合桌面应用程序使用;
- 嵌入式数据库,以Sqlite为代表,适合手机应用和桌面程序。
基础数据类型
-
类型(同义词) 存储长度(BYTES) 最小值(SIGNED/UNSIGNED) 最大值(SIGNED/UNSIGNED) 整形数字 TINYINT 1 -128/0 127/255 SMALLINT 2 -32,768/0 32767/65,535 MEDIUMINT 3 -8,388,608/0 8388607/16,777,215/ INT(INTEGER) 4 -2,14,7483,648/0 2147483647/4,294,967,295/ BIGINT 8 -2^63/0 263-1/264-1 小数支持 FLOAT[(M[,D])] 4 or 8 - DOUBLE[(M[,D])]
(REAL, DOUBLE PRECISION)8 - 时间类型 DATETIME 8 1001-01-01 00:00:00 9999-12-31 23:59:59 DATE 3 1001-01-01 9999-12-31 TIME 3 00:00:00 23:59:59 YEAR 1 1001 9999 TIMESTAMP 4 1970-01-01 00:00:00
SQL语言
DDL:Data DefinitionLanguage
DDL允许用户定义数据,也就是创建表、删除表、修改表结构这些操作。通常,DDL由数据库管理员执行。
DML:Data ManipulationLanguage
DML为用户提供添加、删除、更新数据的能力,这些是应用程序对数据库的日常操作。
DQL:Data Query Language
DQL允许用户查询数据,这也是通常最频繁的数据库日常操作。
建议:SQL关键字总是大写,以示突出,表名和列名均使用小写
关系模型
表的每一行称为记录(Record),记录是一个逻辑意义上的数据。
表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。
字段定义了数据类型(整型、浮点型、字符串、日期等),以及是否允许为NULL。
注意NULL表示字段数据不存在。一个整型字段如果为NULL不表示它的值为0,同样的,一个字符串型字段为NULL也不表示它的值为空串''。
通常情况下,字段应该避免允许为NULL。不允许为NULL可以简化查询条件,加快查询速度,也利于应用程序读取数据后无需判断是否为NULL。
主键
选取主键的一个基本原则是:不使用任何业务相关的字段作为主键。主键是关系表中记录的唯一标识。
主键的选取非常重要:主键不要带有业务含义,而应该使用BIGINT自增或者GUID类型。主
键也不应该允许NULL。
联合主键
两个或更多的字段都设置为主键,这种主键被称为联合主键,允许一列有重复。
索引
对于主键,关系数据库会自动对其创建主键索引。使用主键索引的效率是最高的,因为主键会保证绝对唯一。
ALTER TABLE sherlock_user ADD UNIQUE INDEX uni_user_name(user_name)