11MYSQL数据库基本操作

数据库的概念和作用

11MYSQL数据库基本操作_第1张图片
图1

特殊格式数据文件的集合就是数据库

11MYSQL数据库基本操作_第2张图片
图2

我们网页看到的数据展示,其实在数据库里存储如上面的显示

数据库特点简介

11MYSQL数据库基本操作_第3张图片
图3

数据库分类及特点

11MYSQL数据库基本操作_第4张图片
图4

数据库某年排行榜,可以看到几种数据库的排名,关系型数据库排前

关系型数据库

通过二维表的方式存储数据

11MYSQL数据库基本操作_第5张图片
图5
11MYSQL数据库基本操作_第6张图片
图6

常见如上的关系型数据库,我们学习MySQL数据库,免费(商业版低收费),而ORACLE全套部署近百万(安全性高),SQLite是移动端,嵌入式设备数据库,可以不联网运行,最后微软的SQL Server是收费的而且只能跑在微软的windows服务器上。MySQL体积小,速度快,成本低,很多中小型企业都在使用。

非关系型数据库

11MYSQL数据库基本操作_第7张图片
图7

使用Key-value方式存储,也成NoSQL,常见mongoDB,redis

数据库管理系统

11MYSQL数据库基本操作_第8张图片
图8

DBMS数据库管理系统分3部分,数据库文件集合,服务端,客户端,每个功能如上,关系图如下

11MYSQL数据库基本操作_第9张图片
图9
11MYSQL数据库基本操作_第10张图片
图10

客户端给服务端发送语句,必须是其听得懂的SQL语句

11MYSQL数据库基本操作_第11张图片
图11

SQL结构化查询语言,几乎适用于所有关系型数据库,但是某系细节有差异

11MYSQL数据库基本操作_第12张图片
图12

SQL语句主要分如上5类,DQL数据查询,DML数据操作,TPL事务处理,DCL数据控制,DDL数据定义,我们学习重点是DQL,DML,DDL

11MYSQL数据库基本操作_第13张图片
图13

上图又简介了几种关系型数据库,简单了解下

11MYSQL数据库基本操作_第14张图片
图14

关系型数据库,由多张数据表构成,数据表由多个数据行构成(数据行也叫一条数据记录)。按列来看,把每个元素成为属性或者字段(每列数据类型一致)

MYSQL环境搭建

linux安装,终端sudo apt-get install mysql-server

启动MySQL,终端sudo server mysql start(如果是重启,关闭start分别换成restart,stop)

查看进程是否有mysql, 终端ps ajx|grep mysql (利用管道过滤,常常查看是否启动成功)

11MYSQL数据库基本操作_第15张图片
图15

配置环境

11MYSQL数据库基本操作_第16张图片
图16

配置文件可以在/etc/mysql/mysql.conf.d下找到文件mysqld.cnf,可以用cat等命令查看

11MYSQL数据库基本操作_第17张图片
图17

默认配置如上,暂时不用修改,默认端口3306,ip默认本机ip127.0.0.1

注意啦!以下出现了中坑,本人经查询解决

坑1

视频提出安装mysql-server,其实mysql-client也需要一起安装,

于是我们需要sudo apt-get install mysql-client给虚拟机安装上客户端。

于是我们兴冲冲的使用mysql -uroot -p然后输入密码,哎?怎么不是视频中的密码,也不是网上有人说的为空。

/etc/mysql/debian.cnf.我们可以使用cat查看这个文件,找到password的内容,然后复制,是个很长很恶心的密码,然后用mysql -uroot -p后粘贴这个密码,登录成功后,在mysql shell下,执行如下命令

> use mysql;

>update mysql.user set authentication_string=password('123456') where user='root'

比如想修改密码为123456,可以使用如上,或者替换字符串'123456'

最后退出,使用sudo service mysql restart就可以使用自定义的简单代码登录了。

坑2

视频告诉我们可以按照可视化客户端navicat,这个浏览器搜索安装就行了,我分别给虚拟机和windows都安装了一个,先说虚拟机问题吧。选择下载64位Linux版本安装,

切换到压缩文件目录cd xxx

使用tar -zxvf xxx.gz把文件解压,然后切换到解压目录,使用./start_navicat运行安装,记得要点2次取消,然后出现试用界面,视频说会出现乱码,然后就真的出现了,点开菜单栏倒数第3个的最后一个项目,这个就是选项,将字体设置为AR PL UKai ZN,同时也要把字体调大点,关闭,再进入就没乱码了。

坑3

我给笔记本和台式都安装了navicat客户端,然后连接虚拟机的mysql,密码明明是对的,却发现无法连接,之前的虚拟机上的navicat却可以连接。

我们进入虚拟机终端客户端mysql -uroot  -p

->GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;                      (123456根据你的密码对应上)

->FLUSH PRIVILEGES; (刷新防火墙)

quit或exit退出

打开/etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address=127.0.0.1改为bind-address=0.0.0.0保存

重启mysql     sudo service mysql restart

然后navicat客户端就可以连上mysql了

数据库完整性(了解)

为了保证数据的正确性,要求数据的约束条件

11MYSQL数据库基本操作_第18张图片
图18
11MYSQL数据库基本操作_第19张图片
图19

记录识别唯一,主键不为空

11MYSQL数据库基本操作_第20张图片
图20

域完整性,同一列,数据类型一致,要求非空或默认值

11MYSQL数据库基本操作_第21张图片
图21

参照完整性,比如2个表格,一个存的是张三相关,另一个存的是小张相关,如果删除了张三,小张也应该被删除

自定义完整性:比如性别只能是‘男’或者‘女’,而不能是其他

11MYSQL数据库基本操作_第22张图片
图22

NAVICAT客户端使用

11MYSQL数据库基本操作_第23张图片
图23

连接数据库

11MYSQL数据库基本操作_第24张图片
图24

我们之前已经做过连接了,这里再次介绍下连接的界面,然后连接创建完毕,但是要想连接成功,我们还必须双击左侧,让其灰色变绿色,表示真正连接成功

默认情况下会在下面显示4个数据库

11MYSQL数据库基本操作_第25张图片
图25

创建数据库

右键点击绿色图标点击新建数据库

11MYSQL数据库基本操作_第26张图片
图26

弹出新建窗口

11MYSQL数据库基本操作_第27张图片
图27

我们有3个空可以填,第一个数据库名自己起,但是不要和已有的库重名,我们起名python,

字符集我们使用utf8,排序规则使用general ci(以后讲),点确定数据库就建立完毕

11MYSQL数据库基本操作_第28张图片
图28

数据库创建完是灰色的,因为我们并没有打开,双击打开,此时数据库就变成了绿色

11MYSQL数据库基本操作_第29张图片
图29

我们在新建的python库表位置右键新建表,出现如下图

11MYSQL数据库基本操作_第30张图片
图30

比如说我们创建一个字段,名id(注意这里字段名不能用中文),类型int,是不是null勾选作为域完整性约束,我们点了键那里,会出现一个钥匙,此时null也会被自动勾选,这时为主键约束,比如该id是自增的,我们还会下面勾选自动递增

11MYSQL数据库基本操作_第31张图片
图31

我们选中一行,再加入字段时,按光标↓就可以添加,我们输入字段名name,会发现自动设置了类型varchar,长度255表示最多该项有255个字符。

11MYSQL数据库基本操作_第32张图片
图32

我们点击保存起名classes,在表下面双击就会发现如下图,即创建了2列的表

11MYSQL数据库基本操作_第33张图片
图33

如果我们想修改表,可以使用右键-设计表,又回归到之前的界面

查看数据,我们双击表就行

增加数据,我们输入内容,就可以添加数据,由于id设置了自动添加,所以我们可以不填,填入name和size,想新出现一行数据就按光标↓,id自动出现

11MYSQL数据库基本操作_第34张图片
图34

修改数据,双击属性单元格,输入就行

保存表格,点下面√或者CTRL+S

11MYSQL数据库基本操作_第35张图片
图35

删除数据,点击减号图标

11MYSQL数据库基本操作_第36张图片
图36

备份数据库

右键点击数据库转储--结构和数据

11MYSQL数据库基本操作_第37张图片
图37

我们存储到桌面,就会看见python.sql文件

11MYSQL数据库基本操作_第38张图片
图38

此时我们可以将文件拷贝给其他工作组同事或者留作备份使用。

如果我们数据库数据丢失了,比如我们先在navicat上删除python数据库,我们可以再新建一个数据库,但是因为是空的,我们可以右键点击数据库选择运行SQL文件

11MYSQL数据库基本操作_第39张图片
图39

选择桌面上的python.sql文件点击开始,然后需要右键关闭数据库,再双击打开,此时会发现之前的数据已经成功添加进来

MYSQL数据类型

11MYSQL数据库基本操作_第40张图片
图40
11MYSQL数据库基本操作_第41张图片
图41

数值

11MYSQL数据库基本操作_第42张图片
图42

整形类型

不同数据类型存储长度不一样(常用TINYINT,INT)

TINYINT 1字节  -128到127      无符号0-255

SMALLINT 2字节-2**15到2**15-1  无符号0到2**16-1

MEDIUMINT 3字节

INT 4字节

BIGINT 8字节

11MYSQL数据库基本操作_第43张图片
图43

浮点型

float和double,分别4到8字节,float到小数点后6位,double到16位

定义方法float或者double加(总位数,小数位数) 如float(5,3) 12.345

11MYSQL数据库基本操作_第44张图片
图44

定点数

decimal(总位数,小数位)需要精确计算小数时,比如价格等


字符串

11MYSQL数据库基本操作_第45张图片
图45

char 255个字符

varchar65535个字节(常用varchar)其他如上图(第二行应该为字符)

text相关的都是按字节统计

char和varchar区别

比如我们使用char(5)和varchar(5)存储‘he’,char会使用5个字符空间,而varchar只占用2个字符空间

11MYSQL数据库基本操作_第46张图片
图46

text类型,存储量大

11MYSQL数据库基本操作_第47张图片
图47

类型选择原则

11MYSQL数据库基本操作_第48张图片
图48

枚举类型 

字段名 enum(枚举值用逗号分隔)

11MYSQL数据库基本操作_第49张图片
图49

时间类型

11MYSQL数据库基本操作_第50张图片
图50

datetime和timestamp区别,范围和存储大小不同

11MYSQL数据库基本操作_第51张图片
图51

MYSQL数据库----登录和退出命令

11MYSQL数据库基本操作_第52张图片
图52

登录(mysql -uroot -p)

图53

退出(exit或quit或ctrl+d)

图54

我们已经登录了,可以查看版本和当前时间(记得大部分命令开始要结尾;)

11MYSQL数据库基本操作_第53张图片
图55

数据库操作

11MYSQL数据库基本操作_第54张图片
图56

create datebase 数据库名;           创建数据库

drop datebase 数据库名 ;          删除数据库

use 数据库名;           切换数据库

select database();    查看当前选择的数据库

(MYSQL命令大小写不敏感)

11MYSQL数据库基本操作_第55张图片
图57

上图为刚登陆,查询数据库,因为没有选择,提示NULL

11MYSQL数据库基本操作_第56张图片
图58

显示所有数据库,show databases;

图59

我们使用use python;切换到python数据库,这时再select database();就可以看到当前选择了python数据库

11MYSQL数据库基本操作_第57张图片
图60

我们尝试创建一个数据库,比如python_db名字,创建成功,会显示Query OK。否则会出现一行提示,比如我们输错命令就会上图后面的提示。

我们也可以用show create database 数据库名  (可以卡看到数据库创建过程,数据库必须已存在)

11MYSQL数据库基本操作_第58张图片
图61

上图我们会发现python_db数据库,过程语句和编码及排序,我们会发现编码不是utf8而是utf8mb4,而且排序也不是我们用的utf8_general_ci

11MYSQL数据库基本操作_第59张图片
图62

我们可以指定编码创建数据库create database python_db1 charset=utf8;

python_db1是我们给新数据库起的名字,可以看出编码已经被设置好,我们一般都设置为utf8否则你打开就是乱码

删除数据库  drop database 数据库名,删除要慎重(找不回来)!!!

表结构创建

图63

为了把数据保存到数据库,我们需要表格,上节学了创建数据库,这节学习创建表

11MYSQL数据库基本操作_第60张图片
图64

比如与我们打开进入到数据库python_db1,然后先检查有哪些表show tables;因为没创建过,所以是空的

11MYSQL数据库基本操作_第61张图片
图65

创建表格create table classes(

 id int unsigned primary key auto increment,

name varchar(10) not null,

num tinyint unsigned not null

);

语句分析:create table 表格名();基本sql创建表格语句,在括号里添加语句字段,字段间用逗号分隔,最后一个结尾不用逗号。字段用字段名 字段类型(之前讲过)约束条件

比如第一个id我们设置为整数,想要是无符号的用unsigned跟在int后面,约束条件,主键约束(唯一非空),递增(auto_increment)

第二个字段name,我们使用varchar,设定最长10个字符,约束非空

第三个字段num,使用tinyint,约束非空

整体注意结构和语法写法!

应用上述语句,就实现了创建表格

11MYSQL数据库基本操作_第62张图片
图66

查看表结构

11MYSQL数据库基本操作_第63张图片
图67

desk 表名;                         可以看到表结构和设置,如上图

11MYSQL数据库基本操作_第64张图片
图68

我们接着再创建一个学生表,结构要求如上

alter database my_db character set 'gbk';(这里需要注意的是,我们输入汉字内容,需要给数据库指定默认编码gbk),否则enum那里会报错,修改完毕后OK,记得每次有中文项目的内容,修改数据库编码

表格创建成功海口可以用show create table 表名 来显示创建过程

11MYSQL数据库基本操作_第65张图片
图69

我们会发现结果是比较乱的,这是因为尝试将所有内容一行写下,但是屏幕不够长。。。

我们可以给命令改成show create table 表名 \G;效果如下

11MYSQL数据库基本操作_第66张图片
图70

表结构修改

图71

增加字段

11MYSQL数据库基本操作_第67张图片
图72

alter table 表名 add 列名 类型;

11MYSQL数据库基本操作_第68张图片
图73

比如我们给students条件birthday列,语句alter table students add birthday datetime;输入完成功可以desc查看到添加了birthday列

11MYSQL数据库基本操作_第69张图片
图74

重命名字段

字段已有,但是命名类型或者约束想修改

11MYSQL数据库基本操作_第70张图片
图75

alter table 表名 change 原名 新名 新类型约束;

比如我开门把birthday改成birth而且要求非空,使用

alter table students change birthday birth datetime not null;

同样修改后可以查看下

修改字段类型和约束

不修改命名,只修改类型和约束(比上一个功能简单点)

11MYSQL数据库基本操作_第71张图片
图76

alter table 表名 modify 列名 类型及约束;

比如我们把birth类型换成date使用

alter table students modify birth date not null;(需要注意的是之前的约束如果修改没有写进去就是默认,不会继承之前的,上面的change也是,所以约束都要重写)


删除字段

11MYSQL数据库基本操作_第72张图片
图77

alter table 表名 drop 列名;

如给students删掉birth使用alter table students drop birth;

desc删除后发现drop自段没有了

删除表

11MYSQL数据库基本操作_第73张图片
图78

drop table 表名;   

所有表的增删改查要严格规划,谨慎修改

表数据的增删查改

11MYSQL数据库基本操作_第74张图片
图79

本节学习表数据的创建,更新,读取,删除

11MYSQL数据库基本操作_第75张图片
图80

查询所有列 select * from 表名;

图81

之前没有添加数据,所以我们没有得到结果

插入数据insert into 表名 values(字段值用逗号分割,字符串要加引号!!!);

11MYSQL数据库基本操作_第76张图片
图82

添加数据后就可以查看到数据了

11MYSQL数据库基本操作_第77张图片
图83

我们可以试试主键效果,如果再插入重复的id,会提示重复错误

图84

我们之前删了students,再创建出来,这回添加一行数据如下图1行插入,然后我们知道有些值可以非空的,我们想给指定列插入内容,可以使用下图最后一行代码,

11MYSQL数据库基本操作_第78张图片
图85

多行插入 insert students values()()()();插入几行用几个括号

11MYSQL数据库基本操作_第79张图片
图86

修改数据

11MYSQL数据库基本操作_第80张图片
图87

我们尝试给表students的age列赋值age=38,使用update students set age=38;

11MYSQL数据库基本操作_第81张图片
图88

设置后会发现age列的所有数据都被改成了38

11MYSQL数据库基本操作_第82张图片
图89

我们想只改一列,比如给第二行age设成88,使用update students set age=88 where name='司马狗剩';结果如下

我们也可以设置多列修改,所以一般模式为

update 表名 set 列名1=参数1, 列名2=参数2 ...where 属性=xxx;(注意set属性逗号分割)

11MYSQL数据库基本操作_第83张图片
图90

查询数据

我们之前学了查询表格select * from 表名;现在我们也可以加条件,比如查询students中name=‘司马狗剩’的数据,效果如上图。

11MYSQL数据库基本操作_第84张图片
图91

我们还可以进一步拓展,想查看某些列数据,如上(同理即可查询where指定条件的某些列数据)

11MYSQL数据库基本操作_第85张图片
图92

我们想显示中文列名,可以使用select 列名 as‘中文列名’ from 表名;效果如上(其实as也可以省略)

删除

11MYSQL数据库基本操作_第86张图片
图93

delete from 表名 where 条件约束;这种删除后数据不可恢复,是物理删除

我们可以使用逻辑删除,用alter table students add is_delete bit default 0;给表格设置默认为0,

当我们想做逻辑删除,使用update students set is_delete 1 where id=3;给指定数据设置删除;

这样我们就可以通过where is_delete=0;来过滤掉数据(但是数据库还有这条数据)


数据库备份和恢复

我们之前用过navicat实现数据库备份转储,导入。现在我们用命令行来实现数据备份和恢复。

首先,数据库备份不用进mysql环境,进入终端界面输入如下命令即可

mysqldump -uroot -p python_db1>python_db1.sql就会在命令行当前目录导出一个python_db1.sql文件(得输入密码,因为-p后面没写),我们可以ls -l查看到,我们备份了数据库,就可以删除数据库再导入,登陆mysql, mysql -uroot -p,  然后drop database python_db1;删除成功后,我们同样需要创建一个数据库以备导入,使用create database python_db charset=utf8;创建。然后我们exit退出mysql到终端,输入mysql -uroot -p python_db 然后输入密码,就可以实现数据库的导入


最后对本章的内容说下总结,命令很多,需要多用多记!!!

你可能感兴趣的:(11MYSQL数据库基本操作)