MySQL数据库

一)数据库基本概念

1.1 数据

① 描述食物的符号记录称为数据( Data )。

② 包括数字、文字、图形、图像、声音、档案记录等皆为数据。

③ 数据是以“ 记录 ”的形式按照统一的格式进行存储的,而不是杂乱无章的。
相同格式和类型的数据统一存放在一起,而不会把“ 书 ”和“ 手机 ”混在一起存储。数据的存储,这样就能够井然有序了。

1.2 数据的时代

  • 涉及的数据量大
  • 数据不随程序的结束而消失
  • 数据被多个应用程序共享
  • 大数据

数据分类

  • 结构化的数据 :即有固定格式和有限长度的数据。比如填表格就属于结构化的数据;姓名,性别,年龄,都是叫做结构化数据。

  • 非结构化的数据 :非结构化的数据越来越多,就是不定长、无固定格式的数据;比如网页,有的时候非常长,有时候一会儿就结束没了;语音,视频啊都是非结构化的数据。

  • 半结构化数据:比如:XML或者HTML的格式数据。

1.2 数据库的发展史

  • 萌芽阶段:文件系统

    • 使用磁盘文件来存储数据
  • 初级阶段:第一代数据库

    • 出现了网状模型、层次模型的数据库
  • 中级阶段:第二代数据库

    • 关系型数据库和结构化查询语言
  • 高级阶段:新一代数据库

    • “关系-对象”型数据库

1.2.1 文件管理系统的缺点

  • 编写应用程序不方便
  • 数据冗余不可避免
  • 应用程序依赖性
  • 不支持对文件的并发访问
  • 数据间联系弱
  • 难以按用户视图表示数据
  • 无安全控制功能

1.3 DBMS 数据库管理系统

  • Database:数据库是数据的汇集,它以一定的组织形式存于存储介质上

  • DBMS:是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心

  • DBA:负责数据库的规划、设计、协调、维护和管理等工作。

  • 应用程序:指以数据库为基础的应用程序。

1.4 数据库管理系统的优点

  • 相互关联的数据的集合
  • 较少的数据冗余
  • 程序与数据相互独立
  • 保证数据的安全、可靠
  • 最大限度地保证数据的正确性
  • 数据可以并发使用并能同时保证一致性

1.5数据库管理系统的基本功能

  • 数据定义
  • 数据处理
  • 数据安全
  • 数据备份

1.6数据库系统的架构

  • 单机架构
  • 大型主机/终端架构
  • 主从式架构(C/S)
  • 分布式架构

1.7 各种数据库管理系统

1.7.1 关系统型数据库相关概念

  • 关系 Relational :关系就是二维表,其中:表中的行、列次序并不重要

  • 行 row:表中的每一行,又称为一条记录record

  • 列 column:表中的每一列,称为属性,字段,域field

  • 主键 Primary key:PK , 用于惟一确定一个记录的字段,一张表只有一个主键

  • 域domain:属性的取值范围,如,性别只能是’男’和’女’两个值,人类的年龄只能 0-150

1.7.1.1 实体联系模型 E-R

实体Entity: 客观存在并可以相互区分的客观事物或抽象事件称为实体,在E-R图中用 矩形 表示实体,把实体名写在矩形内。

属性: 实体所具有的特征或性质,用 椭圆形 表示属性。

联系: 联系是数据之间的关联集合,是客观存在的应用语义链。

• 实体内部的联系:指组成实体的各属性之间的联系。如教练实体中,教练号和经理号之间有一种关联关系

• 实体之间的联系:指不同实体之间联系。例:玩家位置实体和玩家基本信息实体之间

• 实体之间的联系用 菱形框 表示

在这里插入图片描述

1.7.1.2 联系类型
  • 一对一的联系(1:1)

  • 一对多的联系(1:n):外键

  • 多对多的联系(m:n):增加第三张表

1.7.1.3 数据的操作
  • 数据提取:在数据集合中提取感兴趣的内容。SELECT

  • 数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE

1.7.1.4 数据库规划流程
  1. 收集数据,得到字段

  2. 收集必要且完整的数据项

  3. 转换成数据表的字段

1.7.2 常用关系数据库

MySQL: MySQL, MariaDB, Percona Server

PostgreSQL: 简称为pgsql,EnterpriseDB

Oracle

MSSQL

DB2(IBM公司)

SQL server(微软) 

access(微软公司office产品)

数据库排名:
DB-Engines Ranking - popularity ranking of database management systems

1.7.3 数据库分类

  1. 关系型数据库:存储的一般都是字符、字符串、数值、布尔值等
  2. 非关系型数据库:存储的往往是图片、视频、语音等会
  • 非关系型数据库 (NoSQL)
    MongoDB、Redis(内存数据库/缓存数据库) K-V键值对、与之类似的 Memcache,K-V键值对

  • redis-memecache 对比

1)相同点:存储高热数据(在内存中高速运行)
2)不同点:redis 可以做持久化保存,可以存储对象

1.7.3.1 关系型数据库与非关系型数据库
  1. 描述主流的数据库系统 关系型数据库: Mysql(Oracle公司) 、 SQL server(微软) 、access(微软公司office产品) Oracle 、DB2(IBM公司),sybase(sybase) 等等

  2. 关系型数据库和非关系型数据库的区别 关系数据库:
    关系数据库结构是二维数据库表,二维表当中每个字段(列)用来描述对象的一个属性, 每个记录(行)用来描述一个对象的信息(完整信息),关系数据库写到哪里也就是存储在硬盘当中 读写系统就会受到的IO限制或者瓶颈。

其他 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。

优点
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL 语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

缺点
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘 I/O 是一个很大的瓶颈。

缓存加速软件 非关系型数据库(NoSQL): MongoDB 、 Redis(内存数据库/缓存数据库)K-V 键值对、与之类似的Memcache,K-V 键值对 redis-memecache 对比: 相同点:存储高热数据(在内存中高速运行) 不同点:redis可以做持久化保存,可以存储对象

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点
1、格式灵活:存储数据的格式可以是 key,value 形式、文档形式、图片形式等等,文档形式、 图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。 
2、速度快:nosql 可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性与高可用性;
4、成本低:nosql 数据库部署简单,基本都是开源软件。

缺点
1、不提供 sql 支持,学习和使用成本较高;
2、无事务处理; 
3、数据结构相对复杂,复杂查询方面稍欠。

1.8 使用数据库的必要性

使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。 数据库具有以下特点。

  • 可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。

  • 可以有效地保持数据信息的一致性、完整性,降低数据冗余。

  • 可以满足应用的共享和安全方面的要求。

  • 数据库技术是计算机科学的核心技术之一,具有完备的理论基础。对数据库基本概念的掌握,将有助于对数据库的理解。

1.9 数据库基本概念

1.9.1 数据(Data)

  • 描述事物的符号记录。

  • 包括数字,文字、图形、图像、声音、档案记录等。

  • 以“记录”形式按统一的格式进行存储。

1.9.2 表

  • 将不同的记录组织在一起。

  • 用来存储具体数据。

1.9.3 数据库

  • 表的集合,是存储数据的仓库。

  • 以一定的组织方式存储的相互有关的数据集合。

1.9.4 数据库管理系统(DBMS)

数据库管理系统( Database Management System,DBMS ) 是实现对数据库资源有效组织、 管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。

1.9.4.1 DBMS 主要包括的功能
  • 数据库的建立和维护功能: 包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。

  • 数据定义功能: 包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式 及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语 义的错误数据被输入或输出。

  • 数据操纵功能: 包括数据查询统计和数据更新两个方面。

  • 数据库的运行管理功能: 这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。

  • 通信功能: DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行 数据交换。

1.9.5 数据库系统

  • 是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成

  • 用户可以通过 DBMS 或应用程序操作数据库

1.9.6 访问数据库的流程

DBMS的工作模式:
1. 接收应用程序的数据请求和处理请求
2. 将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
3. 实现对数据库的操作
4. 从数据库的操作中接受查询结果
5. 对查询结果进行处理(格式转换)
6. 将处理结果返回给用户

在这里插入图片描述

二、mysql 脚本一键安装

#!/bin/bash #编译安装Mysql服务 #使用脚本前注意事项: #1、请设置好yum源仓库 #2、请在/opt目录下放入mysql-boost-5.7.20.tar.gz安装包
#编写安装mysql的函数 MySQL() {

#关闭系统防火墙和安全机制 systemctl stop firewalld systemctl disable firewalld setenforce 0

#安装环境依赖包 yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

#创建运行用户 useradd -M -s /sbin/nologin mysql

#编译安装 cd /opt tar xzvf mysql-boost-5.7.20.tar.gz

cd /opt/mysql-5.7.20/ cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DSYSCONFDIR=/etc \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=boost \ -DWITH_SYSTEMD=1

#编译及安装 make && make install

#修改mysql 配置文件 echo '[client] port = 3306 socket=/usr/local/mysql/mysql.sock
[mysqld] user = mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data port = 3306 character-set-server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket=/usr/local/mysql/mysql.sock bind-address = 0.0.0.0 skip-name-resolve max_connections=2048 default-storage-engine=INNODB max_allowed_packet=16M server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES' > /etc/my.cnf

#更改mysql安装目录和配置文件的属主属组 chown -R mysql:mysql /usr/local/mysql/ chown mysql:mysql /etc/my.cnf

#设置路径环境变量 echo "export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib">> /etc/profile source /etc/profile

#初始化数据库 cd /usr/local/mysql/bin/ ./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

#添加mysqld系统服务 cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ 
systemctl daemon-reload systemctl start mysqld.service systemctl enable mysqld }

#主体代码 ls /opt | egrep "^mysql-boost-5.7.20.tar.gz$" if [ $? -eq 0 ];then #调用函数安装mysql MySQL echo "数据库安装完毕,请设定root用户密码。" echo "例如:输入“mysqladmin -u root -p password "123456" ” + 回车;回车" ln -s /usr/local/mysql/bin/* /usr/local/bin else echo -e "请将安装包mysql-boost-5.7.20.tar.gz放入/opt目录下" #如果没有就终止 break fi

三、管理数据库基本操作

3.1 SQL 分类

  • 数据库:database
  • 表:table
  • 行:row
  • 列:column
  • 索引:index
  • 视图:view
  • 存储过程:procedure
  • 存储函数:function
  • 触发器:trigger
  • 事件调度器:event scheduler,任务计划
  • 用户:user
  • 权限:privilege

3.2 SQL 语言规范

  • 数据库系统中,SQL 语句不区分大小写,建议用大写的
  • SQL 语句可单行或者多行书写,默认以“ ; ” 结尾
  • 关键词不能跨多行或简写
  • 用空格和 Tab 缩起来提高语句的可读性
  • 子句通常位于独立行,以便于编辑,提高可读性

数据库对象和命名
数据库的组件(对象)

数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等

命名规则

必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)

不要使用MySQL的保留字,如tabble select show databases

3.2.1 SQL 语句分类

  1. DDL: Data Defination Language 数据定义语言,用于创建数据库对象,如库、表、索引等。eg:create、drop、alter。

  2. DML: Data Manipulation Language 数据操纵语言,用于对表中的数据进行管理,用来插入、删除、修改数据库中的数据。eg:insert、delete、update。

  3. DQL:数据查询语言,用于从数据表中查找符合条件的数据记录。eg:select。

  4. DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些 语句定义了数据库、表、字段、用户的访问权限和安全级别,如commit、follback、grant、revoke)

    #DDL: Data Defination Language 		——数据定义语言
    CREATE,DROP,ALTER
    
    #DML: Data Manipulation Language 	——数据操纵语言
    INSERT,DELETE,UPDATE
    
    #DQL:Data Query Language 			——数据查询语言
    SELECT 
    
    #DCL:Data Control Language 		——数据控制语言
    GRANT,REVOKE,COMMIT,ROLLBACK
    
    
    SELECT *                  ——SELECT子句
    FROM products             ——FROM子句
    WHERE price>666           ——WHERE子句
    

3.3 查看信息的帮助

mysql> help create
#help 后面跟上具体命令可以查看帮助
Many help items for your request exist.
to make a more specific request, please type 'help <item>',
where <item> is one of the following
topics:
	CREATE DATABASE
	CREATE EVENT
	CREATE FUNCTION
	CREATE FUNCTION UDF
	CREATE INDEX
	CREATE LOGFILE GROUP
	CREATE PROCEDURE
	CREATE SERVER
	CREATE TABLE
	CREATE TABLESPACE
	CREATE TRIGGER
	CREATE USER
	CREATE VIEW
	SHOW
	SHOW CREATE DATABASE
	SHOW CREATE EVENT
	SHOW CREATE FUNCTION
	SHOW CREATE PROCEDURE
	SHOW CREATE TABLE
	SHOW CREATE USER
	SPATIAL


##也可以进一步
mysql> help create DATABASE \G

3.4 查看支持的字符集

已编译安装修改过了的

show charset;
#查看支持字符集
默认拉丁文字

utf8     | UTF-8 Unicode   
#阉割版的

utf8mb4  | UTF-8 Unicode 
#真实的版本

3.5 查表,用表

mysql> show databases;
#查看当前数据库

mysql> use mysql;
#使用 mysql 表

MySQL root@localhost:school> select * form  ky19;
#查看是否有表格

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.6 数据库管理

3.6.1 创建数据库

CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME'
CHARACTER SET 'character set name'
COLLATE 'collate name';

#创建数据库
create database a1;

#创建的时候指定语言
create database db3 charset=utf8;

#查看创建的数据库
show create  database a1;

#加的数据位置
cd /usr/local/mysql/data/test/

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.6.2 数据库删除

DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

例
drop database A1;

在这里插入图片描述

3.6.3 DML管理表中的数据记录 :insert (插入)、update(修改)、delete(删除)

  • 格式
    INSERT INTO 表名(字段1,字段2[,…]) VALUES (字段1的值,字段2的值,…);

    例:
     
    INSERT INTO zzz (id,name,score,passwd) 	values(1,'zhangsan',70.5,PASSWORD('123456'));
    #PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。
    
    INSERT INTO zzz VALUES(2,'lisi',90.5,654321) ;
    SELECT * FROM zzz ;      #查询表的数据记录
    
    修改、更新数据表中的数据记录
    格式:
    UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
    
    例:
    UPDATE zzz SET passwd=PASSWORD('') WHERE name='zhangsan';
    UPDATE zzz SET name='wangxiaoer',passwd='' WHERE id=3;
    

在数据表中删除指定的数据记录
格式:
DELETE FROM 表名 [WHERE 条件表达式];

示例:
DELETE FROM zzz WHERE id=4;

3.6.4 DQL查询数据记录

select

格式:
SELECT 字段名1,字段名2[,...] FROM 表名[WHERE 条件表达式];

例:
SELECT * FROM zzz;
SELECT id,name,score FROM FB WHERE id=2;
select name from zzz\G  		 #以列表方式竖向显示
select * from info limit 2;   	 #只显示头2行
select * from info limit 2,3;     #显示第2行后的前3行

修改、更新数据表中的数据记录
格式:
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];

例:
UPDATE zzz SET passwd=PASSWORD('') WHERE name='zhangsan';
UPDATE zzz SET name='wangxiaoer',passwd='' WHERE id=3;


在数据表中删除指定的数据记录
格式:
DELETE FROM 表名 [WHERE 条件表达式];

例:
DELETE FROM FB WHERE id=4;


修改表名和表结构
ALTER TABLE 旧表名 RENAME 新表名;

例:
ALTER TABLE zzz RENAME yyy;
ALTER TABLE yyy RENAME zzz;

扩展表结构(增加字段)
ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
default '地址不详':表示此字段设置默认值为地址不详,可与NOT NULL配合使用

ALTER TABLE yyy ADD address varchar(50) NOT NULL default '地址不详';

修改字段(列)名,添加唯一键
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];

ALTER TABLE yyy CHANGE name user_name varchar(10) unique key;
CHANGE可修改字段名、数据类型、约束等所有项。

删除字段
格式:
ALTER TABLE 表名 DROP 字段名;

例:
ALTER TABLE yyy DROP passwd;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值