一、相关术语
Mysql简介
Mysql 是一种关系型数据库系统; 它的安全性和稳定性已足以满足许多应用程序的要求,而且有着非常高的性价比这不仅是因为MySQL本身是免费的,还因为它对硬件性能要求不那么苛刻这些优 点使MySQL成为数据库领域里事实上的标准之一,与其他的开源数据库系统相比,MySQL不仅在性能指标方面高出一截,在使用范围方面也远远领先于其他 竞争对手
什么是Mysql?Mysql有什么作用?请写出至少一个常用的管理Mysql的工具?
MySQL是 开放源码的 关系型数据库管理系统。对数据库进行统一的管理和控制,使用户能方便定义和操纵数据。
mysql.exe phpMyAdmin MySQLDumper Navicat MySQL GUI Tools
什么是关系型数据库
数据被存放在一些结构化的数据表中,而数据表之间形成内在的交叉关系。存在于数据表之间的这种关系使数据库又被称为关系型数据库
关系型数据库系统
MySQL、 Oracle、Microsoft SQL Server 和IBM DB2都是关系型数据库系统(database system)。除了管理数据,一个这样的系统还包括用来管理各种关系数据库的程序。一个合格的关系数据库系统不仅要确保各种数据的存储情况安全可靠,还 必须能够处理对现有数据进行查询、分析和排序以及对新数据进行保存等诸多命令。
数据库基本结构:数据表、字段、记录、SQL、索引
数据表:实际存放有关数据的结构 (实体)
字段:记录数据表里的每一行(数据)的记录名 (数据列,属性)
记录:数据表里的每一行(数据)被称为一条数据记录
什么是SQL:结构化查询语句
结构化查询语句是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库系统.
索引
为了在一个数据表里搜索某个特定的记录,或者提取一系列数据记录,MySQL必须把这个数据表里的所有数据记录都搜索一遍。如果数据表的体积比较庞大,在遇到这样一些查询的时候性能就会显著的下降。为解决性能下降的问题可以为查询所涉及的数据列创建并使用一个索引。
**注意:索引可以加快数据的检索操作,但会使数据修改操作变慢。每修改一条数据记录,索引就必须刷新一次。索引另一个明显缺陷是它们会在硬盘上占用相当大的空间。因此,应该只为最经常查询和最经常排序的数据列建立索引。
二、设计数据库的具体步骤
1,挑实体
2,拉关系
3,建库,建表、把实体变成表,把属性变成字段
4,1:n 把 1 这边的主键 放到 n 这边做外键
5,m:n 把两边的主键放到一个新的关系表 里 做外键
数据库设计要求
1.一个好的数据库设计方案应该满足以下几项要求:
数据表里没有重复冗余的数据;
数据表里没有 等重复的数据列;
数据表的空间占用总量越小越好; order1, order2, order3
使用频率高的查询都能以简单高效的方式执行。
2.命名要求
MySQL对数据列的名字不区分大小写,但对数据库和数据表的名字区分大小写;
数据库、数据表和数据列名字的长度最多不能超过64个字符;
在名字里要避免使用特殊字符;
数据表和数据列的名字应该有意义;
范式理论 三大范式
第一范式
内容相似的数据列必须消除(“清除”的办法是再创建一个数据表来存放);
必须为每一组相关数据分别创建一个数据表;
每条数据记录必须用一个主键来标识;
第二范式
只要数据列里的内容出现重复,就意味着应该把数据表拆分为多个子表;
拆分出来的数据表必须用外键关联起来;
第三范式
与主键没有直接关系的数据列必须消除(“消除”的办法是再创建一个数据表来存放)
实体-关系(ER)
实体:客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系.
属性:实体所具有的某一特性称为属性。一个实体可以由若干个属性来描述。
数据库关系
1:1
第一个数据表里的一条数据记录对应着第二个数据表里的一条数据记录,同时第二个数据表里的每一条数据记录也分别对应着第一个数据表里的一条数据记录
1:n
第一个数据表里的一条数据记录对应着第二个数据表的多条记录
n:m
第一个数据表里的一条记录对应着第二个数据表里的多条记录,同时第二个数据表里的一条记录也可以对应着第一个数据表的多条记录。
主键
主键的作用是帮助MySQL以最快的速度把一条特定的数据记录在数据表里的位置确定下来。
主键必须是唯一的,任意两条数据记录里的主键字段绝不允许是同样的内容;
主键都必须有索引(即“主索引”);
外键
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。
由此可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,
具有此外键的表被称为主表的从表。
外键的作用是引用另一个数据表的某条记录; 使两张表形成关联
索引
优点:加快数据的检索操作
缺点:在硬盘上占用的空间大。只为最经常查询和最经常排序的数据列建立索引。
普通索引:唯一的任务就是加快对数据的访问速度
唯一索引:目的往往不是为了提高访问速度,而只是为了避免数据出现重复。也就是说唯一索引可以保证数据的唯一性
主索引: 主索引是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主索引;
mysql表类型 (存储引擎)
MyISAM 特点是成熟、稳定和易于管理。只要没有特殊理由选择其他类型,就选用这个类型
InnoDB 最大大特色就是支持了ACID兼容的事务,安全
Memory 只存在于内存中,存取速度非常快,数据量相对较小,一旦MySQL服务器停止运行,Memory数据表也就消失了;
选择MyISAM还是InnoDB ?
可以把数据库里的不同数据表设置为不同的类型。也就是说,MyISAM和InnoDB数据表可以同时存在于同一个数据库中;根据第一个数据表的内容数据和具体用途为它们分别选择最佳的数据表类型;
如果希望以最节约空间和时间的方式来管理数据表,MyISAM数据表应该是首选。从另一个方面讲,如果应用程序需要用到事务,需要更高的安全性,或者需要允许很多用户同时修改某个数据表里的数据,InnoDB数据就值得考虑;
数据类型
数值 整型:tinyint,smallint,midiumint,int,bigint 浮点型:float,double
字符串 char(固定长度),varchar(可变长度),tinytext,text,midiumtext,longtext
日期时间
date
,time,datetime,year
选项属性
AUTO_INCREMENT 自增长
NULL NULL属性意味着指定列可以不存在值。也就是说,列值可以保持为空;
NOT NULL 如果将一个列定义为NOT NULL,将不允许向该列插入NULL值;
PRIMARY KEY 主键
DEFAULT 默认值
UNSIGNED 无符号整数
原文:http://www.cnblogs.com/jacko/p/4889045.html