数据库技术构成
数据库系统
-
数据库系统有三个主要的组成部分
- 数据库(DB):用于存储数据的地方
- 数据库管理系统(DataBase Management Syestem , DBMS):用于管理数据库的软件
- 数据库应用程序(DataBase Application,如:Navicat for MySQL)
SQL语言
-
包含以下4个部分。
- 数据定义语言(DDL): DROP/CREATE/ALTER等语句
- 数据操作语言(DML):INSERT/UPDATA/DELETE等语句
- 数据查询语言(DQL):SELECT语句
- 数据控制语言(DCL):GRANT/REVOKE/COMMIT/ROLLBACK等语句
CREATE操作:
CREATE TABLE students
(
student_id INT UNSIGNED,
names VARCHAR(30),
sex CHAR(2),
birth DATE,
PRIMARY KEY(student_id)
);
INSERT操作:
INSERT INTO students(student_id,names,sex,birth)
VALUES(41048101, 'Noevil','男','1990-01-30')
SELECT操作:
SELECT names from students WHERE student_id = 41048101;
数据库访问接口
-
ODBC
(Open Database Connectivity,开放数据库互连),为了一个应用程序可以通过共同的一组代码访问不同的SQL数据库管理系统(DBMS)。 -
JDBC
(Java Data Base Connectivity,Java数据库连接)用于Java应用程序连接数据库的标准方法,是一种用于执行sql语句的Java API。 -
ADO.NET
微软在.NET框架下开发设计的一组用于和数据源进行交互的面向对象类库。 -
PDO
PHP Data Object。
MySQL的优势
-
主要优势如下:
- 速度:运行速度快
- 价格:免费开源
- 容易使用:易于学习
- 可移植性:能够在众多不同的系统平台上,例如:Windows、Linux、Unix、Mac OS等。
- 丰富的接口:提供理论C、C++、Java、php、Python、Ruby等语言的API
- 支持查询语言:MySQL可以利用标准SQL语法和支持ODBC的应用程序
- 安全性和连接性:保证安全,由于MySQL是网络化的,因此可以在互联网上的任何地方访问,提高了数据共享的效率
MySQL命令行使用程序
-
服务端如下:
- mysqld:SQL后台程序
- mysqld_safe:服务器启动脚本
- mysql.server:服务器启动脚本,该脚本用于使用包含特定级别的、运行启动服务的脚本的、运行目录的系统。它调用mysqld_safe来启动MySQL服务器。
- mysql_multi:可以启动或停止系统上安装的多个服务器。
- myisamchk:用来描述、检查、优化和维护MyISAM表的实用工具
- mysqlbug:MySQL缺陷报告脚本。它可以用来向MySQL邮件系统发送缺陷报告
- mysql_install_db:该脚本用默认权限创建MySQL授权表。通常只在系统上首次安装MySQL时执行一次
-
客户端如下:
- myisampack:压缩MyISAM表以产生更小的只读表的一个工具
- mysql:交互式输入SQL语句的命令行工具
- mysqlaccess:检查访问主机名、用户名、和数据库组合的权限的脚本
- MySQLadmin:执行管理操作的客户程序,例如创建或删除数据库
- mysqlbinlog:从二进制日志读取语句的工具,包含执行过的语句,可用来帮助系统从奔溃中回复
- mysqlcheck:检查、修复、分析以及优化表的表维护客户程序
- mysqldump:将MySQL数据库转储到一个文件
- mysqlhotcopy:快速备份MyISAM
- mysql import:使用load data infile将文本文件读入相关表
- mysqlshow:显示数据库、表、列以及索引相关信息
- perror: 显示系统或MySQL错误代码含义的工具。
MySQL配置
-
登录MySQL
-
mysql -h ip地址 -u 用户名 -p 密码
- 例如:mysql -h 192.168.1.0 -u root -p123456
-
-
linux 安装和配置mysql
-
进入下载页 https://dev.mysql.com/downloads/mysql/,选择Linux 选择要下载ram包
-
解压下载包 tar -xvf MySQL-5.7.10-1.rhe15.i386.tar(一般只需要安装server和client两个包)
-
切换root用户 su -root
-
安装mysql rpm -ivh MySQL-server-5.7.10-1.rhe15.i386.rpm
-
执行usr/bin/mysqladmin -u root password 'new-password' 可以更改root密码
-
执行usr/bin/mysql_secure_installation 会删除测试数据库和匿名用户
-
执行usr/bin/mysqlbug script 会报告bug
-
注意:安装前要查看是否有旧版mysql,如果有最好卸载
-
查看 rpm -qa | grep -i mysql
-
卸载 rpm -ev 版本
-
mysql服务操作
service mysql restart|start|status|stop
数据库的使用
- 查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| bili |
| douban |
| fordearbox |
| gregs_list |
| information_schema |
| kaola |
| mysql |
| performance_schema |
| sina |
| sys |
| taobao |
| test |
| weixin |
| xhs |
+--------------------+
14 rows in set (0.01 sec)
mysql是必须的,它描述用户访问权限
test库是测试库
- 创建数据库
mysql> create database fordear;
Query OK, 1 row affected (0.02 sec)
- 查看数据库的定义
mysql> show create database fordear;
+----------+------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------------------------------------+
| fordear | CREATE DATABASE `fordear` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ |
+----------+------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)
- 删除数据库
mysql> drop database fordear;
Query OK, 0 rows affected (0.23 sec)
mysql> show create database fordearg;
ERROR 1049 (42000): Unknown database 'fordear'
ERROR:
No query specified
数据库存储引擎
数据库存储引擎是数据库底层软件组织,数据库管理系统DBMS使用数据引擎进行创建、查看、更新和删除数据操作;MySQL的核心是存储引擎。
MySQL支持的存储引擎有:InnoDB,MyISAM,Memory,Merge,Archive,Federated,CSV,BLACKHOLE等
- 查看系统支持的引擎
show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
Support 表示支持哪种引擎
YES 表示可以使用
NO 表示不可以使用
DEFAULT 表示当前默认存储引擎
-
InnoDB存储引擎(事务型首选引擎)
-
InnoDB给MySQL提供了具有提交、回滚、和蹦溃回复能力的事务安全(ACID)存储引擎。
- ACID数据库事务正确执行的四个基本要素的缩写,包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
-
InnoDB存储引擎是为了处理巨大数据量的最大性能设计,CPU无可匹敌
-
InnoDB将表和索引存储在一个逻辑表空间中,表空间可以包含数个文件,MyISAM引擎中每个表被存在分离文件中。
-
InnoDB 支持外键完整性约束。
-
InnoDB 被用在众多需要高性能的大型数据库站点上。
-
-
MyISAM 存储引擎
-
不支持事务
-
插入和查询方便
-
-
Memory
-
不支持事务
-
临时存放,不需要太高安全性,数据量不大的时候
-
-
Archive(非常适合记录日志信息)