10.26总结
1.datagrip 安装
1.安装网站
https://www.jetbrains.com.cn/datagrip/download/#section=windows
2.数据库
1.数据库的介绍:
数据库 DataBase -- DB
,长期存在电脑上,安装有组织的方式存储的数据集合,保存数据的容器
数据库管理系统 DataBase Manngement System -- DBMS
,用来管理和操作数据的软件,用来建议、维护、使用数据库,对数据库进行管理,用户可以使用数据库管理系统进行访问数据库中的数据
我们用的是数据库管理系统,而不是数据库
2.数据库的分类:
-
关系型数据库
存储的数据之间存在关系,数据与数据之间可以建立联系
这种关系是数据表与表之间的关系:
一对一关系
一个学生,一个学生编号
一对多关系 A表中的一条数据可能关联着B表中的N条数据 班级和学生 (班级表)
一对多:一个班级,对应多个学生。
多对多关系 A表中的一条数据可能关联着B表中的N条数据,同时 B表中的一条数据关联A表中的N
条数据 (学生和课程) 多对多关系的描述需要一张中间表
多对多: 一个学生,可选多个课程, 一个课程,对应个学生
-
常见的关系型数据库:
Oracle
常用于大型公司 最成功的数据库 常用于大公司 不免费
MySQL
– 被Oracle
收购,常用于中小型公司 免费
SQLServer
是微软推出的产品 -
非关系型数据库
数据与数据之间不能建立联系,每个数据是独立的
常见的非关系型数据库MongoDB Redis
类似于字典的形式存储,读写效率快,做缓存处理
3.数据库的安装:
卸载
安装 MySQL
是数据库管理系统,是一个多用户系统,安装之后,自带一个超级管理员用户,用户 root
,密码安装的时候设置的密码 123456
安装的内容 MySQL server
数据库的服务 自己的电脑相当于是服务器
MySQL workbench
MySQL
官方自带的可视化软件 和datagrip一样功能
安装后自带一个root连接 如果密码忘了 需要进去mysql workbench
输入 alter user 'root'@'loacalhost' identified by '123456';
的指令 – 闪电 – 重置密码
测试安装成功
cmd -- 配置了环境变量
mysql服务安装之后 默认在的路径 C:\Program Files\MySQL\MySQL Server 8.0\bin
配置到环境变量 此电脑-右键-属性-高级系统设置-环境变量-用户变量-新建-粘贴-确定-确定-确定
指令
mysql -u 用户名 -h 数据库服务所在的ip地址 -P 数据库服务所在端口的 -p -- 回车
输入密码 -- mysql>
-u 指定用户名的 root超级管理员用户
-h 数据库服务所在的ip地址 数据库服务安装在本机 localhost / 127.0.0.1 --本机
没写表示本机查找
-P 指定端口的 默认是3306
-p 传递密码的
mysql -u root -h localhost(127.0.0.1) -P 3306 -p
cmd ----- 终端
3. SQL – 结构化查询语言
通过SQL
语言与数据库进行交互,进行增加、删除、修改、获取等操作 【增删改查】
数据库 – excel工作簿
数据表 – 一个数据库可以有多张数据表 sheet表格
字段名 – sheet表中的标题 比如列
记录 – excel中一条条数据
根据不同的功能,分为四大类
4. DDL - 数据定义语言 (
Data Define Language`)
关于数据库、数据表结构 的操作 【创建数据库,删除数据库,修改数据库,创建表结构、删除表结构、修改表结构】
核心操作
create 创建
alter 修改
drop 删除
关于数据库的操作
1. 创建数据库
create database if not exists 数据库名 charset utf8mb4;
2. 展示所有的数据库
show databases;
3. 修改数据库的编码方式
alter database 数据库名 charset utf8mb4;
4. 删除数据库
drop database if exists 数据库名;
5.展示数据库的创建信息
show create database 数据名;
6. 切换使用数据库
use 数据库名;
关于数据表的操作
1. 创建数据表
create table if not exists 表名(
字段名 数据类型 约束,
字段名 数据类型 约束
);
2. 删除数据表
drop table if exists 表名;
3. 查看数据表结构
desc 表名;
4. 修改数据表 -- 表结构 增加字段 删除字段 增加约束 删除约束
alter
增加字段 默认增加在最后
alter table 表名 add 字段名称 数据类型 约束;
增加字段 增加在某个字段后
alter table 表名 add 字段名称 数据类型 约束 after 字段名;
增加字段 在第一列
alter table 表名 add 字段名称 数据类型 约束 first;
删除字段
alter table 表名 drop 字段名称;
修改字段
alter table 表名 change 原字段名 新字段名 数据类型 约束;
删除主键约束
alter table 表名 drop primary key;
增加主键约束
alter table 表名 add primary key(字段名称);
删除外键约束
alter table 表名 drop froeign key 外键名字;
增加外键约束
alter table 表名 add constraint 外键名字 foreign key(字段) references 表名(字段);
增加唯一约束
alter table 表名 add unique(字段名);
删除唯一约束
alter table 表名 drop index 字段名;
数据表的修改:
PRI 主键
MUL 外键
-- 创建一张demo 表
create table if not exists demo(
dno int primary key
);
-- 增加字段 也就是加一个列 alter 默认在后面追加
alter table demo add dname varchar(20) not null ;
-- 查看表结构
desc demo;
-- 在某个字段后添加
alter table demo add dage int after dno;
# 在demo这张表中的dno字段后增加dage字段
-- 在第一个位置添加
alter table demo add gender varchar(5) first ;
-- 删除某个字段
alter table demo drop gender;
-- 修改某个字段 字段名 数据类型 约束
alter table demo change dage age int;
# 在demo 表中,将dage修改为age
-- 删除主键
alter table demo drop primary key ;
-- 新增主键
alter table demo add primary key (dno);
# 给dno添加主键
-- 创建表 增加外键关系
create table if not exists subdemo(
sub_no int primary key ,
dno int,
constraint demo_subdemo foreign key (dno) references demo(dno)
);
-- 查看表结构
desc subdemo;
-- 删除外键
alter table subdemo drop foreign key demo_subdemo;
-- 增加外键
alter table subdemo add constraint demo_subdemo foreign key (dno) references demo(dno);
-- 添加唯一约束 unique
alter table demo add unique (dname);
-- 查看表结构
desc demo;
-- 删除唯一约束 index 索引 唯一约束比较特殊
alter table demo drop index dname;
5. DML` - 数据操作语言
(Data Mainpulation Language
)
向数据表中添加数据 、删除数据、修改数据
核心操作
insert 添加数据
update 修改数据
delete 删除数据
添加数据的指令
# 传单条数据:
insert into 表名 value();
例: insert into tb_class value (1,'python');
# 传多条数据:
insert into 表名 values();
例:insert into tb_class values (2,'java'),(3,'h5'),(4,'ui');
# 对表里面的哪几个字段添加:
insert into 表名(字段1,字段2) value (字段1对应的值,字段2对应的值);
# 对这四个字段添加
例:insert into tb_student(stu_no,stu_name, stu_date, gender, class_no) value (1,'小红','1990-10-12','女',1);
# 对这四个字段添加
6.DQL` - 数据查询语言
(Data Query Language
)
从数据库中查询想要的数据
核心操作
select
7.DCL` - 数据控制语言
(Data Control Language
)
给用户分配权限,收回权限
核心操作
grant 分配权限
revoke 收回权限
* 具体例子数据库的创建
- 注释: # 号后面加内容,和python一样 或者 CTRL + /
# create
- 多行注释
*/
多行内容
*/
- – 1.创建数据库 create
utf8mb4: 编码:
create database if not exists db_2304 charset utf8mb4;
- – 2. 查看有哪些数据库 系统会自带一些数据库
show databases ;
- – 3.查看数据库的创建信息
show create database db_2304;
-- CREATE DATABASE `db_2304` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
- – 4.修改数据库 alter
alter database db_2304 charset utf8mb4; # 修改它的编码
- 删除数据库 drop
drop database if exists db_2304;
8.-- 6.使用哪个数据库
use db_2304;
8.数据类型
有符号位(Signed):
- 有符号整数可以表示正数和负数。
无符号位(Unsigned):
- 无符号整数只能表示正数。
帮助文档 – `cmd --输入 mysql -u root -p
?tinyint
- 整数类型:
数据类型 | 解析 |
---|---|
tinyint | 微整型 数值范围 无符号位 0-255 有符号位 -128 到127 1个字节 – 8位 一个汉字3字节 |
samllint | 小整型 2个字节 |
mediumint | 中等整型 3个字节 |
int | 整型数据 4个字节 |
bigint | 大整型 8个字节 |
- 小数类型: 精度越大,准确率越高
符号 | 解析 |
---|---|
float | 单精度浮点型 4个字节 有效小数位数是8位 |
double | 双精度浮点型 8个字节 有效小数的位数是16位 |
decimal | 任意精度 精确度比 float double 更高 |
- 文本类型 相当于字符串
浮点数的单精度和双精度主要涉及到浮点数的存储和精度。
单精度浮点数(Single Precision):
使用较少的存储空间(通常是32位)。
精度较低,所能表示的有效数字位数较少。
计算速度快,因为需要的存储和计算资源较少。
双精度浮点数(Double Precision):
使用更多的存储空间(通常是64位)。
精度较高,能表示更多的有效数字位数。
计算速度可能较慢,因为需要更多的存储和计算资源。
变长字符串:随着字符串长度变长而变长
符号 | 解释 |
---|---|
char(M) | 定长字符串 数值的范围 0-255 开多少用多少 2 的8次方 |
varchar(M) | 变长字符串 数值的范围 0- 65535 (2^16-1) |
tinytext | 文本形式的短字符串 存储字符的个数和char一样 |
text | 文本形式的长字符串 存储字符的个数和varchar 一样 |
mediumtext | 文本形式的中等字符串 存储字符的个数 (2^24-1) |
longtext | 文本形式的极长字符串 存储字符的个数 (2^32-1 |
- 时间类型
赋值的时候 使用一对引号包含
符号 | 解析 |
---|---|
date | 年月日 传递数据 yyyy-mm-dd |
time | 时分秒 传递数据 HH:MM:SS |
datetime | 年月日 时分秒 传递数据 yyyy-mm-dd HH:MM:SS |
timestamp | 时间戳类型 1970-1-1 到当前所经历的秒数 存储的时候建议使用长整型 bigint |
9. 约束 可选,可以不设 可以一个,可以多个
- 默认约束
定位字段的时候,给一个默认值,添加数据的时候,如果不给这个字段传值,使用的就是默认值,如果给字段传值,使用的就是新值
字段名称 数据类型 default 默认值,
- 非空约束
表示对于这个字段必须传值,不允许为空 null
字段名称 数据类型 not null
- 唯一约束
表示这个字符传值不允许有重复的 【订单数据 订单编号 】
字段名称 数据类型 unique,
特点:唯一约束将该字段设置为索引
- 检查约束
检查该字段传进来的值是否满足要求
字段名称 数据类型,check(性别=男 or 性别=女)
- 主键约束 唯一且非空
标识 字段是数据表中的唯一标识 not null
和 unique
结合体
一张表中只有一个主键,主键可能是由一个字段完成,也可能是多个字段组合起来的(联合主键)
1.方式一 一般都用第一种
字段名称 数据类型 primary key
2.方式二
create table if not exists
表名 (
字段名称 数据类型 约束,
字段名称 数据类型 约束,
primary key(字段名)
)
主键约束将该字段设置为索引
- 外键约束
多的约束少的
建立表和表之间的关系 ,用来绑定关系的就是外键约束
班级表和学生表
1个班级有多个学生
1个学生只在1个班级
存在的关系 1对多的关系 学生表是多的一方
多的一方 学生表中添加的一个字段 -- 班级编号 -- 来源于班级表
主表
数据的来源方 班级表
从表
学生表 学生表中班级编号的字段 依赖于 班级表
外键的设置 设置在从表中
放在语句的最后
constraint 约束名 foreign key(字段名) references 主表表名(字段名)
创建一个约束 外键约束 对表里哪个字段创建约束 它依赖于/参照哪张表 参照于主表中哪个字段
- 注解约束
解释字段的含义
字段名称 数据类型 comment 解释内容,
- 自增长约束
结合整数类型的主键使用,达到主键的自增长
不用赋值就能自增
字段名称 数据类型int primary key auto_increment [如果不给这个字段赋值,从1开始,逐渐+1]
例子:
ctrl + 回车 可执行代码
创建数据表:
字段名称是自定义的 随便起
field 字段 type :类型 null :空 key : 主键 default:默认值
varchar(30) 会自动变,最长30
foreign key 外键 constraint 限制 references 参照
-- 创建数据表
-- 班级表
/*
create table if not exists 表名 (
字段名称 数据类型 约束,
字段名称 数据类型 约束
)
*/
use db_2304;
-- 班级表 两个字段 班级编号 班级名称
create table if not exists tb_class
(class_no int primary key comment '班级编号',
class_name varchar(20) not null comment '班级名称'
);
# not null 不写让数据进不去 comment 注解约束
-- 查看表结构
desc tb_class;
-- 删除表
drop table if exists tb_class;
-- 学生表 学生编号 唯一标识 姓名 出生日期 性别 检查 约束 学生所在班级
create table if not exists tb_student(
stu_no int primary key auto_increment comment '学生编号',
stu_name varchar(30) not null comment '学生姓名',
stu_date date,
gender varchar(5),
check ( gender='男' or gender='女' ),
class_no int,
-- 外键约束
constraint stu_class foreign key (class_no) references tb_class(class_no)
);
注解:
1.constraint stu_class:这是创建约束的关键字,它表示你正在给这个约束命名,并将其命名为 stu_class。
2. foreign key (class_no):这部分表示你正在创建一个外键
3.references tb_class(class_no):这是指定外键关联的参考表和参考列。
4.创建一个名为 stu_class 的外键约束,将当前表的 class_no 列与另一张表 tb_class 中的 class_no 列进行关联。
注解:
1. auto_increment 自增长约束---不给学生编号赋值就会自增长,从1 开始
数据操作语言
use db_2304;
-- 查看所有的表;
show tables ;
-- 向表中添加数据 tb_class
desc tb_class;
insert into tb_class value (1,'python');
-- 查看表中的数据
select * from tb_class;
-- 删除表
-- 先找没有任何依赖的表
-- 先删除 score 表
drop table tb_score;
-- 再删couser表
drop table tb_course;
-- 删除学生表
drop table tb_student;
-- 删除班级表
drop table tb_class;
-- 修改数据
-- workbench
-- 降低安全权限 1高权限 0 低权限
set sql_safe_updates = 0; -- 在 workbench 中的修改操作
update tb_student set gender = '女';
select * from tb_student;
-- 通常是带有筛选的修改 where 筛选条件
update tb_student set gender = '男' where stu_no in (3,4,7,9,10);
-- 删除数据 成绩表 学生 课程 成绩 来源于学生表
delete from tb_score; # 删除的时候有时候报错,因为表与表之间有关联
delete from tb_student;
select * from tb_score;
select * from tb_student;
select * from tb_class;
-- 删除带有筛选条件的
# 当班级编号小于等于3时候删除
delete from tb_class where class_no<=3;
delete from tb_class where class_no=4;
delete from tb_course;