10.26总结

10.26总结

1.datagrip 安装

1.安装网站

https://www.jetbrains.com.cn/datagrip/download/#section=windows

2.数据库

1.数据库的介绍:

数据库 DataBase -- DB ,长期存在电脑上,安装有组织的方式存储的数据集合,保存数据的容器

数据库管理系统 DataBase Manngement System -- DBMS ,用来管理和操作数据的软件,用来建议、维护、使用数据库,对数据库进行管理,用户可以使用数据库管理系统进行访问数据库中的数据

我们用的是数据库管理系统,而不是数据库

2.数据库的分类:
  1. 关系型数据库

    存储的数据之间存在关系,数据与数据之间可以建立联系

    这种关系是数据表与表之间的关系:

    一对一关系

    一个学生,一个学生编号
    

    一对多关系 A表中的一条数据可能关联着B表中的N条数据 班级和学生 (班级表)

    一对多:一个班级,对应多个学生。
    

    多对多关系 A表中的一条数据可能关联着B表中的N条数据,同时 B表中的一条数据关联A表中的N

    条数据 (学生和课程) 多对多关系的描述需要一张中间表

    多对多: 一个学生,可选多个课程,
            一个课程,对应个学生
    
  2. 常见的关系型数据库:
    Oracle 常用于大型公司 最成功的数据库 常用于大公司 不免费
    MySQL – 被Oracle收购,常用于中小型公司 免费
    SQLServer 是微软推出的产品

  3. 非关系型数据库
    ​ 数据与数据之间不能建立联系,每个数据是独立的
    ​ 常见的非关系型数据库 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 收回权限 

* 具体例子数据库的创建

  1. 注释: # 号后面加内容,和python一样 或者 CTRL + /
# create
  1. 多行注释
*/
多行内容
*/
  1. – 1.创建数据库 create

utf8mb4: 编码:

create database if not exists db_2304 charset utf8mb4;
  1. – 2. 查看有哪些数据库 系统会自带一些数据库
show databases ;
  1. – 3.查看数据库的创建信息
show create database db_2304;
-- CREATE DATABASE `db_2304` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
  1. – 4.修改数据库 alter
alter database db_2304 charset utf8mb4;   # 修改它的编码
  1. 删除数据库 drop
drop database if exists db_2304;

8.-- 6.使用哪个数据库

use db_2304;

8.数据类型

有符号位(Signed):

  • 有符号整数可以表示正数和负数。

无符号位(Unsigned):

  • 无符号整数只能表示正数。

帮助文档 – `cmd --输入 mysql -u root -p

?tinyint

  1. 整数类型:
数据类型解析
tinyint微整型
数值范围 无符号位 0-255 有符号位 -128 到127
1个字节 – 8位 一个汉字3字节
samllint小整型
2个字节
mediumint中等整型
3个字节
int整型数据
4个字节
bigint大整型
8个字节
  1. 小数类型: 精度越大,准确率越高
符号解析
float单精度浮点型
4个字节 有效小数位数是8位
double双精度浮点型
8个字节 有效小数的位数是16位
decimal任意精度 精确度比 float double 更高
  1. 文本类型 相当于字符串
浮点数的单精度和双精度主要涉及到浮点数的存储和精度。

单精度浮点数(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
  1. 时间类型

赋值的时候 使用一对引号包含

符号解析
date年月日 传递数据 yyyy-mm-dd
time时分秒 传递数据 HH:MM:SS
datetime年月日 时分秒 传递数据 yyyy-mm-dd HH:MM:SS
timestamp时间戳类型 1970-1-1 到当前所经历的秒数 存储的时候建议使用长整型 bigint

9. 约束 可选,可以不设 可以一个,可以多个

  1. 默认约束

定位字段的时候,给一个默认值,添加数据的时候,如果不给这个字段传值,使用的就是默认值,如果给字段传值,使用的就是新值

字段名称 数据类型 default 默认值,
  1. 非空约束

表示对于这个字段必须传值,不允许为空 null

字段名称 数据类型 not null
  1. 唯一约束

表示这个字符传值不允许有重复的 【订单数据 订单编号 】

字段名称 数据类型 unique,

特点:唯一约束将该字段设置为索引

  1. 检查约束

检查该字段传进来的值是否满足要求

字段名称 数据类型,check(性别=or 性别=)
  1. 主键约束 唯一且非空

标识 字段是数据表中的唯一标识 not nullunique 结合体

一张表中只有一个主键,主键可能是由一个字段完成,也可能是多个字段组合起来的(联合主键)

1.方式一  一般都用第一种
字段名称 数据类型 primary key

2.方式二
create table if not exists 
表名 (    
字段名称 数据类型 约束,     
字段名称 数据类型 约束,
primary key(字段名)
)

主键约束将该字段设置为索引

  1. 外键约束

多的约束少的

建立表和表之间的关系 ,用来绑定关系的就是外键约束

班级表和学生表
1个班级有多个学生
1个学生只在1个班级
存在的关系 1对多的关系   学生表是多的一方

多的一方  学生表中添加的一个字段 -- 班级编号 -- 来源于班级表
主表
	数据的来源方  班级表  
从表
	学生表  学生表中班级编号的字段 依赖于 班级表 

外键的设置 设置在从表中 

放在语句的最后  
constraint 约束名 foreign key(字段名) references 主表表名(字段名)  
创建一个约束        外键约束  对表里哪个字段创建约束  它依赖于/参照哪张表 参照于主表中哪个字段
  1. 注解约束

解释字段的含义

字段名称 数据类型 comment 解释内容,
  1. 自增长约束

结合整数类型的主键使用,达到主键的自增长

不用赋值就能自增

字段名称  数据类型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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值