数据库 | 初识MySQL 1



目录


说明

  • 数据库一般使用MySQLMariaDB

  • 数据库管理工具使用的是Navicat

参阅:

  • Win10系统配置MySQL数据库与管理工具Navicat Premium

一、基本概念

1.1 什么是数据库

1.1.1 数据存储

人工管理阶段
  • 结绳记事
  • 甲骨

不利于查询、共享和保存等

文件系统阶段
  • 磁盘

数据存储在磁盘上,数据都是以文件形式出现,通过文件系统管理,相对于人工管理阶段方便的多,但是在查询数据内容时,还是不很方便

数据库系统阶段

➢ 数据库是指长期存储在计算机内、有组织的数据集合
➢ 数据库就是一个存储数据的地方
➢ 表是数据库中存储数据的基本单位

eg:

数据库中存储的商品数据<=对应=>真实的商品(即无法随意修改数据库内容)

1.1.2 RDBMS

关系型数据库管理系统

提示:

  • 数据库管理系统排名查询
    https://db-engines.com/en/ranking
数据库类型
  • 关系型数据库(主流)

  • 非关系型数据库(使用少)

关系型数据库
核心元素 描述
数据行 一条记录(同一类型)
数据列 字段
数据表 数据行的集合
数据库 数据表的集合,一个数据库能够有n个数据表

1.2 SQL

结构化查询语言

  • 当前关系型数据库都支持SQL
  • 不区分大小写

1.3 MySQL

  • MySQL是一个关系型数据库管理系统
  • 瑞典MySQL AB公司==>Sun公司==>Oracle公司
  • 开源、免费、使用范围广、支持多平台(操作系统)
  • 学习数据库开发的首选

二、MySQL的安装与使用

1.1 Linux

  • 安装MySQL服务端测试推荐

参阅:

  • 教你如何在Ubuntu服务器上安装、配置和使用mysql
  • MySQL服务管理
    启动服务
    service mysqld start
    停止服务
    service mysqld stop
    重启服务
    service mysqld restart
    查看服务
    service mysqld statusps aux|grep mysqld

1.2 Windows

  • 安装MySQL服务端学习推荐

参阅:

  • Windows 10系统MySQL 8.0.13下载安装教程
  • 安装MySQL客户端Navicat

参阅:

  • Navicat Premium 12.1.20.0安装与激活

1.3 客户端与服务端搭配场景

客户端类型 说明
图形界面客户端 一般使用Navicat
命令行客户端 mysql -u root -p 进入MySQL

Ctrl+Dquitexit 退出MySQL
场景类型 服务端位置 客户端位置
场景一 CentOS CentOS
场景二学习 Windows Windows
场景三测试 CentOS Windows
场景四 Windows CentOS

说明:

  • 服务端指的就是安装的MySQL
  • 客户端指的就是Navicat(有Windows和Linux两种平台的版本)
  • CentOS安装在VM虚拟机中

一般客户端都选择Windows版Navicat,去连接Windows或Linux的MySQL

服务器平台 Navicat(Windows版)连接说明
Windows 主机: localhost

用户名:root

密码: [自己设置的]
Linux 主机: [Linux ip地址]

用户名:root

密码: 默认为空

注意:Linux中数据库默认不允许远程连接,解决方法如下

mysql -u root

use mysql;

update user set host='%' where user='root';

flush privileges;

三、MySQL客户端Navicat的使用

学习数据库场景:服务端MySQL在Windows中,客户端Navicat也在Windows中

1.1 数据库操作

1.1.1 创建数据库

参阅:

  • utf-8mb4和排序规则

1.2 数据表操作

1.2.1 创建表

1.2.2 设计表

用于增加、删除、修改字段

  • 类型
  • 长度
  • 主键

1.2.3 打开表

用于增加、删除、修改记录

1.2.4 查询表

1.3 数据类型与约束

1.3.1 数据类型

数据类型 名称 范围 示例
整数 int 有符号:(默认)

-2147483648 ~ 2147483647

无符号:

0 ~ 4294967295

-2^31~2^31-1

2147483647 梅森素数
小数 decimal decimal(5,3)

字符串 varchar 0~65533 varchar(3)

表示最多存3个字符,一个中文或一个字母都占一个字符
日期时间 datetime 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 2020-01-01 12:29:59
  • 在表的字段中类型int对应长度没有意义,可任意
  • decimal如果插入数据的小数部分超出长度会进行四舍五入

decimal(5,3)

3.1234==>3.123

3.1235==>3.124

  • 日期时间为什么不用字符串来存储?
    因为时间有前后之分,字符串无法比较大小

扩展:

  • 一个字节=8位,一位存0或1
  • int一般占用四个字节,有32位
  • 在无符号的整数中,最大值:2^32-1=4294967295
  • 在有符号的整数中,32位中符号占一位,故最大值就是2^31-1=2147483647(从0开始),最小值就是-2^31+1=2147483648(-1开始)

提示:

  • 巧用MySQL命令行客户端

可查看任意数据类型的范围

1.3.2 约束

约束条件 名称 说明
主键 primary key 物理上存储的顺序

能够代表一条记录的字段

➢ 唯一性

➢ 非空

默认



选择自动递增后,默认值为1
然后一直累加不会取以前的值,即使字段被删或表被清空
外键 foreign key 维护两个表之间的关联关系
非空 not null 此字段不允许填写空值

惟一 unique 此字段的值不允许重复

注意:Navicat没有对应功能,可以通过SQL语句实现
默认值 default 不填写此值时会使用默认值,如果填写,则以填写为准

扩展:

  • 清空表:删除所有数据,不删除表结构,自动递增的值继续累加
  • 截断表:删除所有数据,不删除表结构,自动递增的值从默认值1重新累加

1.4 数据库的备份与恢复

1.4.1 备份数据库

以.sql文件格式保存

1.4.2 恢复数据库

  • 先新建一个数据库

  • 再导入.sql文件

1.5 SQL语言

1.5.1 数据表

  • 注释快捷键:Ctrl+/

  • SQL语句基本流程

1. 创建表
create table 表名(
        字段名 类型 约束,
        字段名 类型 约束,
        ...
)

eg:

  • 创建一个简单的学生表
    姓名(长度为11)
  • 创建一个简单的学生表
    姓名(长度为11), 年龄

提示:

  • tinyint一般占一个字节,无符号时,范围是0~255(2^8-1)
  • 创建一个简单的学生表
    姓名(长度为11), 年龄,身高(保留小数点2位)
2. 删除表

drop table [表名]

drop table if exists [表名]

综合1、2推荐
  • 推荐通过删除表再创建表的方式,这样增加字段很方便

1.5.2 数据操作

数据操作 关键词
insert into
delete from
update
select
1. 增
  • 关键字:insert into

特别提示:

  • 主键id勾选了自动递增,插入数据时,id设置为0nulldefault即可
格式一:所有字段设置值,值的顺序与表中字段的顺序对应
  • 格式:insert into [表名] values(值1,...)

插入一个学生,设置所有字段的信息
insert into students values('小明',15)

格式二:部分字段设置值,值的顺序与给出的字段顺序对应
  • 格式:insert into [表名](字段1,...) values(值1,...)

插入一个学生,只设置姓名
insert into students(name) values('小红')

插入多行数据

方式一:写多条insert语句,语句之间用英文分号隔开

方式二:写一条insert语句,设置多条数据,数据之间用英文逗号隔开

  • 格式一:insert into 表名 values(...),(...)...

eg:

插入多个学生,设置所有字段的信息

insert into students values('小康',18),('小叶',17)

  • 格式二:insert into 表名(列1,...) values(值1,...),(值1,...)...

eg:

插入多个学生,只设置姓名

insert into students(name) values('小花'),('小付')

2. 删
  • 关键字:delete from
  • 格式:delete from [表名] where [条件]

delete from students where name='小叶'

对于重要的数据,不能轻易执行delete语句进行删除,一旦删除,数据无法恢复,这时可以进行逻辑删除

特别提醒:

  • delete删除后无法恢复
  • 逻辑删除推荐
  1. 增加is_delets字段
    alter table students add is_delete tinyint

0代表未删除,1代表删除,默认值为0


  1. 设置is_delete默认值0
    update students set is_delete=0

  2. 删除其中一个学生
    update students set is_delete=1 where name='小红'

  3. 查询未被删除的学生
    select * from students where is_delete=0

3. 改
  • 关键字:update
  • 格式:update [表名] set [列1]=[值1],[列2]=[值2]... where [条件]

update students set age=19 where name='小康'

4. 查
  • 关键字:select

简单查询

select * from students

select * from students where is_delete=0


更新中......


你可能感兴趣的:(数据库 | 初识MySQL 1)