数据库设计流程:
1. 需求分析:了解用户对系统的需求,包括数据需求和业务处理需求
2. 概要设计:根据用户需求绘制E-R图
3. 逻辑结构设计: 将E-R图转化为多张表,确认表的主外键,并应用数据库设计的三大范式进行审核,对其优化。
数据库设计三大范式:
1. 第一范式:确保每列保持原子性。确保数据库表中所有的字段值都是不可分解的原子值。
2. 第二范式:确保每列都和主键相关。确保每列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。
3. 第三范式: 确保每列都与主键列直接相关,而不是间接相关。
基础SQL:
1. 对数据库命令:DROP CREATE ALTER
2. 对表的命令: SELECT INSERT UPDATE DELETE
3. 数据控制;
GRANT: 赋予用户权限
REVOKE: 取消用户权限
COMMIT: 确认数据库中的数据进行的变更
ROLLBACK:取消数据库中的数据进行的变更
4. LIKE 模糊查询: show databases like '%test%' 查看数据库名中有test的数据库
5. 日期格式:DATE:YYYY-MM-DD 没有时间 TIME:HH:MM:SS仅有时间
DATETIME和TIMESTAMP:YYYY-MM-DD HH:MM:SS 前者8个字节后者4个字节
6. BLOB:二进制字符串主要存储图片、音频等数据。
7. 建表时添加外键约束: CONSTRAINT 约束名 FOREIGN KEY (字段名) REFERENCES 另一个表(字段名)
8. 删除外键约束:ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
9. 展示表的字段信息: DESC 表名。 展示创建表的SQL语句: SHOW CREATE TABLE 表名
10. 联合主键的:PRIMARY KEY[字段1,字段2,...]
操作表中数据:
1. DISTINCT关键字去重。 SELECT DISTINCT 字段名 FROM 表名;
2. LIMIT 初始位置,记录数 或者 LIMIT 记录数
3. ORDER BY 字段名 ASC|DESC 升序|降序
ORDER BY后面可以跟一个字段,也可以跟多个字段。多个字段的话就是先按照前面字段顺序排列。
4. 条件查询:多条件查询(AND OR XOR, 其中XOR表示满足其中一个条件并且不满足另一个条件时会被查询)
5. 模糊查询: LIKE , NOT LIKE。 其中%通配符匹配任意长字符串, _匹配单个字符
6. 单独使用GROUP BY关键字时,查询结果会只显示每个分组的第一条记录
GROUP_CONCAT()函数会把每个分组的字段值都显示出来,
例:select sex group_concat(name) from students group by sex;
此外group by 常与聚合函数一起使用,如 count(),sum(),avg(),max(),min().
7. HAVING分组过滤。where是查询前过滤,having是查询后过滤。having侧重过滤分组,可配合聚合函数使用。
8. CROSS JOIN交叉连接,两个表的笛卡尔积。
INNER JOIN内连接,通过设置连接条件的方式,来移除查询结果中某些数据行的交叉连接。如果后面没有ON子句与交叉连接等价。 select 字段名 from 表1 inner join 表2 on 条件。
LEFT/RIGHT JOIN 左连接/右连接。一个表为基表,一个表为参考表,查询与基表相关数据。
9. 子查询 : WHERE 表达式 操作符 (子查询) 表达式和操作符有一个就行
操作符包括: IN、NOT IN、 EXISTS、 NOT EXISTS
表达式: = <>
在from后面的子查询要给定一个别名
视图、索引:
1. 视图是一种虚拟存在的表,有行和列构成但并不真实存在于数据库中。
2. 视图的创建: CREATE VIEW 视图名 AS SELECT语句;
视图名必须是唯一的。
查看视图的字段信息: DESC 视图名; SHOW CREATE VIEW 视图名;