1、初识数据库
1.1连接数据库
mysql -u root -p123456 --连接数据库
update mysql.user set authentication_string=password(123456
) where user =‘root’ and Host =‘localhost’; --修改用户密码
flush privileges; --刷新权限
以;结尾
show databases; --查看所有数据库
mysql> use school --切换数据库 use 数据库名
Database changed
show tables; --查看数据库中所有的表
describe student; --显示数据库中所有的表的信息
DDL 数据库定义语言
DML 数据库操作语言
DQL 数据库查询语言
DCL 数据库控制语言
2、操作数据库
2.1、操作数据库
1、创建数据库
create database [if not exists] zz;
2、删除数据库
drop database [if exists] zz;
3、使用数据库
use `school` --关键字需要用``包含
4、查看数据库
show databases school ---查看所有的数据库
2.2、数据库的列类型
数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准的整数 4个字节
- bigint 比较大的数据 8个字节
- float 浮点数 4个字节
- double 浮点数 8个字节
- decimal 金融计算的浮点数
字符串
- char 字符串固定的大小 0~255
- varchar 可变字符串 0~65535 常用的string
- tinytext 微型文本 2^8-1
- text 文本串 2^16-1
时间和日期
java.util.Date
- date YYYY-MM-DD ,日期格式
- time HH:mm:ss 时间格式
- detetime YYYY-MM-DD HH:mm:ss
- timestamp 时间戳 全球统一,1970.1.1到现在的毫秒数
- year 年份表示
null
没有值,不要用null运算、
2.3数据库的字段属性
每一个表都必须存在以下五个字段
id 主键
version
乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
3、规范数据库设计
- 收集信息,分析需求
- 用户表(用户登录注销,用户的个人信息,写博客,创建分类)
- 分类表(文章的分类,创建者)
- 文章表(文章的信息)
- 评论表 (用户的评论)
- 友链表(友链信息)
- 自定义表(系统信息,关键信息,关字段)–key:value
- 标识实体(把需求落地到每个字段)
- 标识实体之间的关系
- 写博客:user->blog
- 创建分类:user->categary
- 关注:user->user
- 友链:links
- 评论:user->user-blog
三大范式
第一范式(1NF)
原子性:保证每一列不可再分
第二范式(2NF)
前提:满足第一范式每张表只描述—件事情
第三范式(3NF)
前提:满足第一范式和第二范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
(规范数据库的设计)
规范性和性能的问题
关联查询的表不得超过三张表
- ·考虑商业化的需求和目标,(成本,用户体验! )数据库的性能更加重要·
- 在规范性能的问题的时候,需要适当的考虑一下规范性!
- ·故意给某些表增加一些冗余的字段。(从多表查询中变为单表查询)·
- 故意增加一些计算列(从大数据量降低为小数据量的查询:索引)
1.用户表:
列名 | 数据类型 | 长度 | 主键 | 非空 | 注释 |
---|---|---|---|---|---|
id | int | 10 | ✔ | ✔ | 用户的唯一id |
username | varchar | 60 | ✔ | 用户名 | |
password | varchar | 60 | ✔ | 用户密码 | |
telphone | int | ✔ | 用户手机号 | ||
emial | varchar | 100 | ✔ | 用户的邮箱 | |
sex | varchar | 2 | ✔ | 性别 | |
age | int | 100 | ✔ | 年龄 | |
sign | varchar | 20 | 签名 |
2.分类表
数据类型 | 长度 | 主键 | 非空 | 注释 | |
---|---|---|---|---|---|
id | int | 100 | ✔ | ✔ | 分类的id |
category_name | varchar | 30 | ✔ | 分类标签 | |
create_user_id | int | 100 | ✔ | 创建用户的id |
3.文章表
列名 | 数据类型 | 长度 | 主键 | 非空 | 注释 |
---|---|---|---|---|---|
id | int | 100 | ✔ | ✔ | 文章的唯一标识 |
title | varchar | 100 | ✔ | 文章的标题 | |
author_id | int | 100 | ✔ | 编写文章的用户 | |
category_id | int | 100 | ✔ | 文章分类 | |
content | text | ✔ | 文章内容 | ||
create_time | datetime | ✔ | 创建时间 | ||
update_time | datetime | ✔ | 修改时间 | ||
love | int | 100 | 点赞 |
4.评论表
列名 | 数据类型 | 长度 | 主键 | 非空 | 注释 |
---|---|---|---|---|---|
id | int | 100 | ✔ | ✔ | 评论的id |
blog_id | int | 100 | ✔ | 所属的文章 | |
user_id | int | 100 | ✔ | 评论人 | |
content | text | 2000 | ✔ | 评论的内容 | |
create_time | datetime | ✔ | 评论时间 | ||
user_id_parent | int | 100 | ✔ | 回复人的id |
5.友链表
列名 | 数据类型 | 长度 | 主键 | 非空 | 注释 |
---|---|---|---|---|---|
id | int | 100 | ✔ | ✔ | 友链id |
links | varchar | 100 | ✔ | 网站名称 | |
href | varchar | 200 | ✔ | 网站链接 | |
sort | int | 100 | ✔ | 排序 |