如题所述
数据库基础知识——Mysql包括什么是数据库、、主流数据库、MySQL架构、、服务器,数据库,表之间的关系、、使用数据库、、SQL分类、存储引擎。
1、什么是数据库
数据库是用来存储数据的。那么我们之前学习过的存储数据可以使用文件,那么为什么还要弄个数据库呢?
这就要谈谈用文件保存数据的几个缺点:
文件的安全性问题、文件不利于数据查询和管理、文件不利于存储海量数据、文件在程序中控制不方便。
因此为了解决上述的问题,专家们设计出更利于管理数据的东西——数据库,它更有效地管理数据。数据库的水平是衡量一个程序员水平的重要指标。
数据库:物理操作系统文件或其他形式文件类型的集合。在MySQL数据库中,数据库文件可
以是frm,MYD,MYI,ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放在内存之中的文件,但是定义仍然不变。
2、主流数据库
l MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
l SQLSever:微软的产品,.Net程序元的最爱,常用于中大型项目。
l Oracle:甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
2.1MySQL
我主要学习MySQL数据库,那么就再了解了解MySQL数据库。MySQL被设计为一个可移植的数据库,几乎在当前所有系统上都能运行,如:Linux,Windows,Mac,Solaris和FreeBSD。尽管各平台在底层(如线程)实现方面都各有不同。
但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。因此,用户应该能够很好的理解MySQL数据库在所有这些平台上是如何运作的。
3、MySQL架构:
MySQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。需要牢记的是,数据库实例才是真正用于操作数据库文件的。在MySQL中,实例与数据库的关系通常是一一对应的。即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库被多个数据实例使用的情况。
MySQL被设计为一个单进程多线程架构的数据库,这点与SQLServer比较类似,但与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多线程架构的)。这也就是说,MySQL数据库实例在系统上的表示就是一个进程。可以通过ps指令观察MySQL数据库启动后的进程情况:
注意进程为17022的进程就是MySQL的实例。当启动实例时,MySQL数据库会去读取配置文件,根据配置文件中的参数来启动数据库实例。在MySQL数据库中可以没有配置文件,在这种情况下,MySQL会按照编译时的默认参数设置启动实例。
查看当MySQL实例启动时,会在那些位置查找配置文件:
[Lxy@VM-20-12-centos~]$mysql--help|grepmy.cnforderofpreference,my.cnf,$MYSQL_TCP_PORT,/etc/my.cnf/etc/mysql/my.cnf/usr/etc/my.cnf~/.my.cnf
可以看到,MySQL数据库是按照/etc/my.cnf->/etc/mysql/my.cnf->/usr/etc/my.cnf->~/.my.cnf的顺序来读取配置文件的。如果几个配置文件中都有同一个参数,MySQL数据库会按照读取到的最后一个参数为准。在Linux环境下,配置文件一般放在/etc/my.cnf下。在Windows平台下,配置文件的后缀名可能是.cnf或者.ini。
配置文件中有一个参数datadir,该参数指定了数据库所在的路径。在Linux操作系统下默认datadir为/usr/local/mysql/data,用户可以修改该参数,当然也可以使用该路径。
3.1连接服务器
输入:
mysql-uroot-p。
注意:
如果没有写-h127.0.0.1默认是本地连接
如果没有写``-P3306`默认是3306端口号
3.2服务器管理。
l 执行win+r输入services.msc打开服务管理器。
l 通过下图左侧停止,暂停,重启按钮进行服务管理(一般建议不要动)。
4、服务器,数据库,表之间的关系
所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
5、使用数据库
这里使用数据库只是一些简单的sql语句,更加相信更加复杂的将在后面的博客中逐渐呈现。
显示当前所有数据库。
showdatabases;
使用数据库。
use[数据库名];//例如use104_db;
创建数据库表。
createtablestudent(idint,namevarchar(20));
查看表信息。
desc[表名];//例如descstudent;
像指定表中插入数据。
insertinto[表名](id,name)values(1,"张三");//例如:insertintostudent(id,name)values(1,"张三");//也可以如果是全属性插入也可以省略属性字段//例如:insertintostudentvalues(2,"李四");//如果明确指定属性字段后面的插入字段必须与之匹配//例如:insertintostudent(id)values(3);
查询表中的数据。
清屏。
systemclear//mysql并没有提供清屏的指令可以使用系统自带的指令:
退出数据库。
6、SQL分类
l DDL【DataDefinitionlanguage】数据定义语言,用来维护存储数据的结构
代表指令:create,drop,alter。
l DML【DataManipulationLanguage】数据操纵语言,用来对数据进行操作的
代表指令:insert,delete,update。
l DML中又单独分了一个DQL,数据查询语言,代表指令:select。
l DCL【DataControlLanguage】数据控制语言,主要负责权限管理和事务
代表指令:grant,revoke,commit。
7、存储引擎
存储引擎:数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。MySQL的核心就是插件式存储引擎,支持多种存储引擎。