MySQL中库/表/字段/索引/主键操作示例与详解

【1】数据库的定义

① 数据与数据库

数据

描述事物的符号记录, 可以 是 数字 、 文字、图形、图像、声音、语言等,数据有多种形式,它们都可以经过数字化后存入计算机。

数据库

存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定数据模型组织、描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享 ,总结为以下几点

  • 数据结构化
  • 数据的共享性高,冗余度低,易扩充
  • 数据独立性高
  • 数据由DBMS统一管理和控制(安全性、完整性、并发控制、故障恢复)

MySQL数据库隶属于MySQLAB公司,总部位于瑞典,后被oracle收购。
优点:
–成本低:开放源代码,一般可以免费试用
–性能高:执行很快
–简单:很容易安装和使用

② 数据库与文件系统的区别

文件系统

文件系统是操作系统用于明确存储设备(常见的是磁盘 )或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

数据库系统

数据库管理系统 (Database Management 是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS 。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整 性。

对比区别

  • 管理对象不同

文件系统的管理对象是文件 ,并非直接对数据 进行管理 ,不同的数据结构需要使用不同的文件类型进行保存 (举例 txt 文件和 doc 文件不能通过修改文件名完成 转换 );而数据库直接对数据进行存储和管理。

  • 存储方式不同

文件系统使用不同的文件将数据分类( doc mp4/.jpg )保存在外部存储上 ;数据库系统使用标准统一的数据类型进行数据保存 (字母 、 数字 、符号 、时间)

  • 调用数据的方式不同

文件系统使用不同的软件打开不同 类型的文件 ;数据库系统 由 DBMS 统一 调
用和管理 。

优缺点总结

由于DBMS的存在,用户不再需要了解数据存储和其他实现的细节,直接通过 DBMS 就能获取数据,为数据的使用带来极大便利。

具有以数据为单位的共享性,具有数据的并发访问能力。 DBMS 保证了在并发访问时数据的一致性。

低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优于文件系统。

能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖 DBMS 来对数据进行操作且对性能的消耗相比文件系统比较小。

对事务的支持。 DBMS 支持事务,即一系列对数据的操作集合要么都完成, 要么都不完成。在 DBMS上对数据的各种操作都是原子级的

③ 关系型与非关系型

关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。 简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。

关系模型 就是指二维表格模型。因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。关系模型的数据结构是一个“二维表框架”组成的集合。每个二维表又可称为关系。当前主流的关系型数据库有 Oracle 、 DB2 、 Microsoft SQL Server 、 Micro soft Access 、 MySQL 、浪潮 K DB 等。

实体关系模型 简称 E R 模型 ,是 一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体 关系图 )来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。

高效的存储和处理数据的介质(介质包括磁盘和内存)。数据库基于存储介质的不同,分为两类:关系型数据库(SQL)和非关系型数据库(NoSQL:Not Only SQL)。


非关系型数据库

非关系型数据库又被称为 NoSQL (Not Only SQL ) ,意为不仅仅是SQL是一 种轻量、开源、不兼容SQL功能的数据库, 对NoSQL 最普遍的定义是“非关联型的”,强调 Key Value 存储和文档数据库的优点,而不是单纯地反对RDBMS(关系型数据库管理系统)。

常见的非关系型数据库:memcached,mongodb,redis等。

相比较而言,关系型数据库比较安全,但是比较浪费空间;而非关系型数据库由于运行在内存中,故效率高但是不安全(断电数据丢失,redis可以同步数据到磁盘)。

关系模型:一种所谓建立在关系上的模型,关系模型包含三个方面:

① 数据结构:数据存储的问题,二维表(行和列)。
② 操作指令集合:所有的SQL语句。
③ 完整性约束:表内数据约束(字段与字段之间),表与表之间约束(外键)。


④ 关键字说明

数据库DB:database;

数据库系统:DBS(DataBase System)-是一种虚拟系统,将多种内容关联起来的称呼,DBS= DBMS+DB;

DBMS:Database Management System,数据库管理系统,专门管理数据库。

DBMS分为两类:
–基于共享文件系统的DBMS (Access)
–基于客户机——服务器的DBMS
(MySQL、Oracle、SqlServer)

行/记录:row/record,本质是一个东西,都是指表中的一行(一条记录);行是从结构角度出发,记录是从数据角度出发。

列/字段:column/field,本质是一个东西。


⑤ SQL(DDL、DML、DCL、TCL)

SQL:Structured Query Language,结构化查询语言。

① DDL

Data Definition Language,数据定义语句,用于库和表的创建、修改、删除。代表指令如:create,drop,alter等。

CREATETABLE:创建数据库表
ALTER TABLE:更改表结构、添加、删除、修改列长度
DROP TABLE:删除表
CREATE INDEX:在表上建立索引
DROP INDEX:删除索引

② DML

Data Manipulation Language,数据操作语言。

数据操纵语句,用于添加、删除、修改、查询数据库记录,并检查数据完整性,代表指令:insert ,update,delete等。其中DML内部又单独进行了一个分类:DQL(Data Query Language:数据查询语言,如select)。

INSERT:添加数据到数据库中
UPDATE:修改数据库中的数据
DELETE:删除数据库中的数据
SELECT:选择(查询)数据
SELECT是SQL语言的基础,最为重要。

事务是由完成若干项工作的DML语句组成的。

③ DCL

Data Control Language,数据控制语言。用于定义用户的访问权限和安全级别,代表指令:grant,revoke等。

GRANT:授予访问权限
REVOKE:撤销访问权限
COMMIT:提交事务处理
ROLLBACK:事务处理回退
SAVEPOINT:设置保存点
LOCK:对数据库的特定部分进行锁定

SQL是关系型数据库的操作指令,是一种非强制性约束,不同数据库产品会有细微差别。

④ TCL

TCL(Transaction Control Language):事务控制语言,如commit、rollback。

【2】数据库常见操作

① DOS界面执行 *.sql文件

通常用来还原数据库或者导入数据。

source f:2016.sql//f盘下的2016.sql文件

导出存储过程

mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > 文件名

② 改整个数据库中所有表的某一列的值

如corp_id;

数据库information_schema,保存了用户数据库中表的基本信息。。

select DISTINCT 
CONCAT(' update ',c.TABLE_NAME,' set ',c.COLUMN_NAME ,'=13;')  
from  COLUMNS c, Tables t 
where c.TABLE_NAME=t.TABLE_NAME 
and c.TABLE_SCHEMA='cloudoa_tb' 
and (c.COLUMN_NAME like 'corpid%' or c.COLUMN_NAME like 'corp_id%' )
and t.TABLE_TYPE='BASE TABLE'

③ 开启事件

SHOW VARIABLES LIKE 'event_scheduler';
SET GLOBAL event_scheduler = ON;

④ 查看数据库大小

查看数据库大小,单位为MB

select concat(round(sum(data_length/1024/1024),2), 'MB') as data from tables 

查看指定数据库大小,单位为MB

select concat(round(sum(data_length/1024/1024),2), 'MB') as data from tables 
where table_schema= 'dbName' ;

dbName就是你想要查看的数据库的名字。

查看数据库指定表的大小

select concat(round(sum (data_length/1024/1024),2), 'MB') as data from tables
where table_schema= 'dbName' and table_name='tableName';

【3】使用实例总结

① 根据B表更新A表的字段

背景 : 根据B表中的字段更新A表的字段值。实例如下 : 根据copy2中的字段值更新test2表的值。

update tb_bound_users test2,tb_bound_users_copy2 
set test2.number = tb_bound_users_copy2.number,
test2.user_type=tb_bound_users_copy2.user_type,
test2.data_type=tb_bound_users_copy2.data_type,
test2.number_gs=tb_bound_users_copy2.number_gs,
test2.number_yl=tb_bound_users_copy2.number_yl,
test2.gender = tb_bound_users_copy2.gender,
test2.is_retire = tb_bound_users_copy2.is_retire,
test2.bounded = tb_bound_users_copy2.bounded
where test2.full_name = tb_bound_users_copy2.full_name 
and test2.identity = tb_bound_users_copy2.identity

② 查看MySQL连接数

show status like 'Threads%';

说明如下:

Threads_connected 当前连接数
Threads_created 创建的连接数峰值
Thread_running 当前正在运行的连接数

更多推荐

MySQL数据库基础入门与常见操作