数据库基础
1.什么是数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库;
数据库,简单来说是本身可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作;
数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合;
数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合;
2.数据库的基本结构
数据库的基本结构从用户视图来看分三个层次,反映了观察数据库的三种不同角度。
以内模式为框架所组成的数据库叫做物理数据库;以概念模式为框架所组成的数据叫概念数据库;以外模式为框架所组成的数据库叫用户数据库。
⑴ 物理数据层。
它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。
⑵ 概念数据层。
它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。
⑶ 用户数据层。
它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。
数据库不同层次之间的联系是通过映射进行转换的。
从数据库管理系统的角度来看,分为集中式结构、分布式结构、客户/服务器结构、并行结构;
从数据库系统应用的角度来看,常见的有B/S(浏览器/服务器结构)和C/S(客户端/服务器)结构;
3.数据库的主要特点
⑴ 实现数据共享
⑵ 减少数据的冗余度
⑶ 数据的独立性
⑷ 数据实现集中控制
⑸数据一致性和可维护性,以确保数据的安全性和可靠性
⑹ 故障恢复
4.数据库结构类型
层次结构模型数据库;
网状结构模型数据库;
关系结构模型数据库:使用二维表格来存储数据;
关系-对象模型数据库;
MySQL就是关系型数据库!
5.数据库发展阶段
人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段
6.常见数据库
Oracle(神喻):甲骨文(市场占有率最高!);
DB2:IBM;
SQL Server:微软;
Sybase:赛尔斯;
MySQL:甲骨文;
7.数据库的基本原理
概念数据模型、逻辑数据模型、关系模型、关系规范化(含函数依赖)、三级模式两级映射(像)
8.结构化查询语言(SQL)
结构化查询语言是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名;
9.SQL语言结构
结构化查询语言包含6个部分:
一:数据查询语言(DQL:Data Query Language):
其语句,也称为"数据检索语句",用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
二:数据操作语言(DML:Data Manipulation Language):
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
三:事务处理语言(TPL)
四:数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
五:数据定义语言(DDL):
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
六:指针控制语言(CCL)
10.SQL中的数据类型
字符型:char、varchar
文本型:text
数值型:int、float、double....
日期型:data、time、year、datatime
逻辑型:bit(0或1)
11.查看MySQL编码
show variables like 'char%';
character_set_client:你发送的数据必须与client指定的编码一致!!!服务器会使用该编码来解读客户端发送过来的数据;
character_set_connection:通过该编码与client一致!该编码不会导致乱码!当执行的是查询语句时,客户端发送过来的数据会先转换成connection指定的编码。但只要客户端发送过来的数据与client指定的编码一致,那么转换就不会出现问题;
character_set_database:数据库默认编码,在创建数据库时,如果没有指定编码,那么默认使用database编码;
character_set_server:MySQL服务器默认编码;
character_set_results:响应的编码,即查询结果返回给客户端的编码。这说明客户端必须使用result指定的编码来解码;
12.生成数据库脚本SQL文件
在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据
mysqldump –uroot–123 test>C:\test.sql
现在可以在C盘下找到mydb1.sql文件了!
注意,mysqldump命令是在Windows控制台下执行,无需登录mysql
13.执行SQL文件
source C:\test.sql
执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!
执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了
mysql -uroot -p123test<C:\test.sql
这种方式无需登录mysql
14.Blod
在MySQL中Blob是一个二进制的对象,它是一个可以存储大量数据的容器(如图片,音乐等等),且能容纳不同大小的数据,在MySQL中有四种Blob类型,他们的区别就是可以容纳的信息量不容分别是以下四种:
①TinyBlob类型 最大能容纳255B的数据
②Blob类型 最大能容纳65KB的
③MediumBlob类型 最大能容纳16MB的数据
④LongBlob类型 最大能容纳4GB的数据
15.<=>运算符
MySQL有一个特殊的等于运算符“<=>”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE;
16.MySQL的执行流程
1.客户端请求,服务端(连接器)开启线程响应用户
2.用户发起SQL语句查询数据库
3.查询缓存:记录用户的SQL查询语句。如果查询同样内容,就返回缓存。
4.如果缓存中没有对应的结果,则进入分析器。(分析器也可能借鉴缓存)
不得不说说:
语法分析器。用户命令语法是否正确。将用户的命令进行切片,一个词一个词用空格隔开,获得用户要查询的表、内容、权限等。
5.优化:执行路径的选择,生成执行树。每一个SQL语句都有很多执行路径。优化的目的就是在这些执行路径里面,选择一个最优的执行路径。
6.存储引擎:用于管理存储在文件系统或是裸设备上的数据管理程序。它本身给上层应用提供不同的管理,有的支持事务,有的不支持事务。
17.数据库的对象
逻辑对象:表,索引,视图,触发器,存储过程,存储函数,时间调度器,游标,用户。
物理对象:数据管理组件(也可称为元数据),存储引擎,存储为物理文件。
数据库管理系统的基本功能:
管理存储,安全管理,元数据管理,事务管理,ACID(原子性,一致性,隔离性,持久性),连接管理,性能优化,备份和还原机制,相应数据查询/修改请求。
存储引擎:将数据存储下来的中间层
18.数据模型
根据不同的应用目的,数据模型可以分为概念模型(E-R图)、逻辑模型、物理模型;
逻辑模型有层次模型、网状模型、关系模型、面向对象模型
19.数据库的设计步骤
需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行与维护
20.说出一些数据库优化方面的经验?
用PreparedStatement一般来说比Statement性能高:一个sql发给服务器去执行,涉及步骤:语法检查、语义分析,编译,缓存