目录
说明
-
数据库一般使用MySQL、MariaDB
-
数据库管理工具使用的是Navicat
参阅:
一、基本概念
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服务端
测试推荐
参阅:
- MySQL服务管理
启动服务
service mysqld start
停止服务
service mysqld stop
重启服务
service mysqld restart
查看服务
service mysqld status
或ps aux|grep mysqld
1.2 Windows
- 安装MySQL服务端
学习推荐
参阅:
- 安装MySQL客户端Navicat
参阅:
1.3 客户端与服务端搭配场景
客户端类型 | 说明 |
---|---|
图形界面客户端 | 一般使用Navicat |
命令行客户端 |
mysql -u root -p 进入MySQLCtrl+D 或quit 或exit 退出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 创建数据库
参阅:
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设置为
0
或null
或default
即可
格式一:所有字段设置值,值的顺序与表中字段的顺序对应
- 格式:
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删除后无法恢复
- 逻辑删除
推荐
- 增加is_delets字段
alter table students add is_delete tinyint
0代表未删除,1代表删除,默认值为0
设置is_delete默认值0
update students set is_delete=0
删除其中一个学生
update students set is_delete=1 where name='小红'
查询未被删除的学生
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
更新中......
网友评论