一什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创
建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理
系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数
等数学概念和方法来处理数据库中的数据。
RDBMS即关系数据库管理系统(RelationalDatabase Management System)的特点:
1)数据以表格的形式出现
2)每行为各种记录名称
3)每列为记录名称所对应的数据域
4)许多的行和列组成一张表单
5)若干的表单组成database
针对关系型数据库作如下解释:
1)关系型数据库可以简单的理解为二维数据库,表格式类似于excel表格,我们平时我接触的数据据,一般都是关
系型数据库。
2)关系型数据库不是唯一的高级数据库模型,也不是最优的一种,但是,关系型数据库是现今使用最广泛、最易
于理解和使用的数据库模型。
3)在我们开始学习MySQL数据库前,让我们先了解下RDBMS的一些术语:
1数据库: 数据库是一些关联表的集合。
2数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
3关系:可以理解成一张二维表,每个关系都有一个关系名,即表名。
4关系模式:对关系的描述,在数据库中通常称之为表结构。
5元组:可以理解成二维表中的一行,在数据库中常被称作记录。一行(=元组,或记录)是一组相关的数据,例
如一条用户订阅的数据。
6属性:可以理解成二维表中的一列,在数据库中常被成为字段。一列(数据元素) 包含了相同的数据, 例如邮政
编码的数据。
7域:属性的取值范围,也是数据库中某一列的取值限制。
8关键字:一组可以唯一标识元组的属性。数据库中常称为主键有一个或多个列组成。
9冗余:存储两倍数据,冗余可以使系统速度更快。
10主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
11外键:外键用于关联两个表。
12复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
13索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结
构。类似于书籍的目录。
14参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整
性约束条件,目的是保证数据的一致性。
4)关系型数据库特点:
1容易理解:二维表结构是非常贴近逻辑世界的一个概念,相对与网状、层次以及其它模型更容易理解。
2使用方便:通过SQL语言程序员和数据管理员可以很方便的在逻辑层面操作数据库而不必理解其底层实现。
3易于维护:丰富的完整性(实体完整性、参照完整性、用户自定义完整性)降低数据冗余和数据不一致的概
率。
5)关系操作:
1数据查询:选择、投影、连接、并、交、差、除
2数据操作:增加、删除、修改、查询
6)SQL(Structured Query Language):结构化查询语言,一种特殊目的的编程语言,数据库查询和程序设计语言,
用于存储数据以及查询、更新和管理关系型数据库。
SQL查询语言组成部分:
1DDL(Data DefinitionLanguages)语句:数据定义语句,用于定义不同的数据段、数据库、表、列、索引等数据
库的对象定义。常用关键字主要包括create、drop、alter等。
2DML(DataManipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数
据完整性。常用关键字包括insert、delete、update和select等。
3DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,用于
定义数据库、表、字段、用户的访问权限和安全级别。常用关键字有grant、revoke等。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL最流行的关
系型数据库管理系统,在Web应用方面MySQL是最好的RDBMS(Relational Database ManagementSystem,关系数
据库管理系统)应用软件之一。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库
内,这样就增加了速度并提高了灵活性。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版
和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择
MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
1)Mysql是开源的,所以你不需要支付额外的费用。
2)Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
3)MySQL使用标准的SQL数据语言形式。
4)Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、
Eiffel、Ruby和Tcl等。
5)Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。
6)MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最
大的表文件为8TB。
7)Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。
1)使用C和C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
2)支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、
Windows等多种操作系统。
3)为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET
和Tcl 等。
4)支持多线程,充分利用 CPU 资源。
5)优化的 SQL查询算法,有效地提高查询速度。
6)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7)提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
8)提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
9)提供用于管理、检查、优化数据库操作的管理工具。
10)支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
11)支持多种存储引擎。
12)在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6新增)。
13)复制全局事务标识,可支持自我修复式集群(5.6新增)。
14)复制无崩溃从机,可提高可用性(5.6新增)。
15)复制多线程从机,可提高性能(5.6新增)。
运行速度快,使用成本低,可移植性强,适用用户广
MySql分为两个版:
社区版:免费,开源,适合普通用户
企业版:收费,不可自由下载:功能和服务更完善:适合对功能和安全要 求高的企业用户
命令行操作MySQL?
net stop mysql : 停止mysql 服务
net start mysql : 启动mysql 服务
命令行连接MySQL?
mysql -h服务器主机地址(本机可省略) -u用户名 -p密码(可省略,回车输密码)
命令行创建数据库?
create database myschool; //创建数据库
(Query OK:SQL语句执行成功)···(1 row affected:操作影响的行数)(0.00sec : 操作执行时间)
show database myschool; //查看当前数据库是否存在MySql数据库中
DESCRIBC 表名;或 DESC 表名;//查看表定义
use myschool; //使用数据库
drop database myschool;//删除数据库
show engines //查询所有存储引擎
避免DOS窗口乱码,可执行SET NAMES gbk;
结构化查询语言!
DML(数据操作语言)?
用来操作数据库中所包含的数据:insert,update delete
DDL(数据定义语言)?
用于创建和删除数据库对象等操作:CREATE,DROP,ALTER
DQL(数据查询语言)?
用来对数据库中的数据进行查询:SELECT
DCL(数据控制语言)?
用来控制数据库组建的存取许可,存储权限等:GRANT,COMMIT,ROLLBACK
UNSIGNED属性:标识为无符号数
ZEROFILL属性:宽度(位数)不足以0填充
示例:
若某数值字段指定了ZEROFILL属性,将自动添加UNSIGNED属性
MySQL数据类型--字符串/日期类型?
存储:MySQL字符串:CHAR[10]存储,不足10位时以空格填充VARCHAR[10], 按实际大小存储
CREATE TABLE [IFNOT EXISTS] 表名
(`字段1` 数据类型 [字段属性|约束][索引][注释],
`字段2` 数据类型 [字段属性|约束][索引][注释].......
PRIMARY KEY:表示这张表中的studenyNo是主键
DROPTABLE IF EXISTS `student`;
MyISAM -InnoDB - Memory - CSV等9种
使用InnoDB: 多删除更新操作安全性高事物处理及并发生控制
查看当前默认存储引擎:SHOW VAElABLES LIKE `storage_engine%`
修改存储引擎,修改my.in 配置文件 default - storage - engine =InnoDB
CREATE TABLE 表名(#省略代码)ENGINE=存储引擎
CREATE TABLE`myisam` ( `id` INT(4))ENGINE=MySAM;
1)连接池:用于完成用户认证、线程重用、并发连接数限制、内存检测以及连接缓存。
2)SQL接口:使用SQL结构查询语言对数据库就行操作的接口(DDL DML等)
3)Parser:分析器,用来进行查询转换、权限分析获取的操作。
4)Optimizer:优化器,生成并选择最佳的访问路径。
5)Cache & Buffers:与存储引擎相关的I/O性能提升工具。
6)存储引擎(真正执行数据查询操作的工具MyISAM、InnoDB、NDB、Archive、Federated、Memory、Merge、
Partner、Community、Custom等等。