数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
所谓“数据库”因此一定办法储存在一起、能与多个用户共享、具有尽可能小的冗余度、与运用程序彼此独立的数据凑集。
关系数据库

MySQL
MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)
Percona Server(MySQL的代替品·)
PostgreSQL
Microsoft Access
Microsoft SQL Server
Google Fusion Tables
FileMaker
Oracle数据库
Sybase
dBASE
Clipper
FoxPro
foshub
险些所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以相互集成。
非关系型数据库(NoSQL)
主条款:NoSQL
BigTable(Google)
Cassandra
MongoDB
CouchDB
键值(key-value)数据库
Apache Cassandra(为Facebook所利用):高度可扩展
Dynamo
LevelDB(Google)
数据库模型
工具模型
层次模型(轻量级数据访问协议)
网状模型(大型数据储存)
关系模型
面向工具模型
半构造化模型
平面模型(表格模型,一样平常在形式上是一个二维数组。如表格模型数据Excel)
架构
数据库的架构可以大致区分为三个概括层次:内层、观点层和外层。
数据库管理系统(DBMS)是为管理数据库而设计的打算机软件系统,一样平常具有存储、截取、安全保障、备份等根本功能,目前主流的数据库管理系统有:Oracle、MySQL、SQL Server、DB2和Sybase。下面给大家先容一下这几款主流的数据库以及它们之间的差异。
一、Oracle
Oracle数据库是甲骨文公司推出的一款关系数据库管理系统,是当前数据库领域最有名、运用最广泛的数据库管理系统之一,Oracle产品覆盖了大、中、小型机等几十种机型。
Oracle数据库具有以下特点:
1、Oracle数据库可运行于大部分硬件平台与操作系统上。
2、Oracle能与多种通讯网络相连,支持多种网络协议。
3、Oracle的操作较为繁芜,对数据库管理职员哀求较高。
4、Oracle具有良好的兼容性、可移植性、可连接性和高生产率。
5、Oracle的安全性非常高,安全可靠。
二、MySQL
MySQL也是一款关系型数据库管理系统,由MySQL AB 公司开拓,目前属于 Oracle 旗下产品,MySQL 是最盛行的关系型数据库管理系统之一。MySQL也是一款开源的SQL数据库管理系统,是浩瀚小型网站作为网站数据库的选择。
首先概览下mysql的知识体系:
根本:
sql语句
表构造设计
调优:
索引、慢查询优化
配置参数调优
核心事理:
InnoDb存储引擎 (包括隔离级别、事务、锁、缓存池、回滚日志等等)
Mysqld (包括连接管理、进程管理、查询缓存、查询优化、日志等等)
架构与运维:
用户与权限、安全
备份与规复
日志
分布式与高可用
MySQL数据库具有以下特点:
1、MySQL是开源的,可供用户免费利用。
2、MySQL支持多线程,充分利用CPU资源。
3、MySQL对 PHP有很好的支持,PHP是比较盛行的 Web 开拓措辞,搭配 PHP 和 Apache 可组成良好的开拓环境。
4、MySQL供应TCP/IP、ODBC和JDBC等多种数据库连接路子。
三、SQL Server
SQL Server是美国微软公司推出的一款关系型数据库管理系统,是一款可扩展的、高性能的、为分布式客户机/做事器打算所设计的数据库管理系统,实现了与WindowsNT的有机结合,供应了基于事务的企业级信息管理系统方案。
SQL Server数据库具有以下特点:
1、SQL Server采取图形界面,操作大略,管理方便。
2、SQL Server开放性不敷,只能在Windows平台上运行。
3、SQL Server可以用ADO,DAO,OLEDB,ODBC连接。
4、SQL Server是几大须要收费的主流数据库中收费最低的,掩护用度也较低。
5、SQL Server具有强壮的事务处理功能,采取各种方法担保数据的完全性。
SQL包括了所有对数据库的操作,紧张是由4个部分组成:
1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑构造,包括定义数据库、基本表、视图和索引4部分。
2.数据操纵:这一部分又称为“SQL DML”,个中包括数据查询和数据更新两大类操作,个中数据更新又包括插入、删除和更新三种操作。
3.数据掌握:对用户访问数据的掌握有基本表和视图的授权、完全性规则的描述,事务掌握语句等。
4.嵌入式SQL措辞的利用规定:规定SQL语句在宿主措辞的程序中利用的规则。
下面我们将分别先容:
数据定义
SQL数据定义功能包括定义数据库、基本表、索引和视图。
首先,让我们理解一下SQL所供应的基本数据类型:(如^00100009b^)
1.数据库的建立与删除
(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:
CREATE DATABASE <数据库名> 〔其它参数〕
个中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失落误。〔其它参数〕因详细数据库实现系统不同而异。
例:要建立项目管理数据库(xmmanage),其语句应为:
CREATE DATABASE xmmanage
(2)数据库的删除:将数据库及其全部内容从系统中删除。
其语句格式为:DROP DATABASE <数据库名>
例:删除项目管理数据库(xmmanage),其语句应为:DROP DATABASE xmmanage
2.基本表的定义及变更
本身独立存在的表称为基本表,在SQL措辞中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修正。
数据查询
SQL是一种查询功能很强的措辞,只假如数据库存在的数据,总能通过适当的方法将它从数据库中查找出来。SQL中的查询语句只有一个:SELECT,它可与其它语句合营完成所有的查询功能。SELECT语句的完全语法,可以有6个子句。完全的语法如下:
SELECT 目标表的列名或列表达式凑集
FROM 基本表或(和)视图凑集
〔WHERE条件表达式〕
〔GROUP BY列名凑集
〔HAVING组条件表达式〕〕
〔ORDER BY列名〔凑集〕…〕
大略查询,利用TOP子句
查询结果排序order by
带条件的查询where,利用算术表达式,利用逻辑表达式,利用between关键字,利用in关键字,
模糊查询like
全体语句的语义如下:从FROM子句中列出的表中,选择知足WHERE子句中给出的条件表达式的元组,然后按GROUPBY子句(分组子句)中指定列的值分组,再提取知足HAVING子句中组条件表达式的那些组,按SELECT子句给出的列名或列表达式求值输出。ORDER子句(排序子句)是对输出的目标表进行重新排序,并可附加解释ASC(升序)或DESC(降序)排列。
在WHERE子句中的条件表达式F中可涌现下列操作符和运算函数:
算术比较运算符:<,<=,>,>=,=,<>。
逻辑运算符:AND,OR,NOT。
凑集运算符:UNION(并),INTERSECT(交),EXCEPT(差)。
凑集成员资格运算符:IN,NOT IN
谓词:EXISTS(存在量词),ALL,SOME,UNIQUE。
聚合函数:AVG(均匀值),MIN(最小值),MAX(最大值),SUM(和),COUNT(计数)。
F中运算工具还可以是另一个SELECT语句,即SELECT语句可以嵌套。
上面只是列出了WHERE子句中可涌现的几种紧张操作,由于WHERE子句中的条件表达式可以很繁芜,因此SELECT句型能表达的语义远比其数学原形要繁芜得多。
下面,我们以上面所建立的三个基本表为例,演示一下SELECT的运用:
1.无条件查询
例:找出所有学生的的选课情形
SELECT st_no,su_no
FROM score
例:找出所有学生的情形
SELECT
FROM student
“”为通配符,表示查找FROM中所指出关系的所有属性的值。
2.条件查询
条件查询即带有WHERE子句的查询,所要查询的工具必须知足WHERE子句给出的条件。
例:找出任何一门课成绩在70以上的学生情形、课号及分数
SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.score
FROM student,score
WHERE score.score>=70 AND score.stno=student,st_no
这里利用UNIQUE是不从查询结果集中去掉重复行,如果利用DISTINCT则会去掉重复行。其余逻辑运算符的优先顺序为NOT→AND→OR。
例:找出课程号为c02的,考试成绩不及格的学生
SELECT st_no
FROM score
WHERE su_no=‘c02’AND score<60
3.排序查询
排序查询是指将查询结果按指定属性的升序(ASC)或降序(DESC)排列,由ORDER BY子句指明。
例:查找不及格的课程,并将结果按课程号从大到小排列
SELECT UNIQUE su_no
FROM score
WHERE score<60
ORDER BY su_no DESC
4.嵌套查询
嵌套查询是指WHERE子句中又包含SELECT子句,它用于较繁芜的跨多个基本表查询的情形。
例:查找课程编号为c03且课程成绩在80分以上的学生的学号、姓名
SELECT st_no,st_name
FROM student
WHERE stno IN (SELECT st_no
FROM score
WHERE su_no=‘c03’ AND score>80 )
这里须要明确的是:当查询涉及多个基本表时用嵌套查询逐次求解层次分明,具有构造程序设计特点。在嵌套查询中,IN是常用到的谓词。若用户能确切知道内层查询返回的是单值,那么也可用算术比较运算符表示用户的哀求。
5.打算查询
打算查询是指通过系统供应的特定函数(聚合函数)在语句中的直策应用而得到某些只有经由打算才能得到的结果。常用的函数有:
COUNT() 打算元组的个数
COUNT(列名) 对某一列中的值打算个数
SUM(列名) 求某一列值的总和(此列值是数值型)
AVG(列名) 求某一列值的均匀值(此列值是数值型)
MAX(列名) 求某一列值中的最大值
MIN(列名) 求某一列值中的最小值
例:求男学生的总人数和均匀年事
SELECT COUNT(),AVG(st_age)
FROM student
WHERE st_sex=‘男’
例:统计选修了课程的学生的人数
SELECT COUNT(DISTINCT st_no)
FROM score
把稳:这里一定要加入DISTINCT,由于有的学生可能选修了多门课程,但统计时只能按1人统计,以是要利用DISTINCT进行过滤。
数据更新
数据更新包括数据插入、删除和修正操作。它们分别由INSERT语句,DELETE语句及UPDATE语句完成。这些操作都可在任何基本表上进行,但在视图上有所限定。个中,当视图是由单个基本表导出时,可进行插入和修正操作,但不能进行删除操作;当视图是从多个基本表中导出时,上述三种操作都不能进行。
1.数据插入
将数据插入SQL的基本表有两种办法:一种是单元组的插入,另一种是多元组的插入。
单元组的插入:向基本表score中插入一个成绩元组(100002,c02,95),可利用以下语句:
INSERT INTO score(st_no,su_no,score) VALUES(‘100002’,‘c02’,95)
由此,可以给出单元组的插入语句格式:
INSERT INTO表名(列名1〔,列名2〕…) VALUES(列值1〔,列值2〕…)
个中,列名序列为要插入值的列名凑集,列值序列为要插入的对应值。若插入的是一个表的全部列值,则列名可以省略不写如上面的(st_no,su_no,score)可以省去;若插入的是表的部分列值,则必须列出相应列名,此时,该关系中未列出的列名取空值。
多元组的插入:这是一种把SELECT语句查询结果插入到某个已知的基本表中的方法。
例如:须要在表score中求出每个学生的均匀成绩,并保留在某个表中。此时可以先创建一个新的基本表stu_avggrade,再用INSERT语句把表score中求得的每一个学生的均匀成绩(用SELECT求得)插入至stu_avggrade中。
CREATE TABLE stu_avggrade
(st_no CHAR(10) NOT NULL,//定义列st_no学号,类型为10位定长字符串,非空
age_grade SMALLINT NOT NULL )// 定义列age_grade均匀分,类型为短整形,非空
INSERT INTO stu_avggrade(st_no,age_grade)
SELECT st_no,AVG(score)
FROM score
GROUP BY st_no //由于哀求每一个学生所有课程的均匀成绩,必须按学号分组进行打算。
2.数据删除
SQL的删除操作是指从基本表中删除知足WHERE<条件表达式>的记录。如果没有WHERE子句,则删除表中全部记录,但表构造依然存在。其语句格式为:
DELETE FROM表名〔WHERE 条件表达式〕
下面举例解释:
单元组的删除:把学号为100002的学生从表student中删除,可用以下语句:
DELETE FROM student
WHERE st_no=‘100002’//由于学号为100002的学生在表student中只有一个,所以为单元组的删除
多元组的删除:学号为100002的成绩从表score中删除,可用以下语句:
DELETE FROM score
WHERE st_no=‘100002’//由于学号为100002的元组在表score中可能有多个,所以为多元组删除
带有子查询的删除操作:删除所有不及格的学生记录,可用以下语句
DELETE FROM student
WHERE st_no IN
(SELETE st_no
FROM score
WHERE score<60)
3.数据修正
修正语句是按SET子句中的表达式,在指定表中修正知足条件表达式的记录的相应列值。其语句格式如下:
UPDATE 表名 SET 列名=列改变值〔WHERE 条件表达式〕
例:把c02的课程名改为英语,可以用下列语句:
UPDATE subject
SET su_subject=‘英语’
WHERE su_no=‘c02’
例:将课程成绩达到70分的学天生就,再提高10%
UPDATE score
SET score=1.1score
WHERE score>=70
SQL的删除语句和修正语句中的WHERE子句用法与SELECT中WHERE子句用法相同。数据的删除和修正操作,实际上要先做SELECT查询操作,然后再把找到的元组删除或修正。
数据掌握
由于数据库管理系统是一个多用户系统,为了掌握用户对数据的存取权利,保持数据的共享及完备性,SQL措辞供应了一系列的数据掌握功能。个中,紧张包括安全性掌握、完全性掌握、事务掌握和并发掌握。
1.安全性掌握
数据的安全性是指保护数据库,以防造孽利用造成数据透露和毁坏。担保数据安全性的紧张方法是通过对数据库存取权力的掌握来防止造孽利用数据库中的数据。即限定不同用户操作不同的数据工具的权限。
存取权掌握包括权力的付与、检讨和撤消。权力付与和撤消命令由数据库管理员或特定运用职员利用。系统在对数据库操作前,先核实相应用户是否有权在相应数据上进行所哀求的操作。
(1)权力付与:权力授有数据库管理员专用的授权和用户可用的授权两种形式。数据库管理员专用授权命令格式如下:
|CONNECT |
GRANT|RESOURCE|TO 用户名〔IDENTIFED BY 口令〕
|DBA |
个中,CONNECT表示数据库管理员许可指定的用户具有连接到数据库的权力,这种授权是针对新用户;RESOURCE表示许可用户建立自己的新关系模式,用户得到CONNECT权力后,必须得到RESOURCE权力才能创建自己的新表;DBA表示数据库管理员将自己的特权付与指定的用户。若要同时付与某用户上述三种授权中的多种权力,则必须通过三个相应的GRANT命令指定。
其余,具有CONNECT和RESOURCE授权的用户可以建立自己的表,并在自己建立的表和视图上具有查询、插入、修正和删除的权力。但常日不能利用其他用户的关系,除非能得到其他用户转授给他的相应权力。
例:若许可用户SSE连接到数据库并可以建立他自己的关系,则可通过如下命令付与权力:
GRANT CONNECT TO SSE IDENTIFIED BY BD1928
GRANT RESOURCE TO SSE
用户可用的授权是指用户将自己拥有的部分或全部权力转授给其他用户的命令形式,其命令格式如下:
|SELECT |
|INSERT |
|DELETE |
GRANT|UPDATE(列名1[,列名2]…)|ON|表名 |TO|用户名|〔WITH GRANT OPTION〕
|ALTER | |视图名| |PUBLIC|
|NDEX |
|ALL |
若对某一用户同时付与多种操作权力,则操作命令符号可用“,”相隔。
PUBLIC 表示将权力付与数据库的所有用户,利用时要把稳:
任选项WITH GRANT OPTION表示接到授权的用户,具有将其所得到的同时权力再转授给其他用户权力。
例:如果将表student的查询权付与所有用户,可利用以下命令:
GRANT SELECT ON student TO PUBLIC
例:若将表subject的插入及修正权力付与用户SSE并使得他具有将这种权力转授他人的权力,则可利用以下命令:
GRANT INSERT,UPDATE(su_subject) ON subject TO SSE WITH GRANT OPTION
这里,UPDATE后面跟su_subject是指出其所能修正的列。
(2)权力回收:权力回收是指回收指定用户原已付与的某些权力。与权力付与命令相匹配,权力回收也有数据库管理员专用和用户可用的两种形式。
DBA专用的权力回收命令格式为:
|CONNECT |
REVOKE|RESOURCE|FROM用户名
|DBA |
用户可用的权力回收命令格式为:
|SELECT |
|INSERT |
|DELETE |
REVOKE|UPDATE(列名1〔,列名2〕…) |ON|表名 |FROM |用户名|
|ALTER | |视图名| |PUBLIC|
|INDEX |
|ALL |
例:回收用户SSE的DBA权力:
REVOKE DBA FROM SSE
2.完全性掌握
数据库的完全性是指数据的精确性和相容性,这是数据库理论中的主要观点。完全性掌握的紧张目的是防止语义上禁绝确的数据进入数据库。关系系统中的完全性约束条件包括实体完全性、参照完全性和用户定义完全性。而完全性约束条件的定义紧张是通过CREATE TABLE语句中的〔CHECK〕子句来完成。其余,还有一些赞助命令可以进行数据完全性保护。如UNIQUE和NOT NULL,前者用于防止重复值进入数据库,后者用于防止空值。
3.事务掌握
事务是并发掌握的基本单位,也是规复的基本单位。在SQL中支持事务的观点。所谓事务,是用户定义的一个操作序列(凑集),这些操作要么都做,要么一个都不做,是一个不可分割的整体。一个事务常日以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。
SQL供应了事务提交和事务撤消两种命令:
(1)事务提交:事务提交的命令为:
COMMIT 〔WORK〕
事务提交标志着对数据库的某种运用操作成功地完成,所有对数据库的操作都必须作为事务提交给系统时才有效。事务一经提交就不能撤消。
(2)事务撤消:事务撤消的命令是:
ROLLBACK 〔WORK〕
事务撤消标志着相应事务对数据库操作失落败,因而要撤消对数据库的改变,即要“回滚”到相应事务开始时的状态。
当系统非正常结束时(如掉电、系统去世机),将自动实行ROLLBACK命令。
四、DB2
DB2是美国IBM公司开拓的一款关系型数据库管理系统,紧张运用于大型运用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,运用于所有常见的做事器操作系统平台下。
DB2数据库具有以下特点:
1、DB2采取了数据分级技能,能够使大型机数据很方便地下载到LAN数据库做事器,使得客户机/做事器用户和基于LAN的运用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。
2、DB2适用于数据仓库和在线事物处理,性能高。
3、DB2广泛运用于大型软件系统,向下兼容性较好。
4、DB2拥有一个非常完备的查询优化器,为外部连接改进了查询性能。
5、DB2具有很好的网络支持能力,可同时激活上千个活动线程。
五、Sybase
Sybase数据库是由美国Sybase公司推出的一种关系数据库系统,是一种范例的UNIX或WindowsNT平台上客户机/做事器环境下的大型数据库系统,由于基于客户机/做事器体系构造,Sybase支持共享资源且在多台设备间平衡负载。
Sybase数据库具有以下特点:
1、Sybase是基于客户/做事器体系构造的数据库,支持共享资源且在多台设备间平衡负载。
2、Sybase操作较为繁芜,对数据库管理员的哀求较高。
3、Sybase有非常好的开放性,能在险些所有主流平台上运行。
4、Sybase是一款高性能、安全性非常高的数据库。
来源网络,侵权联系删除
私信我或关注微旗子暗记:狮范儿,回答:学习,获取免费学习资源包。