数据库 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 之 基本概念的更多相关文章

  1. MySQL数据库常用命令和概念 (1)

    一.数据库的创建: 1.创建一个名称为mydb1的数据库 create database mydb1; 2.创建一个使用utf8字符集的mydb2数据库. create database mydb2 ...

  2. 理解MySQL——架构与概念

    写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了.但从5.0(2005年10月)开始,MySQL渐 ...

  3. 数据库 MYSQL操作(一)

    数据库  MYSQL操作总结(一) 本文主要介绍一下笔者在使用数据库操作的过程中的一些总结,主要的内容包括一下几个内容: 一.mysql 使用基础(主要包括数据库的安装.基本操作等内容) 二.mysq ...

  4. 第一章 初识数据库Mysql

    初识数据库Mysql(my)   在企业中 percona: 一.数据库基础知识 Mysql是一个开放源代码的数据库管理系统(DBMS),它是由Mysql AB公司开发.发布并支持的.Mysql是一个 ...

  5. 数据库MySQL——初识

    认识数据库—MySQL 楔子 假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住十一期间全国的购票需求,你怎么写? 由于在同一时段抢票的人数太多,所以你的程序不可能写 ...

  6. 数据库MySQL 之 索引原理与慢查询优化

    数据库MySQL 之 索引原理与慢查询优化 浏览目录 索引介绍方法类型 聚合索引辅助索引 测试索引 正确使用索引 组合索引 注意事项 查询计划 慢查询日志 大数据量分页优化 一.索引介绍方法类型 1. ...

  7. 数据库--mysql介绍

    一:什么是数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件 ...

  8. 数据库mysql的常规操作

    1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进 ...

  9. 数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件

    数据库MySQL之 视图.触发器.存储过程.函数.事务.数据库锁.数据库备份.事件 浏览目录 视图 触发器 存储过程 函数 事务 数据库锁 数据库备份 事件 一.视图 1.视图概念 视图是一个虚拟表, ...

随机推荐

  1. 20165222《Java程序设计》——实验二 面向对象程序设计

    20165222<Java程序设计>——实验二 面向对象程序设计 提交点一.JUnit测试用例 知识点:这里就是了解测试代码的应用,测试代码的书写为:@Test assertEquals( ...

  2. yield关键字用法与解析(C# 参考)

    yield 关键字向编译器指示它所在的方法是迭代器块. 编译器生成一个类来实现迭代器块中表示的行为. 在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值. 这是一个返 ...

  3. vba打开excel文件遍历sheet的名字和指定单元格的值

    今天项目上有个应用,获取指定Excel文件下的所有sheet的名称以及当前sheet中指定单元格的值,并把他们写到固定的sheet中去,看了下,文件比较多,而且每个文件sheet的个数比较多,也不一样 ...

  4. spring mvc静态资源访问的配置

    如果我们使用spring mvc来做web访问请求的控制转发,那么默认所有访问都将被DispatcherServlet独裁统治.比如我现在想访问的欢迎页index.html根本无需任何业务逻辑处理,仅 ...

  5. git 基本操作 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000

    1.创建版本库 (即仓库  repository)简单理解为一个目录,这个目录里的所有文件都可以被git管理起来,每个文件的修改删除,git都能跟踪,一边任何时刻都可以追踪历史,或者在将来某个时刻可以 ...

  6. 1111 Online Map

    题意:给定一个图,以及起点和终点,需要我们计算两条路径.第1条路径:距离最短路径,若不唯一,则选择用时最短的那一条:第2条路径:用时最少路径,若不唯一,选择经过结点数最少的那一条. 思路:两次Dijk ...

  7. fullCalendar动态获取数据

    fullCalendar http://fullcalendar.io/docs/event_data/events_function $('#calendar').fullCalendar({ he ...

  8. whoosh----索引|搜索文本类库

    先了解基本概念和步骤: Quick Start Whoosh是一个索引文本和搜索文本的类库,他可以为你提供搜索文本的服务,比如如果你在创建一个博客的软件,你可以用whoosh为它添加添加一个搜索功能以 ...

  9. Protege4.3使用入门(一)

    1.下载 下载地址http://protege.stanford.edu/download/protege/4.3/installanywhere/Web_Installers/,目前版本信息Prot ...

  10. Just a Hook(树状数组)

    In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. T ...