1. 数据库简介:
数据库(database): 数据库是数据的汇集,它以一定的组织形式存于存储介质上。
补充说明: 数据库软件称为数据库管理系统(DBMS), DBMS实现数据库系统的各种功能,是数据库系统的核心。
关系型数据库: 各个数据之间存在关联是关系型数据库得名的主要原因。 当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系型数据: 非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。 有NoSql、Cloudant等。
2.关系型数据库常见术语:
行(row): 表是一种结构化的文件,可用于存储特定类型的数据,表中的每一行,也称为一条记录。 列(column): 表中的一个字段,所有表都是由一个或多个列组成的。表中的每一列,称为属性,字段。 索引: 将表中的一个或多个字段中的数据复制一份另存,并且按特定次序排序存储。 视图: 视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
约束(constraint)条件: 表中的数据要遵守的限制。 主键: 一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行。 惟一键: 一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个 外键: 一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据。 检查: 字段值在一定范围内。 UNSIGNED : 无符号,值从0开始,无负数。 ZEROFILL: 零填充,当数据的显示长度不够的时候,使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED。 NOT NULL: 非空约束,表示该字段的值不能为空。 DEFAULT: 表示如果插入数据时没有给该字段赋值,那么就使用默认值。 AUTO_INCREMENT: 自增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,只能增长。 FOREIGN KEY: 外键约束,目的是为了保证数据的完成性和唯一性,以及实现一对一或一对多关系。
范式: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 1NF: 无重复的列,同一列中不能有多个值。 说明:第一范式( 1NF)是对关系模式的基本要求,不满足第一范式( 1NF)的数据库就不是关系数据库。 2NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。 3NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。
存储引擎: 数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。 InnoDB存储引擎: InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。 MyISAM存储引擎: MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。它拥有较高的插入、查询速度,但不支持事务,不支持外键。
3.关系型数据库的常见组件:
数据库: database 表: table 行: row 列: column 索引: index 视图: view 用户: user 权限: privilege 存储过程: procedure 存储函数: function 触发器: trigger 事件调度器: event scheduler,任务计划
SQL语句分类: DDL: Data Defination Language 数据定义语言 CREATE, DROP, ALTER DML: Data Manipulation Language 数据操纵语言 INSERT, DELETE, UPDATE DCL:Data Control Language 数据控制语言 GRANT, REVOKE, COMMIT, ROLLBACK DQL:Data Query Language 数据查询语言 SELECT
数值类型: MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型: 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT 浮点数类型:FLOAT、DOUBLE、DECIMAL 字符串类型: CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT等。 日期类型: Date、DateTime、TimeStamp、Time、Year
4.数据库的函数、存储过程
函数: 系统函数和自定义函数。 自定义函数 (user-defined function UDF): 创建UDF CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,[parameter_name type,...]) RETURNS {STRING|INTEGER|REAL} runtime_body
存储过程: 存储过程就是一条或多条SQL语句的集合,可视为批处理文件,但是其作用不仅用于批处理。 存储程序分为:1、存储过程 2、函数。
存储过程与自定义函数的区别: 存储过程实现的过程要复杂一些,而函数的针对性较强。 存储过程可以有多个返回值,而自定义函数只有一个返回值。 存储过程一般可独立执行,而函数往往是作为其他SQL语句的一部分来使用。
触发器: 触发器的执行不是由程序调用,而是由事件来触发、激活从而实现执行。 创建触发器 CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_body
5.总结: