MySQL数据库设计
mysql:
dbs 数据库系统
bdms 数据库管理系统
bda 数据库管理员
db 数据库
dba通过dbms来操作db!
软件项目开发周期中数据库设计
01.需求分析阶段:分析客户的业务和数据处理需求
02.概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整
03.详细设计阶段:应用三大范式审核数据库结构
04.代码编写阶段:物理实现数据库,编码实现应用
05.软件测试阶段:……
06.安装部署:……
数据库设计步骤:
01.收集信息
02.标识实体
03.标识每个实体的属性
04.标识实体之间的关系
E-R图:
01.矩形 实体
02.椭圆形 属性
03.菱形 实体与实体的关系
1 :1 : 一对一
1:N: 一对多
M:N: 多对多
必须满足 三大范式
第一范式确保每列的原子性
第二范式要求每个表只描述一件事情
第三范式要求表中各列必须和主键直接相关,不能间接相关
sql 语句的执行 顺序
5.查询 select
1.找表 from
2.条件 where
3.分组 group by
4.条件 having
6.排序 order by
7.分页 limit
数据库的恢复和备份
为保证账户密码安全,命令中可不写密码,但参数“-p”必须有,回车后根据提示写密码!
数据库的备份
cmd进入命令行
mysqldump -u用户名 -p 数据库名称 >指定的文件
数据库的恢复
前提是必须要有对应的数据库
mysql -u用户名 -p <指定的文件
1. mysql为DOS命令
2.在执行该语句之前,必须在MySQL服务器中创建新数据库,如果不存在恢复数据库过程将会出错
关系型数据库和非关系型数据库
登录mysql
mysql -h主机地址 -u用户名 -p密码
1.对象没有静态和动态之分。。。。。。。。有静态类。。。。
2.Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。
3.CreateNew = 1;
新建
Create = 2;
Open = 3;
OpenOrCreate = 4;
Truncate = 5;
Append = 6;
4.在C#中类只能有两个访问修饰符,public和internal,在任何项目中都可以使用
5.静态方法中只能使用静态成员
如果想访问非静态成员,先new出当前对象,然后再用对象名.变量名,即可访问
在普通方法中既可以访问静态成员也可以访问非静态访问
java实现数据库编程
1.设计数据库的步骤
1.收集信息
2.标识实体
3.标识实体的每个属性
4.标识实体之间的关系
2.E-R图 (实体 关系 图)
1.矩形 实体
2.椭圆 属性
3.菱形 关系
3.二维表
平面(行和列,X-Y轴)。。。。。二维表的形式表示实体和实体间联系的数据模型即关系模式
行:记录
列:字段
4.如何转化数据库模型图
使用PowerDesigner 软件
物理模型:
通过blog 绘制一个概念模型 然后 转换成物理模型
5.DBMS (Database Management System) 数据库管理系统
DBS (Database System) 数据库系统
6.
第二范式在第一范式的基础上,保证表中每列与主键相关。就是每张表只描述一件事情。
第三范式:在满足第二范式基础上,保证表中除主键列外的其他列,都直接依赖于主键列,则符合第三范式
设计没有好坏,没有对错之分,所谓仁者见仁智者见智
1.MySQL的优势
1.运行速度快,
2.使用成本低,
3.可移植性强,
4.使用用户广
2.Mysql执行流程
JDBC ODBC Python Ruby 接口 语言提供的接口==》
(身份的验证/授权)Connection Pool 连接池===>sql指令:CCache缓存,如果有缓存的SQL直接返回数据
===>SQL接口===>查询优化器(自己的优化策略)===>使用解释器解析语句===>(存储)数据库引擎拎取数据===>DB File数据文件
3.MySQL -uroot -proot login
默认状态 no database selected
所以切换到一个指定的数据库 mysql
使用命令行 看数据库的安装路径 和 数据存储路径
使用命令前:切换到MySQL数据库
数据库的安装路径
select @@basedir from dual;
数据存储路径
select @@basedir from dual;
常用数据类型
整型 int
小数 double
精确度要求高的 ———Decimal(18,4)
对应Java中的类型 BigDecimal
字符串:nvarchar(32) varchar char
char:定长字符串(一旦设定了长度,无论真实内容有多少,都要占用指定长度的空间)
varchar:可变字符串
nvarchar()防止乱码出现
varchar(n),nvarchar(n) 中的n怎么解释:
nvarchar(n)最多能存n个字符,不区分中英文。
varchar(n)最多能存n个字节,一个中文是两个字节。
所占空间:
nvarchar(n)一个字符会占两个字节空间。
varchar(n)中文占两字节空间,英文占一个。
n的取值范围:
nvarchar(n)?? n的范围是:1与4000之间
varchar(n)?? n的范围是:1与8000之间
n的大小是否会影响性能:
varchar及nvarchar里的长度 n 不会影响空间大小及性能。除非n是max并且内容大于4000或8000
设置n更多的是业务需要,如限制身份证只能输入18位,再多就报错,或者防止恶意攻击撑爆硬盘。对空间及性能都没有影响
n设置多大比较好:
既然对空间及性能都没有影响,那我们只要考虑业务需要就可以了,我分析过微软的数据库,大都设置为:256,也会看到64,128,512,max等,可能是便于记忆吧。
varchar(n),nvarchar(n)存储空间举例解释:
包含 n 个字符的可变长度 Unicode 字符数据。字节的存储大小是所输入字符个数的两倍。?
两字段分别有字段值:我和coffee?
那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。?
如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar。
varchar和nvarchar如何选择?
varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unicode来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unicode编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节.
3.日期类型
DateTime