初识MySQL

一、数据库基础

  1. 数据库
    数据库(Database, DB)是按照数据结构来进行组织、存储和管理的建立在计算机存储设备上的仓库
  2. 数据库分类
    数据库分类:关系型数据库、非关系型数据库
  • 关系型数据库(Relational database):创建在关系模型基础上的数据库
  • 非关系型数据库(NoSQL):不提供SQL功能的关系数据库
  1. 数据库模型
    数据库模型:描述了数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述
  • 对象模型
  • 层次模型
  • 网状模型
  • 关系模型
  • 面向对象模型
  • 半结构化模型
  • 平面模型
  1. 数据库架构
    数据库架构:可以分为三个概括层次
  • 内层:最接近实际存储体,有关数据的实际存储方式
  • 外层:最接近用户,有关用户观看数据的方式
  • 概念层:介于两者之间的简介层
  1. 数据库操作:事务
    事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分区的工作单位

二、数据表与关系键

  1. 数据表
    数据表是关系数据库中一个非常重要的对象,是其他对象的基础,也是一系列二维数组的集合,用来存储、操作数据的逻辑结构。一个数据库可能包含若干个数据表,每张表是由行和列组成,记录一条数据数据表就增加一行,每一列是由字段名和字段数据集合组成,列被称之为字段,每一列还有自己的多个属性,例如是否允许为空、默认值、长度、类型、存储编码、注释等
  2. 数据类型
    数据类型决定了数据在计算集中的存储格式,代表不同的信息类型,大致可以分为:数值、日期/时间和字符串(字符)类型,字符串类型又包括二进制类型
  3. 关系键
    关系键是关系数据库的重要组成部分,关系键是表中一个或几个属性,用来表示该表的每一行或与另一个表产生联系,一列或一组列,其值能够唯一区分表中每个行
  4. 主键
    主键(primary key或unique key),又称主码,数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键取值不能缺失,即不能为空值(null)。unique可空,可以在一个表里的一个或多个字段定义
  • primary key不可空不可重复,在一个表里可以定义联合主键;unique索引和primary索引区别:
  • primary key = unique + not null
  • 唯一约束和主键一样都是约束的范畴,而且都可以作为外键的参考,不同的是,一张表只能有一个主键
  • 主键和唯一约束的创建需要依靠索引,如果在创建主键或唯一索引的时候没有已经建好的索引可以使用的话,Oracle会自动建立一个唯一的索引
  • 表中的任何列都可以作为主键,只要它满足以下条件:
  • 任意两行都不具有相同的主键值
  • 主键值不允许为null
  1. 超键
    超键(superkey),又称超码,实在数据库关系模式设计中唯一能够标识多元组的属性集,包含所有属性的集叫做明显(平凡)超键
  2. 候选键
    在关系模型中,候选键或候选码(candidate key)是某个关系变量的一组属性所组成的集合,它需要同时满足下列两个条件:
  • 这个属性集合始终能够确保在关系中能唯一标识元组
  • 在这个属性集合中找不出真子集能够满足条件

满足第一个条件的属性集合就是超键,因此我们可以把候选键定义为最小超键,也就是不含有多余属性的超键
候选键的重要性是它们能够在关系中唯一标识出不同的元组,因此超键也是在设计数据库模式时需要指定的最重要的约束之一。由于在关系模型中,每个关系都是一个集合,所以每个关系都至少有一个候选键(所有属性组合必然是一个超键)。但是在某些关系型数据库中表也能代表多重集,所以在每个关系中都显式定义至少一个候选键是一条很重要的设计原则。数据库管理系统通常都需要将每个关系中的某个候选键定义为主键,即这个候选键是区分不同元组的首选识别方式,如外键通常就是引用主键而非其他候选键

  1. 外键
    外键(foreign key),又称外部键。在关系数据库中,每个数据表都是由关系来连系彼此的关系,父数据表(parent entity)的主键会放在另一个数据表,当作属性以创建彼此的关系,这个属性就是外键
  2. 代理键
    在关系型数据库库设计中,代理键是在当数据表中的候选键都不适合但主键时,例如数据太长,或是意义层面太多,就会请一个无意义的但唯一的字段来代作为主键
  3. 自然键
    自然键与代理键相反,它是自然生活中唯一确定一个事物的标识

三、 数据库技术构成

  1. 数据库系统
    数据库系统由三部分组成:
  • 数据库(DB,Database System)
  • 数据库管理系统(DBMS,Database Management System)
  • 数据库应用程序(Database Application)
  1. SQL语言
    SQL(Structured Query Language),即结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据,与数据库通信
  • SQL优点:
  • SQL不是某个特定数据库供应商专有的语言,几乎所有重要的DBMS都支持SQL,所以,学习SQL使你几乎能与所有数据库打交道
  • SQL简单易学
  • SQL是一种强有力的语言,可以进行非常复杂和高级的数据库操作
  • SQL为数据库管理系统提供的功能
  • 数据定义语言(Data Definition Language, DDL):DROP、CREATE、ALTER等语句;主要用于定义数据库、表、视图、索引和触发器等。CREATE语句主要用于创建数据库、创建表、创建视图。DROP语句主要用于删除数据库、删除表、删除视图。ALTER语句主要用于修改表的定义、修改视图的定义
  • 数据操作语言(Data Manipulation Language,DML):INSERT、UPDATE、DELETE语句;主要用于插入、更新、删除数据。INSERT用于插入数据,UPDATE用于更新数据,DELETE用于删除数据
  • 数据查询语言(Data Query Language,DQL):SELECT语句,主要用于查询语句
  • 数据控制语言(Data Control Language,DCL):主要用于控制用户的访问权限,其中GRANT语句用于给用户增加权限,REVOKE语句用于收回用户的权限
  • 数据库访问技术
  • ODBC(Open Database Connectivity,开放数据库互连):提供了一种标准的API方法来访问数据库管理系统。与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关
  • JCBC(Java Database Connectivity,Java数据库连接):是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,JDBC是面向关系型数据库的

四、什么是MySQL

在WEB应用方面MySQL是最好的RDBMS,其使用C和C++编写