数据库 MySQL 之 基本概念
数据库 MySQL 之 基本概念
浏览目录
概述
数据库的特点
数据库的分类
选择MySQL的理由 & MariaDB 介绍
下载及安装
SQL介绍
一、概述
1、数据(data)
存储在表中的信息就叫做数据.
2、数据库(Database,简称DB)
数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。更简单的形象理解,数据库和我们生活中存放杂物的仓库性质一样,区别只是存放的东西不同。
3、数据库表(table)
数据表是关系数据库中一个非常重要的对象,是其它对象的基础,也是一系列二维数组的集合,用来存储、操作数据的逻辑结构。根据信息的分类情况。
一个数据库中可能包含若干个数据表,每张表是由行和列组成,记录一条数据,数据表就增加一行,每一列是由字段名和字段数据集合组成,列被称之为字段,
每一列还有自己的多个属性,例如是否允许为空、默认值、长度、类型、存储编码、注释等。
4、数据库系统有3个主要的组成部分
1).数据库(Database System):用于存储数据的地方。
2).数据库管理系统(Database Management System,DBMS):用户管理数据库的软件。
3).数据库应用程序(Database Application):为了提高数据库系统的处理能力所使用的管理数据库的软件补充。
5、数据库的发展史(五个阶段)
1).文件系统
数据库系统的萌芽阶段,通过文件来存取数据.
文件系统是数据库系统的萌芽阶段,出现在上世纪五六十年代,可以提供简单的数据存取功能,但无法提供完整、统一的数据管理功能,例如复杂查询等。所以在管理较少、较简单的数据或者只是用来存取简单数据,没有复杂操作的情况下,会使用文件系统
2).层次型数据库
数据库系统真正开始阶段,数据的存储形式类似树形结构,所以也叫树型数据库.
3).网状数据库
数据的存储形式类似网状结构.
从二十世纪六十年代开始,第一代数据库系统(层次模型数据库系统、网状模型数据库系统)相继问世,它们为统一管理和共享数据提供了有力的支撑
在这个阶段,网状模型数据库由于它的复杂、专用性,没有被广泛使用。而在层次模型数据库中,IBM公司的IMS(Information Management System,信息管理系统)层次模型数据库系统则得到了极大的发展,一度成为最大的数据库管理系统,拥有巨大的客户群 4).关系型数据库
二十世纪七十年代初,关系型数据库系统开始走上历史舞台,并一直保持着蓬勃的生命力.关系型数据库系统使用结构化查询语言(Structured Query Language,SQL)作为数据库定义语言DDL和数据库操作语言DML 5).面向对象数据库
把面向对象的方法和数据库技术结合起来,可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致,并且能够有效的为面向对象程序提供更好的数据库支撑
二、数据库的特点
三、数据库的分类
在当今的互联网中,最常用的数据库模型主要是两种,即关系型数据库和非关系型数据库。
1 、关系型数据库介绍
(1) 关系型数据库 : 是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。
(2) 目前主流的关系型数据库:MySQL、Oracle 、 Sql server、DB2 。。。
Oracle 是世界上使用最广泛的数据库,上世纪末随着网络浪潮的到来,Oracle推出9i这个版本,i表示internet,全面支持网络引用。10g,g是grid网格,是Oracle公司为迎接“网格计算”时代的来临而提供的数据库解决方案。
MySQL是一个开源的、免费的关系型数据库,。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
SQL Server 微软公司的关系型数据库,一般.NET平台会将其作为首选.
DB2是IBM出品的一系列关系型数据库管理系统,分别在不同的操作系统平台上服务。
主流数据库介绍
2 非关系型数据库介绍
(1)非关系型数据库诞生背景
非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Only SQL”.而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底地否定非关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
随着互联网Web2.0网站的兴起,传统的关系型数据库在应付web2,0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。
例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NOSQL(非关系型)类的数据就是在这样的情景下诞生并得到了非常迅速的发展
(2) NOSQL非关系型数据库小结:
1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充
2、NOSQL为了高性能、高并发而生,但是要求对数据一致性要求不能高
3、NOSQL典型产品memcached (纯内存,k-v),redis(持久化缓存,k-v),mongodb(文档的数据库,xml-json)
四、选择MySQL的理由 & MariaDB 介绍
1、选择MySQL的理由
- MySQL性能卓越、服务稳定,很少出现异常宕机
- MySQL开放源代码且无版权制约,自主性及使用成本低
- MySQL历史悠久,社区及用户活跃,遇到问题可以解决
- MySQL软件体积小,安装使用简单,并且易于维护,安装及维护成本低
- MySQL品牌口碑效应,使得企业无需考虑就直接用
- MySQL支持多用操作系统,提供多种API接口,支持多用开发语言,特别对流行的语言有很好的支持
2、MariaDB 介绍
出现在2009年. MAriaDB数据库管理系统是MySQL数据库的一个分支,主要由开源社区维护,采用GPL授权许可。
开发这个MariaDB的原因之一是:甲骨文公司收购了MySQL后,MySQL有闭源的潜在风险,因此MySQL开源社区采用分支的方式来避开这个风险。MariaDB默认的存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。可以通过以下语句,转换为支持事务的Maria引擎。
ALTER TABLE `tablename` ENGINE=MARIA TRANSACTIONAL=1;
五、下载及安装
1、总体下载安装步骤:
- 官网下载mysql安装程序
- 安装mysql服务端
- 安装mysql客户端
- 客户端连接服务端
- 通过客户端向服务器发送命令,执行对数据库文件的增删改差操作。
2、windows安装(ZIP archive方式安装)
- 下载:MySQL Community Server 5.7.20(https://dev.mysql.com/downloads/mysql/)
- 解压:将官网下载的解压包 解压到指定目录(例如 D://mysql-5.7.20-winx64)
- 添加环境变量:将解压出的文件夹下bin目录加入系统环境变量(例如:D:\mysql-5.7.20-winx64\bin)
- 初始化:在cmd命令行输入命令:mysqld –initialize-insecure
- 启动mysql服务:在cmd命令行输入命令:mysqld
- 连接mysql服务:另外开启cmd命令行并输入:mysql -uroot -p 回车,有密码输入密码,没有继续回车
- 至此安装成功,接下来手动为MySQL制作Windows系统服务(ps:制作服务必须使用全路径方式)
- 制作MySQL的Windows服务,在cmd命令行输入此命令:”D:\mysql-5.7.20-winx64\bin\mysqld” –install
- 移除MySQL的Windows服务,在cmd命令行输入此命令:”D:\mysql-5.7.20-winx64\bin\mysqld” –remove
- 启动MySQL服务:在cmd命令行输入:net start mysql
- 关闭MySQL服务:在cmd命令行输入:net stop mysql
- PS:完全卸载mysql参考:http://www.cnblogs.com/wangfengming/articles/7879074.html
3、linux安装
- 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads,
也可直接通过命令下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz - 解压:tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
复制解压后的mysql目录:cp -r mysql-5.7.11-linux-glibc2.5-x86_64 /usr/local/mysql - 添加用户组和用户:groupadd mysql
- 添加用户mysql到用户组mysql:useradd -g mysql mysql
- 安装:cd /usr/local/mysql/mkdir ./data/mysql
chown -R mysql:mysql ./
./scripts/mysql_install_db –user=mysql –datadir=/usr/local/mysql/data/mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp support-files/my-default.cnf /etc/my.cnf - 修改启动脚本:vi /etc/init.d/mysqld
- 修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql - 启动服务:service mysqld start
- 测试连接:./mysql/bin/mysql -uroot
- 加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
export PATH=$PATH:/usr/local/mysql//bin
source /etc/profile - 启动mysql:service mysqld start
- 关闭mysql:service mysqld stop
- 查看运行状态:service mysqld status
- 一些安装时错误的解决办法:
- 错误1:sqlyog连接时,报1130错误,是由于没有给远程连接的用户权限问题
- 解决1:更改 ‘mysql’数据库‘user’表‘host’项,从‘localhost’改成‘%’
- use mysql;
- select ‘host’ from user where user=’root’;
- update user set host = ‘%’ where user =’root’;
- flush privileges;
- 解决2:直接授权
- GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION;
- 错误2:-bash: ./scripts/mysql_install_db: /usr/bin/perl: bad interpreter: 没有那个文件或目录
- 解决: yum -y install perl perl-devel
- 错误3:Installing MySQL system tables…./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
- 解决:yum -y install libaio-devel
六、SQL介绍
SQL:(Structured Query Language)是结构化查询语言缩写。是一门专门与数据库管理系统打交道的语言。
SQL语言:是关系型数据库的标准语言, 其主要用于存取数据,查询数据,更新数据和管理数据库系统等操作。
具体可以把SQL分为4个部分:
数据控制语言 ( DCL): 主要用于控制用户的访问权限。其中GRANT语句用于给用户增加权限,REVOKE语句用于收回用户的权限
数据定义语言(DDL):DROP、CREATE、ALTER等语句;数据库定义语言。主要用于定义数据库,表,视图,索引和触发器等。CREATE语句主要用于创建数据库,创建表,创建视图。ALTER语句主要用于修改表的定义,修改视图的定义。DROP语句主要用于删除数据库,删除表和删除视图等。
数据操作语言(DML):INSERT、UPDATE、DELETE语句;数据库操作语言。主要用于插入数据,更新数据,删除数据。INSERT语句用于插入数据,UPDATE语句用于更新数据,DELETE语句用于删除数据.
数据查询语言(DQL):SELECT语句。主要用于查询数据。
#1. 操作文件夹
增:create database db1 charset utf8;
查:show databases;
改:alter database db1 charset latin1;
删除: drop database db1; #2. 操作文件
先切换到文件夹下:use db1
增:create table t1(id int,name char);
查:show tables
改:alter table t1 modify name char(3);
alter table t1 change name name1 char(2);
删:drop table t1; #3. 操作文件中的内容/记录
增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
查:select * from t1;
改:update t1 set name='sb' where id=2;
删:delete from t1 where id=1; 清空表:
delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
truncate table t1;数据量大,删除速度比上一条快,且直接从零开始, auto_increment 表示:自增
primary key 表示:约束(不能重复且不能为空);加速查找
数据库 MySQL 之 基本概念的更多相关文章
- MySQL数据库常用命令和概念 (1)
一.数据库的创建: 1.创建一个名称为mydb1的数据库 create database mydb1; 2.创建一个使用utf8字符集的mydb2数据库. create database mydb2 ...
- 理解MySQL——架构与概念
写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了.但从5.0(2005年10月)开始,MySQL渐 ...
- 数据库 MYSQL操作(一)
数据库 MYSQL操作总结(一) 本文主要介绍一下笔者在使用数据库操作的过程中的一些总结,主要的内容包括一下几个内容: 一.mysql 使用基础(主要包括数据库的安装.基本操作等内容) 二.mysq ...
- 第一章 初识数据库Mysql
初识数据库Mysql(my) 在企业中 percona: 一.数据库基础知识 Mysql是一个开放源代码的数据库管理系统(DBMS),它是由Mysql AB公司开发.发布并支持的.Mysql是一个 ...
- 数据库MySQL——初识
认识数据库—MySQL 楔子 假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住十一期间全国的购票需求,你怎么写? 由于在同一时段抢票的人数太多,所以你的程序不可能写 ...
- 数据库MySQL 之 索引原理与慢查询优化
数据库MySQL 之 索引原理与慢查询优化 浏览目录 索引介绍方法类型 聚合索引辅助索引 测试索引 正确使用索引 组合索引 注意事项 查询计划 慢查询日志 大数据量分页优化 一.索引介绍方法类型 1. ...
- 数据库--mysql介绍
一:什么是数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件 ...
- 数据库mysql的常规操作
1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进 ...
- 数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件
数据库MySQL之 视图.触发器.存储过程.函数.事务.数据库锁.数据库备份.事件 浏览目录 视图 触发器 存储过程 函数 事务 数据库锁 数据库备份 事件 一.视图 1.视图概念 视图是一个虚拟表, ...
随机推荐
- 20165222《Java程序设计》——实验二 面向对象程序设计
20165222<Java程序设计>——实验二 面向对象程序设计 提交点一.JUnit测试用例 知识点:这里就是了解测试代码的应用,测试代码的书写为:@Test assertEquals( ...
- yield关键字用法与解析(C# 参考)
yield 关键字向编译器指示它所在的方法是迭代器块. 编译器生成一个类来实现迭代器块中表示的行为. 在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值. 这是一个返 ...
- vba打开excel文件遍历sheet的名字和指定单元格的值
今天项目上有个应用,获取指定Excel文件下的所有sheet的名称以及当前sheet中指定单元格的值,并把他们写到固定的sheet中去,看了下,文件比较多,而且每个文件sheet的个数比较多,也不一样 ...
- spring mvc静态资源访问的配置
如果我们使用spring mvc来做web访问请求的控制转发,那么默认所有访问都将被DispatcherServlet独裁统治.比如我现在想访问的欢迎页index.html根本无需任何业务逻辑处理,仅 ...
- git 基本操作 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000
1.创建版本库 (即仓库 repository)简单理解为一个目录,这个目录里的所有文件都可以被git管理起来,每个文件的修改删除,git都能跟踪,一边任何时刻都可以追踪历史,或者在将来某个时刻可以 ...
- 1111 Online Map
题意:给定一个图,以及起点和终点,需要我们计算两条路径.第1条路径:距离最短路径,若不唯一,则选择用时最短的那一条:第2条路径:用时最少路径,若不唯一,选择经过结点数最少的那一条. 思路:两次Dijk ...
- fullCalendar动态获取数据
fullCalendar http://fullcalendar.io/docs/event_data/events_function $('#calendar').fullCalendar({ he ...
- whoosh----索引|搜索文本类库
先了解基本概念和步骤: Quick Start Whoosh是一个索引文本和搜索文本的类库,他可以为你提供搜索文本的服务,比如如果你在创建一个博客的软件,你可以用whoosh为它添加添加一个搜索功能以 ...
- Protege4.3使用入门(一)
1.下载 下载地址http://protege.stanford.edu/download/protege/4.3/installanywhere/Web_Installers/,目前版本信息Prot ...
- Just a Hook(树状数组)
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. T ...