关于数据库范式理论
第一范式(1NF):要求每一个数据项都不能拆分成两个或两个以上的数据项,即数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类构成,包括整形,实数,字符型,逻辑型及日期型。
第二范式(2NF):如果第一个表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表满足第二范式。
注:当该表不符合第二范式时,该表就会存在如下问题:
(1)数据冗余; (2)更新异常; (3)插入异常; (4)删除异常;
第三范式(3FN):如果一个表已经满足第二范式,而且该表中的任何两个非主键字段的数值之间不存在函数依赖关系,那么该表满足第三范式。
创建数据库
创建命令:CREATE DATABASE或CREATE SCHEMA
语法格式:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] 数据库名
[ [DAFAULT] CHARACTER SET 字符集名
| [DAFAULT] COLLATE 校对规则名]
语法说明:(1)语句中“[ ]”内为可选项,“{ | }”表示二选一;
(2)MySQL命令解释器对大小写不敏感;
(3)IF NOT EXISTS:在创建数据库前进行判断,可以避免出现已经存在而再新建的错误;
(4)DEFAULT:指定默认值。
打开数据库
打开命令: USE
语法格式:USE 数据库名
修改数据库
修改命令:ALTER DATABASE
语法格式:ALTER {DATABASE | SCHEMA} 数据库名
[ [DEFAULT] CHARACTER SET 字符集名
| [DEFAULT] COLLATE 校对规则名]
删除数据库
删除命令:DROP DATABASE
语法格式:DROP DATABASE [IF EXISTS] 数据库名
语法说明:使用IF EXISTS子句可以避免删除不存在的数据库时显示MySQL错误信息(注意使用,因为它将永久删除整个数据库信息)
显示数据库
显示命令:SHOW DATABASES
语法格式:SHOW DATABASES
此命令没有用户变量
字符串类型
①char和varchar类型
char列的长度固定为创建表时声明的长度
varchar列中的值可变长字符串
②blob和text类型
blob列被视为二进制字符串(字节字符串)。
blob列没有字符集,并且排序和比较基于该列所含的字节数值
text列被视为非二进制字符串。text列有一个字符集,并且根据字符集的校对规则对值进行排序和比较。
在text或blob列的存储或检索过程中,不存在大小写转换
blob和text列不能有默认值
③日期和时间类型
日期和时间类型的数据是具有特定格式的数据,专用于表示日期、时间,包括以下几个类型:
date类型:表示日期,输入数据的格式是yyyy-mm-dd
time类型:表示时间,输入数据的格式是hh:mm:ss
datetime 类型:表示日期时间,格式是yyyy-mm-dd hh:mm:ss
创建表
创建命令:CREATE TABLE
语法格式:CREATE TABLE[IF NOT EXISTS]表名
(列名 数据类型 [NOY NULL | NULL] [DEFAULT 列默认值]…)
ENGINE=存储引擎
修改表结构:ALTER TABLE
DROP子句:从表中删除列或约束
删除表:DROP TABLE
主键:PRIMARY KEY
外键:FOREIGN KEY
降序:DESC
升序:ASC