MySQL数据库的基础知识及操作

目录

引言

一、数据库基本概念

二、数据库发展史

三、数据库类型

1、关系型数据库

2.非关系数据库

3.关系型数据库和非关系型数据库的区别

关系数据库

非关系型数据库(NoSQL)

四、MySQL数据库介绍

五、Myaql存储引擎

六、常用的数据类型

数据库管理

七、Mysql基础语句操作

1.登录数据库

 2.查询数据库结构

 3.查看表的结构

 八、SQL语句

1、DDL语句:定义数据中的操作

1.1创建数据库和表-create

1.2创建新的表

1.3 删除指定的数据表

1.4 删除指定的数据库

2、DML数据操控语言

2.1 向数据表中插入新的数据记录

2.2 查询数据记录

2.3  修改、更新数据表中的数据记录

 2.4 在数据表中删除指定的数据记录

 3、DQL数据查询语言

 4、DCL数据控制语言

4.1 修改表名

 4.2 扩展表结构(增加字段)

 4.3 修改字段(列)名,添加唯一键

 4.4 删除字段

九、扩展

了解约束

总结 


引言

数据库管理系统是一个由互相关联的数据的集合和一组用访问这些数据的程序组成,这个数据集合通常称作数据库,其中包含了关于某个企业的信息。DBMS的主要目标就是提供一种可以方便高效的存取数据库信息的途径。

一、数据库基本概念

数据使用一些介质进行存储,例如文件存储在文档中
数据库可以完成数据持久化保存+快速提取-
数据如何保存:最外层是Mysql服务–>mysql数据库–>数据表–>记录为行,字段为列–> 数据保存在一行行记录中,我们想要对于存储在数据库中的数据进行管理、使用的话,我们就需要通过编写一系列的规则–>SQL语句(命令行形式)
SQL语句 按功能分类:增删改查

二、数据库发展史

1、第一代数据库
自20世纪60年代起,第一代数据库IMS系统问世
是层次模型与网状模型的数据库系统
为同意管理和共享数据提供了有利的支撑

2、第二代数据库
20世纪70年代初,第二代数据库——关系数据库开始出现
20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
到目前为止,关系数据库系统仍占领数据库应用的主要地位

3、第三代数据库
自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现
面向对象的数据库系统,实用性强、适应面广
20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面
一些新的元素被添加进主流数据库系统中。例如,Oracle 支持的 < 关系 - 对象 > 数据库模型

数据库的三个阶段:人工管理阶段、文件管理系统、数据库系统阶段

三、数据库类型

        关系型数据库(SQL)存储的往往是字符、字符串、数值、布尔值等(磁盘)
        非关系型数据库(NoSQL)存储的往往是图片、视频、语言等(内存)
        时序数据库(TSDB)心电图,持续性,根据时间点进行变化的一组连续性的数据(时序数据)
        关系型数据库:
           Mysql(5.7之前不是Oracle公司)、SQL server(微软)、access(微软公司office产品)
          Oracle、DB2、sybase、PostgreSQL(Pg)等等。

主要的核心数据—Oracle
  菜单、普通数据—Mysql

1、关系型数据库

  • 关系型数据库是基于关系模型的数据库系统
  • 关系模型的数据结构使用简单易懂的二维数据表
  • 关系模型可用简单的 “实体 - 关系”(E - R) 图来表示
  • E - R 图中包含了实体(数据对象)、关系和属性三个要素(所有实体及实体之间联系的集合构成了一个关系数据库)

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

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

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

二维数据表
每一行称为一条记录,用来描述一个对象的信息
每一列称为一个字段,用来描述对象的一个属性

主键
数据表中的每行记录都必须是唯一的,不允许出现完全相同的记录,通过定义主键(主关键字,Promary Key)可以保证记录(实体)的唯一性
键,即关键字,它是关系模型中一个非常重要的元素
主键唯一标识表中的行数据,一个主键值对应一行数据,主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)
一个表只能有一个主键
如果一个属性集能唯一地标识表的一行而又不含有多余的属性,那么这个属性集称为候选键
表中可以有多个候选键,但是只能有一个候选键可以选做表的主键,所有其他候选键称为备用键
例如下图,“编号”、“姓名”、“性别”、“年龄”、“专业编号” 都可以说是候选键,而可以定义 “编号” 为主键

编号 姓名 性别 年龄 专业编号
1 张三 23 1
2 李四 24 2
3 王五 25 3
4 战八 26 4

关系数据库应用 

关系型数据库 应用举例
Oracle,MySQL 12306O户信息系统
sQLServer、Sybase 淘宝账号系统
lnformix、access 联通于机号信息系统
DB2、FoxPRO 很行用户账号系统
PostgresQL 网站用户信息系统

 一个关系数据库通常包括多个表,通过外键(Foreign Key)可以使这些表关联起来
外键是用于建立和加强两个表数据之间的链接的一列或多列,通过表中主键值得一列或多列添加到另一个表中,可创建两个表之间的链接,这个列就称为第二个表的外键

2.非关系数据库

非关系数据库也被称作NoSQL (Not Only SQL)
存储数据不以关系模型为依据,不需要固定的表格式

非关系型数据库的优点

  • 数据库可高并发读写
  • 对海量数据高效率存储与访问
  • 数据库具有高扩展性与高可用性

常用的非关系数据库:Redis、mongoDB等

3.关系型数据库和非关系型数据库的区别

关系数据库

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

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

优点:

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

缺点:

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

非关系型数据库(NoSQL)

       MongoDB 、 Redis(内存数据库/缓存数据库)K-V键值对、与之类似的Memcache,K-V键值对
redis-memecache对比:
        相同点:存储高热数据(在内存中高速运行)
        不同点:redis可以做持久化保存,可以存储对象
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点:

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

缺点:

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

四、MySQL数据库介绍

  • 一款深受欢迎的开源关系型数据库
  • Oracle旗下的产品
  • 遵守GPL协议,可以免费使用与修改

特点

  • 性能卓越、服务稳定
  • 开源、无版权限制、成本低
  • 多线程、多用户
  • 基于C/S(客户端/服务器)架构
  • 安全可靠
    安全可靠的原因是mysql日志文件能备份,恢复,不怕数据丢失,是mysql最核心部分

MySQL商业版与社区版

  • MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用
  • MySQL社区版是由分散在世界各地的MySQL开发者.爱好者一起开发与维护,可以免费使用

两者区别
        商业版组织管理与测试环节更加严格,会比社区版
        更稳定商业版不遵守GPL,社区版遵从GPL可以免费使用
        商业版可获得7*24小时的服务,社区版则没有

MySQL产品阵营

第一阵营:5.0-5.1阵营,可说是早期产品的延续
第二阵营:5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能
第三阵营: 6.0-7.1阵营,就是MySQL Cluster版本,为适应新时代对数据库的集群需求而开发
下载网址:http://www.dev.mysql.com/downloads

日志

  • 数据库日志文件用于各份,恢复,是最核心的部分
  • mysql与oracle日志有所区别
  • mysql写一条数据,同步到日志中一条
  • oracle:重做日志组
  • 一个组中至少3个日志成员,轮流存储日志
  • 还会有另一个组与之同步/备份

五、Myaql存储引擎

拥有较高的插入,查询速度,但不支持事务

MyISAM

InnoDB

支持事务的存储引擎,mysql5.5以后将它设置为默认存储引擎。

BDB

事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性

Memory

基于内存的存储引擎,将所有的数据都置于内存中,查询、插入、删除效率极高,是一种空间换时间的思想,不过服务重启会导致数据丢失将一部分的MyISAM表联合成的一个整体,适用于大数据存储。

Merge

六、常用的数据类型

类型 解释 举例
int 整型 用户定义整数类型的数据(1、2、3、4、5...)
fliat 单精度浮点(4字节32位) 准确表示小数点后6位
double 双精度浮点(8字节64位) 小数位更多,更精确
char 固定长度的字符类型 定义字符长度(存的少,会补空格,存的多被截取,高
版本报错)
varchar 可变长度的字符类型 定义字符最大长度(存的少,总长度变小,存的大于最
大,报错)
text 文本
image 图片
decimal(5,
2)
总共5个有效长度数字,小数点后面
有两位

char和varchar的区别

char:如果存入数据的实际长度比指定长度要小,会补空格指定长度,如果存入的数据比实际长度大于指定长度,低版本会截取,高版本会报错。
varchar:如果存入的数据实际长度比指定长度要小,那么指定长度会变成实际长度一样,如果存入数据的实际长度大于指定长度,会报错。

截取和截断的区别

截取会对后一位进行四舍五入,截断直接获取要的数字,不进行四舍五入

数据库管理

SQL语言分类

  1. DDL:数据定义语言,用于创建数据库对象,如库,表,索引等
  2. DML:数据操纵语言,用于对表中的数据进行管理
  3. DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
  4. DCL:数据控制语言,用于设置或更改数据库用户或角色权限

七、Mysql基础语句操作

1.登录数据库

mysql -uroot -p123456     #直接登录数据库,用-P输入密码,这样不安全
mysql -uroot -p     #登录数据库,不输入密码,回车之后再输入

 

 2.查询数据库结构

show databases;     #查看有多少数据库
use mysql;          #进入一个数据库中
show tables;        #查看该数据库中有多少个表

 

 3.查看表的结构

describe db;    #查看db表的结构(可缩写位desc db;)

 八、SQL语句

1、DDL语句:定义数据中的操作

DDL语句可用于创建数据库对象(库、表、索引)
删除数据库和表

1.1创建数据库和表-create

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
create database zyy;     #创建一个名为zyy的数据库
 
create table zhou (id int not null,name char(10) not null,gender char(1),primary key (id));
创建一个表zhou id int整形 not null 不为空
name char(10)固定长度的字符串(10字节)
gender char(1)固定长度的字符串(1字节)
prinmary key(id)z指定主键为id的字段

创建一个名为zyy的数据库,并查看数据库

 

1.2创建新的表

 进入创建的数据库中,查看数据库中的表,为空

  在数据库中创建名为zhou的表

 create table zhou (id int not null,name char(10) not null,gender char(1),primary key (id));

创建一个表 zhou  id int 整形 not null 不为空 name char(10)gender 固定长度的字符串(1)primary key (id)指定主键为id的字段

1.3 删除指定的数据表

use 数据库名
DROP TABLE 表名;
 
DROP TABLE [数据库名].表名;

1.4 删除指定的数据库

DROP DATABASE 数据库名;

2、DML数据操控语言

 数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据。

 insert                                        update                                                        delete

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

2.1 向数据表中插入新的数据记录

例:create database school;
 
use school;
 
create table CLASS (id int NOT NULL,name char(10) NOT NULL, score decimal(5,2), passwd char(48) DEFAULT'',PRIMARY KEY (id));
 
insert into CLASS (id,name,score,passwd) values(1,'lichen',99,PASSWORD('123456'));
insert into CLASS (id,name,score,passwd) values(2,'zhangsan',59,123456);
 
#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。

 密文必须大写

2.2 查询数据记录

SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
 
例:select * from CLASS;
select name,score from CLASS where id=1;

2.3  修改、更新数据表中的数据记录

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
 
例:insert into CLASS (id,name,score,passwd) values(4,'张三',77,123456);
insert into CLASS (id,name,score,passwd) values(5,'lisi',66,123456);
select * from CLASS;
 
update CLASS set id=6 where name='张三';
select * from CLASS;
 
update CLASS set name='zhou',score=100 where id=3;
select * from CLASS;

 

 

 2.4 在数据表中删除指定的数据记录

DELETE FROM 表名 [WHERE 条件表达式];
 
例:delete from CLASS where id=6;
select * from CLASS;

 3、DQL数据查询语言

select name from CLASS\G         #以列表方式竖向显示
select * from CLASS limit 2;      #只显示头2行
select * from CLASS limit 2,2;    #显示第2行后的前2行

 

 

 4、DCL数据控制语言

4.1 修改表名

ALTER TABLE 旧表名 RENAME 新表名;
 
例:alter table CLASS rename CLASS21;
show tables;
select * from CLASS21;

 4.2 扩展表结构(增加字段)

ALTER TABLE 表名 ADD address varchar(50) default '江苏';
 
​#default ‘地址不详’:表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用
 
例:alter table CLASS3 add address varchar(50) default '江苏';

 4.3 修改字段(列)名,添加唯一键

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
 
例:alter table CLASS21 change name student varchar(20) unique key;
select * from CLASS21;
 
例:insert into CLASS21 (id,student,score,passwd) values(5,'lsp',250,123456);
select * from CLASS21;

 

 

 每个表中只能由一个主键 ,但是许多内容都需要唯一性,这就是主键的作用

 4.4 删除字段

ALTER TABLE 表名 DROP 字段名;
 
例:alter table CLASS19 drop score;

九、扩展

了解约束

create table if not exists zyyy (id int(4) zerofill primary key auto_increment,name varchar(10) not null,cardid int(18) not null unique key,hobby varchar(50));
 
if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建。
int(4) zerofill:表若数值不满4位数,则前面用“0”填充,例0001。
auto_increment: 表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可重复,自增长字段必须是主键,如添加的距离数据没有指定字段的值且添加失败也会自动递增一次。
unique_key : 表示此字段唯一约束,此字段数据不可以重复,一张表中只能有一个主键,但是一张表中可以有多个唯一键。
not null : 表示此字段不允许为NULL。

 

总结 


sql语言的分类

DDL数据定义语言,用于创建和删除数据库表操作

create(创建) drop(删除)
DML:数据操作语言,用于管理表中的记录,对数据进行增,删,该,的操作

insert  into  (插入) ,selete(删除),update set(修改)
DQL:数据查询语言,主要用来查询数据库中的记录

select(查看)
DCL:数据控制语言,用来针对字段属性的增,删,改操作

alter(修改字段),其中add(添加),change(修改),drop(删除)
 

猜你喜欢

转载自blog.csdn.net/zyy1020075955/article/details/126883308