数据库身份证号用什么类型_【文末送书】MySQL数据库?看这一篇干货文章就够了!…

前言 为啥学习MySQL呢?因为MySQL是最流行的关系型数据库管理系统之一,在w…

前言

为啥学习MySQL呢?因为MySQL是最流行的关系型数据库管理系统之一,在web应用方面,MySQL是最好的软件。MySQL所使用的sql语言是用于访问数据库的最常用标准化语言。

放心,读这期内容的朋友们都适合:网站开发,软件开发或者爱好者。

1.MySQL的入门

什么是数据库呢?

  1. 数据库,它是按照数据结构组织,存储和管理数据的仓库。
  2. 数据库管理系统, 指数据库系统中对数据进行管理的软件系统。

让我来整理一张思维导图:980bb4e5a0aba6cc7f14a81ca51d4a42.png

细节掌握:

  • 安装配置,常用命令,操作数据库;
  • 整型与浮点型,日期时间型与字符型;
  • 创建与查看数据库表,修改数据库表,删除数据库表;
  • 非空约束,主键约束,唯一约束,默认约束,外键约束;
  • 管理工具:MySQL Workbench,SQLyog
  • 单表数据记录的插入与自动编号,单表数据记录的更新,单表数据记录的删除,单表数据记录的查询,对查询结果进行分组,对查询结果进行排序,通过limit语句限制查询记录的数量;
  • mysql的运算符,数值函数,字符函数,日期时间函数,聚合函数,信息函数与加密函数;
  • 使用比较运算符引发的子查询,插入记录时使用的子查询
  • 多表连接,内连接,外连接,自连接,多表更新,多表删除
  • 创建,使用自定义函数
  • 创建存储过程,使用存储过程

mysql官网:

3f67c15490dd323bc4e02642438926e3.png
a92eeea2e19aa46e1f0f49ed2f86ef4b.png

安装包下载:(安装操作)

96bbe1c52d32127a72174e9d6059c4c8.png
ee493b978ad132a5f29a1391d72bcc5c.png
03df33b6c21b056b484b2b20393115a5.png

点击安装:

f622c5c67a2c1bbf641c969fa6f860c0.png
94f05e7f604aeb1513cf76dea47825aa.png
d24e8eddbfbb01a98443d7480c325645.png
6bfa6fdd5dac5ed74a01799d0791415a.png
6208bea3a352118e1326082ad19408c8.png

产品配置的操作:

e3b37a926f520c74595f1e9b7d66b98b.png
572f1b57e9f494944993a236eb512bb3.png
ac5667783880e3499f405c523e2f14d5.png
4d845c343e4f16a5e4c4fde83f46e772.png
e47a0ec646723c19d5f2ff87f7e4dc03.png
41f0142aff19eb3a0e04659beec4e91e.png

打开服务框用win+r,输入services.msc

89cac416057c63d9f7c0d41e3adeba68.png
1a1fc1ff6fbd3d25439c1d27f395d344.png

2. mysql目录结构

  1. bin目录:用于存储一些可执行文件
  2. include目录:用于存储包含的一些头文件
  3. lib目录:用于存储一些库文件
  4. share目录:用于存储错误信息,字符集文件等
  5. data目录:用于放置一些日志文件以及数据库
  6. my.ini文件:数据库的配置文件

启动与停止:

7bbb9444634e5bce9629c02944171c01.png
6fe1a8c68f5babc70ed7b6871ae49e75.png

mysql参数:

参数 描述
-u 用户名
-p 密码
-V 输出版本信息并且退出
-h 主机地址

3.常用命令

修改用户密码的命令:

7535a9726cdb28b3867ee8ce9eca71d6.png

显示数据库的命令

c8cca3ef2b5707e3921a088096d925e3.png

使用数据库的命令

86a13a50eee896580d3eda4b791530d0.png

显示当前连接的信息

  1. 显示当前连接的数据库select database();
  2. 显示当前服务器版本select version();
  3. 显示当前日期时间select now();
  4. 显示当前用户select user();
cafd1c667b5dcb5976a2f7d712cf2303.png
bff0569d21fab51a9c6c96c113d94821.png
81112fa734b3ab846691bdfd220ea57f.png

4.操作数据库(创建,修改,删除)

创建数据库SQL

09c8a4b8de1d8ea863d91a51e7528593.png
9594dfec6ecf4119314aff7227c2fcca.png
a31bb51589757a59b14a6ace221be7c7.png

修改数据库的语法格式:

5795121dde61285dfeba7e16236927ab.png
e26d6045aeb89f6efafd1710239225d9.png

删除数据库语法格式:

3cbd7d23ca5430962c4680175fef6bf1.png

5.数据库-数据类型

了解数据类型:(借助图书管理系统)

图书类别表:

图书信息表:

借阅信息表:

读者信息表

数据类型:

整型:TINYINT-1字节 SMALLINT-2字节 MEDIUMINT-3字节 INT-4字节 BIGINT-8字节

浮点数类型和定点数类型:

日期时间类型:

40bf762de06be01c33a4c940d6629859.png

字符型:

e49f9385579df1e032582c9aa83922a7.png

6.数据库表结构的操作

  • 创建和查看数据表

856ba5fe344010f41f9a894a06610ecf.png
865ad9a850b41497338c506290e61fb5.png
cd39ae0def245bdd9b4e94f9a37464ad.png
  • 查看数据库表:

  • 查看数据表基本结构:

4aa2751c9a61b2ea4334504d7fa6825d.png
2c9f98dbc3a98831db1991fff94afef4.png

0b3e900284e00fe36f0364b6c951b53e.png
  • 修改数据库表

添加列:

8b6240956cd926fad8947db7eed3f76b.png
91cde9521c762ada163539205b7f63de.png

修改列名:

3f6bea2e309e990c672280fc8335c724.png

修改列的数据类型:

f03bd31853d0e242158d169604a9fa57.png

修改列的排列位置

c0f4dbc8e5755d47d44c363565108bc9.png

删除列:

06c28791e76f098de49cd2873a11b649.png

修改表名:

cce5274e10d77ac87592ba5fe7b86d69.png
  • 删除数据库表

af9f9d204f27b1ae8bb378b360a6f2b9.png
a023f5b9d94d003c1262762370fae8b5.png
6453dfa683c1938cb1548f9c870a001f.png

查看表分区

f1c5db84d9453a2f4405e32fb4beaef6.png

创建表分区:使用partition by类型(字段)

使用values less than操作符定义分区

19e3c5e285a597a2340273c63fd5cc64.png
3eafa95d010ae3c79c708eded3f739bb.png
153f52ab83018bbcaf1330683b822a7b.png

7.子查询

什么是子查询呢?

它是指嵌套在其他sql语句内的查询语句。

查询借阅信息表, 显示借 xx这本书的借阅记录

查询图书信息表, 显示图书价格小于图书平均价格的所有图书信息

查询图书信息表,显示图书类别不是’数据库’的所有图书信息

查询图书信息表,显示图书类别为’计算机’的所有图书信息

查询图书信息表,显示图书类别为’2’的所有图书信息

查看图书类别表中是否有’y’的类别,如果有,则查看图书信息表

insert into select 语句从一个表复制数据,然后把数据插入到一个已存在的表中。

需要创建一张罚款记录信息表,包含如下信息:图书编号、身份证号、应还日期、实际还书日期,罚款金额

记录来源于借阅信息表超出还书时间还未还书的读者

身份证号为5461xxxxxxx的读者将超限的图书20201101归还,根据描述实现如下需求:

  • 更新借阅信息表,将借阅状态(status)更新为‘是’。
  • 更新罚款记录信息表,更新实际还书日期和罚款金额,罚款金额为每超出一天扣0.2元。

8.mysql的约束

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

表结构:

图书(图书编号book_id,类别编号book_category_id,书名book_name,作者author)

mysql中常用的几种约束类型:

约束类型 非空约束 主键约束 唯一约束 默认约束 外键约束
关键字 not null primary key unique default foreign key

图书信息表:

(图书编号book_id,类别编号book_category_id,书名book_name,作者author,价格price,出版社press,出版时间pubdate,库存store)

图书类别表:

(类别编号category_id – 主键,类别名称category – 唯一,父类别parent_id -非空)

读者信息表:

(身份证号card_id,姓名name,性别sex,年龄age,联系电话tel,余额balance)

借阅信息表:

(图书编号book_id,身份证号card_id,借出日期borrow_date,归还日期return_date,是否归还status)

非空约束

null字段值可以为空

not null字段值禁止为空

非空约束

非空约束指字段的值不能为空。对于使用了非空约束的字段如果用户在添加数据时,没有指定值,数据库系统会报错。

创建表时添加非空约束

删除非空约束

通过修改表添加非空约束

ebc4f9187b7ff370adb6e2b1471ceefe.png
3890f4813442e9181c60ff03961c9bd2.png

主键约束

主键约束:要求主键列的数据唯一,并且不允许为空,主键能够唯一地标识表中的一条记录。

主键的类型:

主键分为单字段主键多字段联合主键

单字段主键:是由一个字段组成

创建表时添加主键约束

删除主键约束

通过修改表的方式添加主键约束

1f2cc89587768e15761150e6c6fa755b.png
6049e0867c32e5632bf1c6c6d296aa65.png

多字段联合主键,复合主键

主键有多个字段联合组成。primary key(字段1,字段2,...字段n);

通过修改表为列添加主键

66bf0602a70130a2c47183ca7786267a.png

唯一约束

唯一约束要求该列唯一,允许为空,唯一约束可以确保一列或者几列不出现重复值。

语法规则:

创建表时添加唯一约束

通过修改表的方式添加唯一约束

删除唯一约束

a820a140f5802359fb70f1130ecc782e.png
5f68b66562eae2cf8e4a3f346592b4e2.png
22fe73ca0f73e5c897f423d29a770e17.png
5f270f97a1c72c69494fab806a040f03.png

唯一约束和主键约束的区别

  1. 一个表中可以有多个unique声明,但只能有一个primary key声明
  2. 声明为primary key 的列不允许有空值
  3. 声明为unique的列允许空值

默认约束

默认约束是指某列的默认值

创建表时添加默认约束

通过修改表的方式添加默认约束

删除默认约束

外键约束

外键是用来在两个表的数据之间建立链接,可以是一列或者多列,一个表可以有一个或者多个外键。

外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键必须等于另一个表中主键的某个值。

作用:保持数据的一致性,完整性。

创建表时添加外键约束

通过修改表的方式添加外键约束

删除外键约束

52586b8d06e6c0b9f969d393005720dc.png

外键约束的参照操作

cascade,从父表删除或更新且自动删除或更新子表中匹配的行

创建图书管理系统表

7e9a01e4d124ceb8e7ab2341afecc2f7.png
cd688f77b02229377444b9a38597d2de.png
78ec12f134820eecaf7a4643b6e96b0b.png

图书类别表

图书信息表

读者信息表

借阅信息表

9.数据库表记录的操作

单表数据记录的插入

语法格式:

为表的所有列插入数据

为表的指定列插入数据

同时插入多条记录

将查询结果插入的表中

自动增加

设置表的属性值自动增加:

创建表时添加自增列

测试自增列

去掉自增列

添加自增列

修改自增列的起始值

删除图书信息表的外键

为图书类别表添加自动编号的功能

恢复关联

单表数据记录的更新

向借阅信息表插入一条借阅信息

更新读者信息表中的余额

更新余额

更新图书信息表的库存

单表数据记录的删除

删除指定条件的记录

删除表中所有记录

想要删除表中的所有记录,可以使用truncate table语句,truncate将直接删除原来的表,并重新创建一个表,其语法结构:

查询儿科学的类别编号

删除图书编号为5的图书信息

删除图书类别表中儿科学这个类别

单表数据记录的查询

查询所有列

查询指定列

查询指定条件的记录

查询结果不重复的记录

查看空值

分组

统计读者信息表中男读者的人数

将读者信息表中的记录按性别进行分组

将读者信息表中的记录按性别进行分组,并统计每种性别的人数

将读者信息表中的记录按性别进行分组,分组后人数大于的性别

排序

通过order by子句对查询的结果进行排序

排序方向:

  1. 排序分为升序和降序,默认为升序
  2. 升序asc
  3. 降序desc

单列排序

多列排序

指定排序方向

limit语句限制查询记录的数量

前3行记录

从第3条记录开始的后2条记录

将图书信息按照库存进行分组,统计每组库存下的个数,然后按库存进行降序排序,并查看结果中的前四条记录

10.运算符与函数

MySQL 主要有以下几种运算符:

  1. 算术运算符
  2. 比较运算符
  3. 逻辑运算符
  4. 位运算符

算术运算符

bc61737ef732183abfd2e07178dd197a.png

比较运算符

a0adc4a518abf78dfad9977b316a4484.png

逻辑运算符

65845df5cf721991d93dfb2dab01024e.png

位运算符

621e817e01ebb62636a896eab5f52a17.png

运算符优先级

13a1a4339909d3a3cfd731d0a76281a7.png

读者的身份证号,姓名,电话,余额。

查看读者信息表中,余额大于200的读者信息。

查看读者信息表中,余额不等于200的读者信息。

查看读者信息表中,年龄不为空的读者信息。

查看读者信息表中,余额在350到450之间的读者信息。

数值函数

ceil返回大于x的最小整数值

floor返回小于x的最大整数值

四舍五入 round返回最接近于参数x的整数,对参数x进行四舍五入

截断函数

取模,返回x被y除后的余数

字符函数

字符串连接

字母转换大小写

求长度

删除空格

截取字符串

获取指定长度的字符串

替换函数

格式化函数

日期和时间函数

查看当前的系统日期

查看当前的系统日期和时间

date_add(date,interval expr type): year,month,day,week,hour

聚合函数(分组函数)

| 名称 | 描述 | | avg() | 返回某列的平均值 | | count() | 返回某列的行数 | | max() | 返回某列的最大值 | | min() | 返回某列的最小值 | | sum() | 返回某列值的和 |

求图书信息表中,所有图书的平均价格。

求图书信息表中,所有图书的总价格。

求图书信息表中的最大库存。

求图书信息表中的最小库存。

求图书信息表中有多少种图书。

按类别进行分组, 查询每种类别下有多少种图书以及每种类别图书的库存总和。

信息函数与加密函数

系统信息函数

加密函数

11.多表连接查询

多表连接查询是从多个表中获取数据。

由图书信息表:(图书编号book_id,类别编号book_category_id,书名book_name)

由图书类别表:(类别编号category_id,类别名称category,父类别parent_id)

获取表:(图书编号book_id,书名book_name,类别名称category)

多表连接的语法结构:

多表连接 通过查看图书信息表和图书类别表 来获取图书编号、图书名称、图书类别

内连接

根据连接条件从多个表中查询选择数据,显示这些表中与连接条件相匹配的数据行,组合成新记录。(内连接就是两者共同都有的)

内连接的语法结构:

由于图书借阅统计的需要,想查询未归还图书的图书编号,图书名称,身份证号,姓名,电话,归还日期, 是否归还。

外连接

外连接将查询多个表中相关联的行。

外连接分为:左外连接 left outer join;右外连接right outer join

根据业务需要,我们需要查看图书类别表中的所有类别下都有哪些图书。

左外连接:显示左表全部记录,右表满足连接条件的记录。

右外连接:显示右表全部记录,左表满足连接条件的记录。

语法结构:

自连接

如果在一个连接查询中,涉及的两个表都是同一个表,这种查询称为自连接

查询所有图书类别的图书类别编号,类别名称,上级分类名称。

多表更新

身份证号为432xxxxxx的读者将超时的图书86154归还,根据描述实现如下需求:

  1. 更新借阅信息表,将借阅状态(status)更新为‘是’。
  2. 更新罚款记录信息表,更新实际还书日期和罚款金额,罚款金额为每超出一天扣0.2元。
  3. 同时更新读者信息表的余额。(在余额中扣除罚款金额)

多表删除

图书类别表,图书信息表:

由于业务需求,需要删除图书类别表中在图书信息表中没有图书记录的类别。

需要删除图书类别表的编程语言的类别,以及图书信息表中关于编程语言的图书记录。

多表连接

根据连接查询返回的结果:内连接(inner join),外连接(outer join),交叉连接(cross join)。

根据连接条件所使用的操作符:相等连接,不等连接。

12.自定义函数

创建函数

调用函数

查看函数

删除函数

函数:需要有返回值,可以指定0~n个参数

创建自定义函数:

Characteristics指定存储函数的特性,取值举例:

函数体是由sql代码构成,可以简单的sql语句。如果为复合结构需要使用begin...end语句,复合结构可以包含声明,流程控制。

创建自定义函数:

语法格式:

实例分析函数:

自定义函数两个必要条件:参数,返回值

创建自定义函数

  1. function_name : 函数名称
  2. func_parameter : 函数的参数列表
  3. RETURNS type : 指定返回值的类型
  4. Characteristics : 指定存储函数的特性
  5. routine_body : 函数体

创建无参的自定义函数:

fb841bae0536448e4db0bb9c8276f402.png

删除自定义函数

30b91f62298a38b0559d9465ae7f3935.png

复合结构体的函数

流程控制的使用

常用的流程控制语句:

  1. IF条件判断语句-if
  2. CASE条件判断语句-case
  3. WHILE循环语句-while
  4. LOOP循环语句-loop
  5. REPEAT循环语句-repeat

13.存储过程

9eaade19c36ad441a98c91ae935b0a2c.png

局部变量以关键字DECLARE声明

16c999f5ebc750bbdef9b3c7f7a8c8c8.png
b9d135fc5ed9cb47bc8c05284c7bd300.png

内部BEGIN…END块中定义的变量只在该块内有效

会话变量的作用范围为整个程序

078ad8945459f016cea4d43d6df7ea76.png
c7109d58087953c1f7d47d5eeb876ee3.png

语法结果

删除存储过程:

存储过程和函数的区别

存储过程,存储过程实现的功能比较复制,功能强大,可以执行包括修改表等一系列数据库操作。

存储函数,实现的功能针对性比较强。

返回值上的不同

存储过程:可以返回多个值,也可以不返回值,只是实现某种效果或动作。

存储函数:必须有返回值,而且只能有一个返回值。

参数不同

存储过程:存储过程的参数类型有三种,in,out,inout。

存储函数:参数类型只有一种,类似于in参数,调用函数时需要按照参数的类型指定值即可。

语法结构

存储过程,存储过程声明时不需要指定返回类型。

存储函数,函数声明时需要指定返回类型,且在函数体中必须包含一个有效的return语句。

调用方式

存储过程,用call语句进行调用

存储函数,嵌入在sql中使用的,可以在select中调用

14.事务

事务必须满足的四个条件:

控制事务处理

rollback,回滚会结束用户的事务,并撤销正在进行的所有未提交的修改

commit,会提交事务,并使已对数据库进行的所有修改称为永久性的

savepoint identifier,允许在事务中创建一个保存点,一个事务中可以有多个savepoint

rollback to identifier,把事务回滚到标记点

事务处理主要有两种方法

begin, rollback, commit来实现

  1. begin,start transaction开始一个事务
  2. rollback事务回滚
  3. commit事务确认

b648ffb296dd6cbd62aa2610dbac4811.png直接用set来改变mysql的自动提交模式

  1. set autocommit = 0 禁止自动提交
  2. set autocommit = 1 开始自动提交

innodb使用事务

从Mysql5.5版本开始,InnoDB是默认的表存储引擎。

innodb是事务型数据库的首选引擎,支持事务安全表。

d43d257474767a2bb538735c0f400ee7.png

MySql中 delimiter

默认下,delimiter是分号,在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。

0b7f790d812e46c1a23445ecfc1255ac.png(告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。)

什么是存储引擎:数据库存储引擎是数据库底层软件组件。数据库管理系统使用数据引擎进行创建,查询,更新和删除数据的操作。

mysql的核心就是存储引擎。

innodb存储引擎

  • 它为mysql提供了具有提交,回滚和崩溃恢复能力的事务安全存储引擎。
  • 对于处理巨大数据量的数据拥有很好的性能
  • innodb存储引擎支持外键完整性约束
  • innodb被用在众多需要高性能的大型数据库站点上

设置存储引擎:

  1. 设置服务器的存储引擎
  2. 在配置文件my.ini中的mysqld下面设置需要的存储引擎
  3. default-storage-engine=InnoDB
  4. 重启mysql服务器

60e44fa4da1a2dd1fdd379be6e865fd8.png

修改表的存储引擎

e72bf9261de3dc6eabdc0cfe4dbf0914.png
912a332d6034cf7fcc737ecb6dab41da.png
b066a3f959c7e68320686b25b4abc61d.png
b8cddcbe15e5f1299ef08cdc10ef0140.png
29816bd379193d5cb610b0790c0277e2.png
1ed63bdc967e99c75105b0415aa74ea0.png
8f51d3732aab8d5567e4907855225b83.png
f6d93a6c0f4adb8dc8a47dc8b4558311.png

15.管理与维护

管理用户

权限表:存储账号的权限信息表:user,db,host,tables_priv,columns_privprocs_priv

各个权限表的作用

tables_priv表用来对表设置操作权限;columns_priv表用来对表的某一列设置权限;procs_priv表可以对存储过程和存储函数设置操作权限。

0962d8f00cfcdda4e64ba46200bc2483.png

使用CREATE USER语句创建新用户

语法格式:

使用DROP USER 语句删除用户

语法格式:

示例:

点关注,不迷路

好了各位,以上就是这篇文章的全部内容,能看到这里的人都是人才。我后面会不断更新技术相关的文章,如果觉得文章对你有用,欢迎给个“赞”,也欢迎分享,感谢大家 !!

MySQL是怎样运行的:从根儿上理解 MySQ

9afaf6eb7f4e07ea7b154dd7db94bf93.png

内容简介:

《MySQL是怎样运行的:从根儿上理解 MySQL》采用诙谐幽默的表达方式,对MySQL的底层运行原理进行了介绍,内容涵盖了使用MySQL的同学在求职面试和工作中常见的一些核心概念。

《MySQL是怎样运行的:从根儿上理解 MySQL》总计22 章,划分为4个部分。第1部分介绍了MySQL入门的一些知识,比如MySQL的服务器程序和客户端程序有哪些、MySQL的启动选项和系统变量,以及使用的字符集等。第2部分是本书后续章节的基础,介绍了MySQL的一些基础知识,比如记录、页面、索引、表空间的结构和用法等。第3部分则与大家在工作中经常遇到的查询优化问题紧密相关,介绍了单表查询、连接查询的执行原理,MySQL基于成本和规则的优化具体指什么,并详细分析了Explain语句的执行结果。第4部分则是与MySQL中的事务和锁相关,介绍了事务概念的来源,MySQL是如何实现事务的,包括redo日志、undo日志、MVCC、各种锁的细节等。

尽管《MySQL是怎样运行的:从根儿上理解 MySQL》在写作时参考的MySQL源代码版本是5.7.22,但是大部分内容与具体的版本号并没有多大关系。无论是很早之前就已身居MySQL专家的人员,还是希望进一步提升技能的DBA,甚至是三五年后才会入行的“萌新”,本书都是他们彻底了解MySQL运行原理的优秀图书。

送!!!

温馨提示:

请在开奖前添加我的微信,否则无法领取奖品~

一切解释权归程序员哆啦A梦所有,获奖者必须添加微信:xiaoda0423

6fc74a3b443515310c91d3a649dfb46b.png

b1978fe8ee23fd0a77f4a94c3cd58af9.png

开奖截止时间

「2020-11-10 20:00:00」周二

扫码关注公众号,订阅更多精彩内容。

0cda587e2e911ac97c33641852f6efd1.png

5b31c01ca546590d70403287a126112e.png

你点的每个赞,我都认真当成了喜欢

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/7289.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部