欢迎来到IDC91站长网!
解决服务器各种技术问题,加微信uecomzsr

MySQL

当前位置: IDC91 > 数据库 > MySQL

MySQL实战文章(非常全的基础入门类教程)

时间:2023-05-31 04:28:22|栏目:MySQL|点击:

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一

介绍

在这里插入图片描述

什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

MySQL数据库

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • MySQL 是开源的,目前隶属于 Oracle 旗下产品。
  • MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL 使用标准的 SQL 数据语言形式。
  • MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。

RDBMS 术语

在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

MySQL 为关系型数据库(Relational Database Management System), 这种所谓的关系型可以理解为表格的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格

数据库表的存储位置

MySQL数据表以文件方式存放在磁盘中:

  • 包括表文件、数据文件以及数据库的选项文件
  • 位置:MySQL安装目录data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表

注:

InnoDB类型数据表只有一个*. frm文件,以及上一级目录的ibdata1文件
MylSAM类型数据表对应三个文件:

  • *. frm —— 表结构定义文件
  • *. MYD —— 数据文件
  • *. MYI —— 索引文件

存储位置:因操作系统而异,可查my.ini

数据类型

MySQL提供的数据类型包括数值类型(整数类型和小数类型)、字符串类型、日期类型、复合类型(复合类型包括enum类型和set类型)以及二进制类型 。

一. 整数类型

在这里插入图片描述

  • 整数类型的数,默认情况下既可以表示正整数又可以表示负整数(此时称为有符号数)。如果只希望表示零和正整数,可以使用无符号关键字"unsigned"对整数类型进行修饰。
  • 各个类别存储空间及取值范围。

在这里插入图片描述

二. 小数类型

在这里插入图片描述

  • decimal(length, precision)用于表示精度确定(小数点后数字的位数确定)的小数类型,length决定了该小数的最大位数,precision用于设置精度(小数点后数字的位数)。

  • 例如: decimal (5,2)表示小数取值范围:999.99~999.99 decimal (5,0)表示: -99999~99999的整数。

  • 各个类别存储空间及取值范围。

在这里插入图片描述

三. 字符串

在这里插入图片描述

  • char()与varchar(): 例如对于简体中文字符集gbk的字符串而言,varchar(255)表示可以存储255个汉字,而每个汉字占用两个字节的存储空间。假如这个字符串没有那么多汉字,例如仅仅包含一个‘中’字,那么varchar(255)仅仅占用1个字符(两个字节)的储存空间;而char(255)则必须占用255个字符长度的存储空间,哪怕里面只存储一个汉字。
  • 各个类别存储空间及取值范围。

在这里插入图片描述

四. 日期类型

1、date表示日期,默认格式为‘YYYY-MM-DD’; time表示时间,格式为‘HH:ii:ss’; year表示年份; datetime与timestamp是日期和时间的混合类型,格式为’YYYY-MM-DD HH:ii:ss’。

在这里插入图片描述

2、datetime与timestamp都是日期和时间的混合类型,区别在于: 表示的取值范围不同,datetime的取值范围远远大于timestamp的取值范围。 将NULL插入timestamp字段后,该字段的值实际上是MySQL服务器当前的日期和时间。 同一个timestamp类型的日期或时间,不同的时区,显示结果不同。

3、各个类别存储空间及取值范围。

在这里插入图片描述

五. 复合类型

MySQL 支持两种复合数据类型:enum枚举类型和set集合类型。 enum类型的字段类似于单选按钮的功能,一个enum类型的数据最多可以包含65535个元素。 set 类型的字段类似于复选框的功能,一个set类型的数据最多可以包含64个元素。

六. 二进制类型

二进制类型的字段主要用于存储由‘0’和‘1’组成的字符串,因此从某种意义上将,二进制类型的数据是一种特殊格式的字符串。二进制类型与字符串类型的区别在于:字符串类型的数据按字符为单位进行存储,因此存在多种字符集、多种字符序;而二进制类型的数据按字节为单位进行存储,仅存在二进制字符集binary。

在这里插入图片描述

约束

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

下面文章就来给大家介绍一下6种mysql常见的约束,希望对大家有所帮助。

一. 非空约束(not null)

  • 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
  • Null类型特征:所有的类型的值都可以是null,包括int、float 等数据类型

在这里插入图片描述

二. 唯一性约束(unique)

  • 唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。
  • 唯一约束不允许出现重复的值,但是可以为多个null。
  • 同一个表可以有多个唯一约束,多个列组合的约束。
  • 在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。
  • 唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。

在这里插入图片描述

三. 主键约束(primary key) PK

  • 主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。

  • 每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。

  • 当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

在这里插入图片描述

四. 外键约束(foreign key) FK

  • 外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的,可以保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。
  • 创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。

在这里插入图片描述

五. 默认值约束 (Default)

若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。

在这里插入图片描述

六. 自增约束(AUTO_INCREMENT)

  • 自增约束(AUTO_INCREMENT)可以约束任何一个字段,该字段不一定是PRIMARY KEY字段,也就是说自增的字段并不等于主键字段。
  • 但是PRIMARY_KEY约束的主键字段,一定是自增字段,即PRIMARY_KEY 要与AUTO_INCREMENT一起作用于同一个字段。

在这里插入图片描述

当插入第一条记录时,自增字段没有给定一个具体值,可以写成DEFAULT/NULL,那么以后插入字段的时候,该自增字段就是从1开始,没插入一条记录,该自增字段的值增加1。当插入第一条记录时,给自增字段一个具体值,那么以后插入的记录在此自增字段上的值,就在第一条记录该自增字段的值的基础上每次增加1。也可以在插入记录的时候,不指定自增字段,而是指定其余字段进行插入记录的操作。

常用命令

登录数据库相关命令

一. 启动服务

语法:

mysql> net stop mysql

二. 关闭服务

语法:

mysql> net start mysql

三. 链接MySQL

语法:mysql -u用户名 -p密码;

root@243ecf24bd0a:/ mysql -uroot -p123456;

在以上命令行中,mysql 代表客户端命令,-u 后面跟连接的数据库用户,-p 表示需要输入密码。如果数据库设置正常,并输入正确的密码,将看到上面一段欢迎界面和一个 mysql>提示符。

在这里插入图片描述

四. 退出数据库

语法:quit

mysql> quit

结果:


在这里插入图片描述

DDL(Data Definition Languages)

语句:即数据库定义语句

对于数据库而言实际上每一张表都表示是一个数据库的对象,而数据库对象指的就是DDL定义的所有操作,例如:表,视图,索引,序列,约束等等,都属于对象的操作,所以表的建立就是对象的建立,而对象的操作主要分为以下三类语法

  • 创建对象:CREATE 对象名称;
  • 删除对象:DROP 对象名称;
  • 修改对象:ALTER 对象名称;

在这里插入图片描述

一. 创建数据库

语法:create database 数据库名字;

mysql> create database sqltest;

结果:


在这里插入图片描述

二. 查看已经存在的数据库

语法:show databases;

mysql> show databases;

结果:


在这里插入图片描述

  • information_schema:主要存储了系统中的一些数据库对象信息。比如用户表信息、列信息、权限信息、字符集信息、分区信息等。
  • cluster:存储了系统的集群信息。
  • mysql:存储了系统的用户权限信息。
  • test:系统自动创建的测试数据库,任何用户都可以使用。

三. 选择数据库

语法:use 数据库名;

mysql> use mzc-test;

返回Database changed代表我们已经选择 sqltest 数据库,后续所有操作将在 sqltest 数据库上执行。


在这里插入图片描述

有些人可能会问到,连接以后怎么退出。其实,不用退出来,use 数据库后,使用show databases就能查询所有数据库,如果想跳到其他数据库,用use 其他数据库名字。

四. 查看数据库中的表

语法:show tables;

mysql> show tables;

结果:


在这里插入图片描述

五. 删除数据库

语法:drop database 数据库名称;

mysql> drop database mzc-test;

结果:
在这里插入图片描述

注意:删除时,最好用 `` 符号把表明括起来

六. 设置表的类型

MySQL的数据表类型:MyISAMInnoDB、HEAP、 BOB、CSV等

在这里插入图片描述

语法:

CREATE TABLE 表名(
	#省略代码
)ENGINE= InnoDB;

上一篇:MySQL Flink实时流处理的核心技术之窗口机制

栏    目:MySQL

下一篇:关于MySQL的存储过程与存储函数

本文标题:MySQL实战文章(非常全的基础入门类教程)

本文地址:https://idc91.com/shujuku/5016.html

广告投放 | 联系我们 | 免责申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

Copyright © 2023 IDC91.COM 版权所有晋ICP备17006296号