数据库初识之MySQL(基础知识+增、删、改、查)

前言:数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:

(1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。

(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

一、数据库基本概念

数据:存储在以“记录”为行,以“字段”为列的数据表中

表的功能:用来存储具体的数据

数据库:表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据集合

ps:数据库可以完成数据持久化保存+快速提取

数据如何保存:最外层是mysql服务——>mysql数据库——>数据表——>记录为行,字段为列——>数据保存在一行行记录中

那么想要实现以上功能,需要编写一系列的规则--》SQL语句;而SQL语句按功能分类:增/删/改/查。

二、数据库的发展史

第一代数据库

①自二十世纪60年代起,第一代数据库问世

②是层次模型和网状模型的数据库系统

③为统一管理和数据共享提供了有力支撑

第二代数据库

①20世纪60年代起,第二代数据库系统问世

②20世纪80年代初,IBM公司关系数据系统DB2问世,开始逐步取代层次网状模型数据库,成为行业主流

③到目前为止,关系数据库系统仍占据系统数据库应用的主要地位

第三代数据库

①自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现

②面向对象的数据库系统,实用性强、适应面广

③20世纪90年代后期,形成了多种数据库系统共同支撑的局面

一些新的元素被添加进主流数据库系统中

三、当下主流的数据库

①SQL Serer (微软公司产品)

面向Windows操作系统

简单、易用

②Oracle (甲骨文公司产品)

面向所有主流平台

安全、完善、操作复杂

③DB2 (IBM公司产品)

面向所有主流平台

大型、安全、完善

④MySQL(甲骨文公司收购)

免费、开源、体积小

四、关系型数据库(SQL)

实体-关系 表(E-R表)

记录(行)表示了一个实体(的属性)

而E-R图

实体与实体之间的联系(关系)

即表与表的关系

实体:也称实例,对应现实世界中可区别其他对象的“事件”或“事务”,如银行客户、银行账户等

属性:实体所具有的某一特性,一个实体可以有多个属性,如“银行客户”实体集体中的每一个实体均具有姓名、住址、电话等属性

联系:实体集之间对应关系称为联系,也称为关系,如银行客户和银行账户之间存在“储蓄”的关系

存储方式:二维数据表:数据存储在记录为行,以字段为列的数据表中

每一行称为一条记录,用来描述一个对象的信息

每一列称为一个字段,用来描述对象的一个属性

存储内容:数字、文字、图形、图像、声音、档案记录等;包含:实体、关系、属性

常用的关系数据库:Mysql (Oracle公司;5.6升级到5.7的;mariadb,mysql的轻量版)、SQL server ( 微软)、access (微软公司office产品)/Oracle (税务局)、DB2 ( IBM公司,国电),sybase ( sybase)等等

五、非关系型数据库(NoSQL:not only sql)

概念:存储海量数据,给与”大数据“进行分析,筛选出有价值的部分

存储方式:不以关系模型为依据,不需要固定的表格式;

存储内容:存储图片、视频、音频等一些非关系型

优点:

高并发读写

对海量数据高效率存储与访问;比如高德:实时分析平台

具有高扩展性与高可用性;分布式特性

常用非关系型数据库(NoSQL) :

MongoDB 、Redis (内存数据库/缓存数据库) K-V键值对、与之类似的Memcache, K-v键值对

redi s-memecache对比:

相同点:存储高热数据(在内存中高速运行)

不同点: redis可以做持久化保存,可以存储对象

K-V:workdi r=/usr/local /nainx

tomcat --------redis(内存、缓存)---数据库mysql(数据库数据保存在磁盘里面)

tomcat跟数据库进行快速交互时,为了提高效率,可以在中间加载redis,一方面提高加载速率,另一方面降低mysql的压力

引申: redis 持久化方式

以键值存储数据,数据保存在内存中,但会定期将数据写入磁盘(持久化方式)

使用非关系型数据库存储,如果需要持久化,就可以使用redis

六、时序数据库-TSD

类似心电图;持续性的,根据时间点进行变化的一组连续性的数据

七、Mysql 数据库--日志

数据库日志文件用于备份,恢复,是最核心的部分

mysql与oracle日志有所区别

MySQL写一条数据,同步到日志中一条

Oracle重做日志组

一个组中至少3个日志成员,轮流存储日志;还会有另一个组与之同步/备份

阿里云对象存储:存储大都是一些静态文件,图片、音频、视频,不能直接在对象存储中修改数据

飞天平台:使用盘古系统,钟馗:安全;女娲:选举/调度;盘古一式三份

MySQL:存储引擎;分类

myisam和innodb 两种引擎

myisam:快速读取,不支持事务

innodb:更注重写,支持事务

八、数据库基本命令

常用数据类型:

int:整形   ###用于定义整数类型的数据

float:单精度浮点4字节32位 ##准确表示到小数点后六位

double:双精度浮点8字节64位 ##float的双倍

char:固定长度的字符类型  ##用于定义字符类型数据;比如:手机号码char(11)

varchar: 可变长度的字符类型 ##设置上限;比如:varchar(11)字符上限11个

text: 文本

image:图片

decimal(5,2): 5个有效长度数字,小数点后面有2位 ##指定长度数组;比如:若为12345.899和1 2345.891会显示12345.90和12345.89;四舍五入

#Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错

截取:四舍五入

截断:不四舍五入

九、SQL语言分类

Structured Query Language的缩写,即结构化查询语言

关系型数据库的标准语言

用于维护管理数据库

◆包括数据查询、数据更新、访问控制、对象管理等功能(增、删、改、查)

DDL:数据定义语言,用于创建数据库对象,如库、表、索引等

DML:数据操纵语言,用于对表中的数据进行管理

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

DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

十、基于数据表基础命令的高级操作

create table test1 like test;	#复制格式,通过LIKE方法,复制yyy表结构生成yyy2表
insert into test1 select * from test;	#备份内容;备份来自于test做复制
实例:
create table zzz like zw;
insert into zzz select * from zw;
select * from zzz;

克隆表,将数据表的数据记录生成到新的表中
CREATE TABLE test02 (SELECT * from test) ;	#复制test表数据到test02中
show create table test02\G		#获取数据表的表结构、索引等信息;
SELECT * from test02;
实例:
create table test (select * from zw);
show create table test\G; 	##看下图,实际复制的创建表的SQL语句
select * from test;

复制完表结构之后可以使用slter table更改需要的信息

show create table zw

清空表,删除表内的所有数据

方法一:

delete from yyy3;

#DELETE清空表后,返回的结果内有删除的记录条目;

DELETE:工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除

所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录

delete from test1 不会删除表的结构

方法二:

truncate table test01 ;

#TRUNCATE清空表后,没有返回被删除的条目:TRUNCATE工作时是将表结构按原样重新建立,因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE清空表内数据后,ID会从1开始重新记录

truncate table test01 不会删除表的结构

十一、创建临时表

临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出

后被销毁

如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除

临时表。

PS:无法创建外键

CREATE TEMPORARY TABLE表名(字段1 数据类型,字段2数据类型[,...] [,PRIMARY KEY (主键名) ]) ;

记录数据的过程

sql写入——>数据表中——>先把数据保存在内存中——>写入到磁盘

insert into info——>info这张表,会先复制一份表数据到内存里面,给我们进行修改

——>敲完回车之后,确定提交了,才会写入数据表中——>再保存在磁盘里面

create table test01——>只会保存在内存中,在数据库退出连接之前的所有操作,都是在内存中进行的,不会保存在磁盘里面,退出连接后,临时表会释放掉

临时表的创建

示例:

create temporary table XXX (

id int(4) zerofill primary key auto increment,

name varchar (10) not null,

cardid int (180) not null unique key,

hobby varchar (50) );

insert into XXX values (1, ' zhangsan' , 123456, ' running') ;

select * from test03;

show tables ;

quit

select * from test03;

十二、MySQL中6种常见的约束/规则

主键约束(primary key)

外键约束(foreign key)

非空约束(not null)

唯一性约束(unique [key| index] );index:索引

默认值约束(default)

自增约束(auto increment)

十三、数据库提权

授予权限

grant:提权

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址'  [ IDENTIFIED BY '密码'] ;

grant all on *.*:代表提权所有表

权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”, 使用"all"表示所有权限,可授权执行任何操作

数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"*"。

例如,使用“kgc.*"表示授权操作的对象为kgc数据库中的所有表

'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.kgc. com"、“192. 168.226.%”等。

IDENTIFIEDBY:用于设置用户连接数据库时所使用的密码字符串。

在新建用户时,若省略“IDENTIFIED BY"部分,则用户的密码将为空。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值