数据库基础-进阶

数据库管理:
*sql语句 数据库用来增删改查的语句 ***
备份 数据库的数据进行备份 *
主从复制,读写分离,高可用 原理

数据库的概念和相关的语法和规范:
数据库:组织,存储,管理数据的仓库。
数据库的管理系统(DBMS):实现对数据有效组织,管理和存取的系统软件
mysql oracle(大数据系统使用) slq-server MariaDB postgreSQL (大象数据库)

关系型数据库和非关系型数据库

关系型数据库:mysql oracle postgreSQL
关系型数据存储的结构:是一张二维的表格,表格里面有行和列
列:是对象,是字段
行:对象的信息,字段的属性。
行+列:组成一张表。

非关系型数据库:
缓存型数据库:Redis
索引型数据库:ES
文档型数据库:MongoDB
键值对形式存储的结构
key value

关系型数据库和非关系型数据库的优缺点:

**关系型的优点:**表的结构清晰,逻辑容易整理,记录的数据比较完整。
**缺点:**读写速度慢,并发量差,数据迁移比较麻烦。
每个表都是有关联的

非关系数据库:
**优点:**高并发读写,对海量数据依旧可以保持1高效率的存储和访问。架构可扩展。
**缺点:**键值对形式存储,数据逻辑比较复杂,数据是保存在缓存当中(Redis),如果意外重启所有数据都会丢失。

mysql的数据类型
char :固定长度的字符串类型 用于存储固定长度的字符串
varchar:可变长度的字符类型,存储的是可变长度的字符串。
char:定义好了长度之后,不论写的值是多少,都会固定长度的字节大小,保存在磁盘上的都是8字节。
varchar:在保存字符串时,多少就保存多少,在保存的字符串结尾默认有一个隐藏的结束符,会多占一个字节。
varchar比char要节约磁盘空间
**读写速度:**char的读写速度性能要高于varchar,char是连续的磁盘空间,保存的内容是连续的。
varchar在增删改查之后,会产生一个磁盘空间的碎片文件,影响读写性能.

int 存储的数据类型为整数
float: 单精度浮点数,小数点 float(m,d): m表示总位数,d表示小数位数。
double: 双精度浮点数 double(m,d),m表示总位数,d表示小数位数
date:用于存储日期,YYYY-MM-DD
datetime:用来存储日志和时间,格式YYYY-MMM-DD HH:MM:SS
timestamp:和datetime类似,但是他可以自动记录当前时间。
smallint:存储小整数
bigint:存储大整数
decimal(5,2):存储浮点,存储精度的浮点数,5表示总位数,2,表示小数位

数据库的管理:
增删改查
SQL中的名词
数据库:database
表:table
行:row
列:column
索引:index
视图:view
用户:user
权限:privilege
存储过程:procedure
存储函数:function
调度器:exent

sql语言规范:
在数据库系统中,sql语句不区分大小写,建议使用大写,;为结束语
sql语句可以分单行和多行但是一定要以分号为结尾

**命令规范:**库名,表名,列名,必须字母开头,后面可以跟上数字,后面也可以跟上特殊符号。
不要使用mysql的保留字,例如:table select show databases 等等不能使用。
数据库名,表名,用户名严格区分大小写。
sql语言分类
1、DDL 数据库定义语言: 创建数据库的对象语言,库,表和索引等等。
create drop
2、DML:数据库操作语言,对表里面数据进行管理
select update insert delete
3、DQL:数据库查询语言,数据库的查询语句
select
4、DCL:数据控制语言,控制和管理数据用户的角色和权限
grant revoke
5、tcl 事务控制语句,用来管理的数据库的事务 脚本开发,存储过程等等
commit rollback savepoint.

DDL:

create  database xy102;  创建库
create table test01(
id int(4) not null,
#定义表的列的属性,数据类型不能为空
id int(4) not null,
name char(10) not null,
score decimal(5,2)
);Key | Default | Extra
key:表示是否是主键或者外键
default:如果没有数据的默认展示结果
extra:提供列的附加信息,自增长等等。  

DML和DQL 管理语句和查询语句

insert 插入语句
insert into  表名(字段1,字段2,字段3)  values(字段1,字段2,字段3);
insert into  表名 values (2,'wdd',6);
insert 插入数据时,插入时间类型   date   datetime    timestamp
CREATE TABLE stu01 (
id INT (5) PRIMARY KEY,
NAME CHAR (10) NOT NULL UNIQUE KEY,
date_time date NOT NULL,
date_times datetime
);
INSERT INTO  stu01 VALUES (1,2,'2024-08-26','2024-08-26 14:00:00');CREATE TABLE stu066 (id INT (5) PRIMARY KEY,name CHAR (10),date_time date NOT NULL,date_times TIMESTAMP NOT NULL
);
INSERT INTO  stu066 VALUES (1,2,'2024-08-26',NOW());    #插入当时系统时间
SELECT * FROM stu066;desc student;  查看表的结构。
null值与空值之间的区别:
null就是什么都没有就是为空。
空值也是值,只是值是空的修改和更新数据
update 
update 表名  set 需要修改的列名=修改之后的值   where  唯一标识;
举例:UPDATE student SET  NAME='杨凯文'  WHERE id=5;删除
delete  删除表的数据
DELETE FROM 表名 where  需要删的列  where 条件;DQL语句 查询语句
select score,NAME  from student;   查看student的score列和name列
查看指定行
select * from student limit 0,3;   查看student表中的第一行到第三行 去重查询
SELECT DISTINCT id FROM student;
SELECT DISTINCT NAME FROM student; where语句  根据条件进行筛选       and 且       OR  或
SELECT * FROM student WHERE id=5 AND score =100;
SELECT * FROM student WHERE id=5 OR score =100;模糊查询  LIKE
select * FROM student;
SELECT * FROM  student where name like 'F%'
#以F为开头
SELECT * FROM student where name LIKE '%B'
#以B为结尾
SELECT * FROM student where name LIKE '%B%'
#name中有B的都进行匹配(包含内容)ALTER 可以修改表名和修改表的结构
修改表名
ALTER TABLE  student  RENAME  stu01;   #将student表名修改为stu01修改表结构
给表添加一列为address 默认为地址不详
ALTER  TABLE  student  add  address VARCHAR(50) DEFAULT '地址不详';修改字段的数据类型;
ALTER table  student  MODIFY COLUMN address CHAR(10);删除列
ALTER TABLE student DROP address;修改列名
alter table student  CHANGE address addresss VARCHAR(50);

约束条件和用户管理


约束条件:
主键
主键约束   primary key
用于标识表中的主键列的值,而且这个值是全表当中唯一的,而且这个值不能为null
一个表只能有一个主键创建主键的两种方式
create TABLE stu03 (
id  INT(5) PRIMARY KEY,
name CHAR(10),
score DECIMAL(5,2), 
address VARCHAR(128)
);

**外键(UNIQUE KEY):**用来建立表与表之间的关系,确保外键中的值于另一个表的主键值匹配。保证数据引用的完整性。

主键配置PRIMARY KEY
CREATE TABLE if NOT EXISTS student (
crad_id INT(5)  PRIMARY KEY auto_increment,
stu_name  CHAR (10) not NULL,
stu_email VARCHAR (128) NOT NULL UNIQUE KEY
);外键与主键关联REFERENCES
CREATE TABLE class (
stu_id INT(11) ZEROFILL PRIMARY KEY auto_increment,
address VARCHAR(128) DEFAULT '地址不详',
crad_id INT(5) not NULL,
FOREIGN KEY (crad_id) REFERENCES student (crad_id)
);主键与外键关联所有的字符的类型都要保持一致,主键所在表的数据类型与外键关联的数据类型都需要一致。
INSERT INTO  student VALUES (411421,'FBB','2727088244');INSERT INTO class VALUES (01,'南京市',411421);
先增加主键的内容,再增加外键的内容,外键增加内容的时候与主键关联的值要一直。(相对于一个比对的功能,比对是否正确添加)修改主键,需要先关闭自增
ALTER TABLE class MODIFY stu_id int(11);
修改从表的主键关联
ALTER TABLE class DROP PRIMARY KEY;主键和外键
外键就是和主表进行关联的列,不需要设置为从表的主键,但是不能为空,必须和主表的数据类型保持一致。
外键的值和主键的值要相同。
先插入主表的数据,在插入从表的数据
删除表的1外键不是直接删除外键的列名,而是删除外键的索引,show create table 表名;查看表的详细信息。
删除主键不需要加入主键的列名。如果有extra的额外属性,比如自增长等等要先移除属性(ALTER TABLE class MODIFY stu_id int(11);),然后删除属性,然后才能删除主键
删除主键方式:    alter  table   表名 drop  PRIMARY KEY;NOT NULL约束:确保列中的值不为NULL。
UNIQUE约束:确保列中的所有值都是唯一的。
PRIMARY KEY约束:是NOT NULL和UNIQUE的组合,确保表中每行都有一个唯一标识。
FOREIGN KEY约束:定义了两个表之间的关系,确保一个表中的值必须在另一个表的列中存在。
CHECK约束(MySQL 8.0.16及以后版本支持):允许你指定列中值的范围或条件。

**多表联查,不要超过三张。**超过三种降低查询效率
非空约束:保证列中的值不含null值 not null
唯一性约束:确保列中的所有值都是唯一的,类似主键,但是一个表可以有多个唯一约束。
自增约束,在列生成的每一行都会自动生成一个唯一标识符。,通常和主键一起使用,每次插入新行时,自增列的值会自动增加。

CREATE TABLE if NOT EXISTS test01 (
#表示在创建表时自动检测表是否已经存在,如不存在就创建
id INT(5) ZEROFILL PRIMARY KEY auto_increment,
#ZEROFILL,5位,不足五位自动填充0,
#auto_increment自增长字段,每条记录自动递增1,必须为主键,不可以重复,如果添加失败
#下一条记录也会自动增加
name  CHAR (10),
score DECIMAL (5,2),
address VARCHAR (128)
);
复制表
create  TABLE  stu_01 LIKE student;
复制student的表的结构为stu_01
desc stu_01;INSERT INTO stu_01  SELECT *  FROM student;
复制表的内容
SELECT * FROM stu_01;CREATE TABLE stu_02 (SELECT * FROM student);
复制表的数据同时复制表的内容并导入
SELECT * FROM stu_02;

临时表创建完成之后,在库里面是看不到的,但是依然可以增删改查,但是重新连接数据之后,临时表就会消失

创建表的时候加入TEMPORARYCREATE TEMPORARY TABLE class01 (
stu_id INT(11) ZEROFILL PRIMARY KEY auto_increment,
address VARCHAR(128) DEFAULT '地址不详',
crad_id INT(5)  not NULL
);INSERT INTO class01 VALUES (1,'NAN',411421);
SELECT * FROM class01;

清空表的数据

清空表的数据
面试:如何删除表内的数据,但是保留表和表结构?
drop 删除表;
delete  from  表名;   
一行一行的清空表数据,速度比较慢,如果有自增长字段,delete清空之后,会继续按照原来的序号,继续递增
ALTER TABLE 表名 MODIFY 自增长字段和数据类型;
TRUNCATE TABLE 表名;
清空表,保留表的结构,但是清空之后原有的记录全部抹去,自增长也将从头开始,速度比较快

数据库的用户管理

root都是相同的,Host:可以登录的主机  localhost指的时本地登录%:任意主机(ip地址)
权限1上:localhost >  %的权限
root@localhost  安装mysql之后就有了,不需要额外设置,其他的都需要人工创建,其他用户不设置为localhost
都是设置为主机名
SELECT * from user;   查看用户信息
一、创建用户
create  user  'FBB'@'192.168.11.144'    用户FBB只能登陆192.168.11.144这台主机
CREATE USER 'FBB'@'192.168.11.144' IDENTIFIED BY '123456';
设置用户权限
GRANT ALL PRIVILEGES ON *.* TO 'FBB'@'192.168.11.144';
FLUSH PRIVILEGES;   刷新权限
grant select on xy102.* to FBB@192.168.11.144;   #用户FBB只能登录192.168.11.144,只能进行对xy102库下所有的表进行查询
grant select,insert,.... on xy102.* to FBB@192.168.11.144;  给多个权限用,隔开移除权限
revoke  all privileges on *.* from FBB@192.168.11.144;
FLUSH PRIVILEGES;   刷新权限
revoke insert,update,alter,delete on xy102.* from FBB@192.168.11.144;
FLUSH PRIVILEGES;   刷新权限show grants for 'FBB'@'192.168.11.144';  查看用户权限
GRANT USAGE ON *.* TO `FBB`@`192.168.11.144`    #允许用户登录的权限     
GRANT SELECT ON `xy102`.* TO `FBB`@`192.168.11.144`  只允许用户查询xy102库下的所有表
删除用户
DROP USER 'FBB'@'192.168.11.144';
information_schema  :  这个库包含了mysql服务器中,所有其他数据的库、表、列、索引等详细的元数据的信息,可以用来查询数据库的结构和元数据信息performance_schema  : 包含mysq1的服务性能和资源利用情况。查询语句的执行时间和锁定等信息

数据库忘记登录密码怎么办?

(1)修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql #直接登录

(2)使用 update 修改 root 密码,刷新数据库
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD(‘abc123’) where user=‘root’;
FLUSH PRIVILEGES;
quit
mysql -u root -pabc123

注意:最后再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除,并重启 mysql 服务。

y.cnf
[mysqld]
skip-grant-tables #添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql #直接登录

(2)使用 update 修改 root 密码,刷新数据库
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD(‘abc123’) where user=‘root’;
FLUSH PRIVILEGES;
quit
mysql -u root -pabc123

注意:最后再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除,并重启 mysql 服务。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cpp 强制转换

一、static_cast static_cast 是 C 中的一个类型转换操作符,用于在类的层次结构中进行安全的向上转换(从派生类到基类)或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换(即从派生…

使用phpMyAdmin操作MYSQL(四)

一. 学会phpMyAdmin? phpMyAdminhttp://water.ve-techsz.cn/phpmyadmin/ 虽然我我们可以用命令行操作数据库,但这样难免没有那么直观,方便。所以接下来我们使用phpMyAdmin来操作MySQL,phpMyAdmin是众多MySQL图形化管理工具中使用…

编程从零基础到进阶(更新中)

题目描述 依旧是输入三个整数,要求按照占8个字符的宽度,并且靠左对齐输出 输入格式 一行三个整数,空格分开 输出格式 输出它们按格式输出的效果,占一行 样例输入 123456789 -1 10 样例输出 123456789-1 10 #include "stdio.…

2024年7月20日(星期六)骑行支里山

2024年7月20日 (星期六)骑行支里山,早8:00到8:30,大观公园门口集合,9:00准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,南,北…

【数据结构】树和二叉树及堆的深入理解

【数据结构】树和二叉树及堆的深入理解 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】树和二叉树及堆的深入理解前言一.树1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树的应用 二.二叉树2.1 二叉树概念及…

智慧煤矿:AI视频智能监管解决方案引领行业新变革

随着科技的飞速发展,人工智能(AI)技术已经渗透到各个行业,为传统产业的转型升级提供了强大的动力。在煤矿行业中,安全监管一直是一个重要的议题。为了提高煤矿的安全生产水平,降低事故发生率,智…

ubuntu 虚拟机扩容

在使用vmware创建的ubuntu虚拟机进行linux开发时,安装了docker容器,编译会占用很大的磁盘空间,不想创建新的更大空间的虚拟机linux系统,可以通过gparted图形化工具进行扩容,以下是操作方法 虚拟机设置,扩展…

【C语言】详解结构体(上)

文章目录 前言1. 结构体类型的含义2.结构体的声明2.1 结构体声明的语法2.2 结构体变量的创建和初始化 3.结构体的特殊声明4. 结构体的自引用5.小结 前言 C语言的数据类型分为内置数据类型和自定义的数据类型。所谓的内置的数据类型可以认为是C语言自带的数据类型(c…

Java案例遍历集合中的自定义对象

目录 一:案例要求: 二案例分析: ​编辑三:具体代码: 四:运行结果: 一:案例要求: 二案例分析: 三:具体代码: Ⅰ: pack…

Windows系统中MySQL的安装和卸载(详细包含msi和zip下载方式,以及完全卸载方法,易出现问题及解决方案等)

MySQL的安装: 第一种:msi安装(交简单,但是不能自定义安装路径) 下载地址:https://dev.mysql.com/downloads/installer/ 选择历史版本 选择安装版本,这里我选择的是8.0.37的版本,然…

【HarmonyOS】HarmonyOS NEXT学习日记:二、ArkTs语法

【HarmonyOS】HarmonyOS NEXT学习日记:二、ArkTs语法 众所周知TS是JS的超集,而ArkTs则可以理解为是Ts的超集。他们的基础都基于JS,所以学习之前最好就JS基础。我的学习重点也是放在ArkTs和JS的不同点上。 文章主要跟着官方文档学习,跳过了一…

框架设计MVC

重点: 1.用户通过界面操作,传输到control,control可以直接去处理View,或者通过模型处理业务逻辑,然后将数据传输给view。 2.control包含了model和view成员。 链接: MVC框架详解_mvc架构-CSDN博客 MVC架…

【Docker】Docker 的数据管理与镜像创建

目录 一.数据管理 1.数据卷 2.数据卷容器 二.端口映射 三.容器互联 四.Docker 镜像的创建 1.基于现有镜像创建 1.1.首先启动一个镜像,基于镜像创建容器,更新容器内容 1.2.将修改后的容器提交为新的镜像,需要使用该容器的 ID 号创建新…

算法2--贪心算法

1.老鼠和猫的交易 小老鼠准备了M磅的猫粮,准备去和看守仓库的猫做交易,因为仓库里有小老鼠喜欢吃的五香豆。 仓库有N个房间; 第i个房间有 J[i] 磅的五香豆,并且需要用 F[i] 磅的猫粮去交换; 老鼠不必交换该房间所有的五…

中国星坤X0800HI系列线对板连接器:创新技术连接,引领智能家居未来!

近日,中国星坤推出的X0800HI系列线对板连接器,凭借其独特的设计和卓越的性能,引起了业界的广泛关注。 X0800HI系列线对板连接器在极小空间内实现了线对板的W-B连接,这不仅解决了传统连接方式中剥线和焊接的繁琐步骤,还…

django踩坑(四):终端输入脚本可正常执行,而加入crontab中无任何输出

使用crontab执行python脚本时,有时会遇到脚本无法执行的问题。这是因为crontab在执行任务时使用的环境变量与我们在终端中使用的环境变量不同。具体来说,crontab使用的环境变量是非交互式(non-interactive)环境变量,而终端则使用交互式(inter…

Hyper-V和VMWare使用对比

图片来自互联网 1.起因 最近在学习Linux相关的知识,第一步当然就是装虚拟机了。之前是基于微软Hyper-V平台装的Ubuntu,用起来总是感觉卡卡的。我还一直天真的以为虚拟机都是这个样子的,直到用了VMWare之后…。VMWare我主要装的是VMWare16Pro&#xff0…

224 |《乡下人的悲歌》也是城市中产的呜咽

今天《乡下人的悲歌》和他的作者火了:詹姆斯戴维万斯(James David Vance)被共和党提名为副总统候选人。 以下是最能代表这本书的一个重要观点: I dont believe in epiphanies. I dont believe in transformativemoments, as trans…

C++:链表插入排序/删除重复节点题解

插入排序 插入排序的思路很简单,基本都知道。 关键是放在链表中, 1.要建立一个哨兵位,这个哨兵位的下一个节点,始终指向val最小的节点。 2.prev指针作为cur的前一个节点,始终指向val最大的节点。它的下一个节点始终…

JavaFX+MySQL实现图书管理系统(包含完整代码)

目录 一、功能介绍 1.ER图 2.学生管理员登陆页面 3.图书馆首页 4.学生图书馆搜索界面 5.学生注册 6.管理员后台 增加书籍 查看借阅记录 ​编辑 修改图书 二、功能分解 1.界面展示 2.点击按钮切换页面 普通按钮点击 复杂按钮点击 3.登录注册 创建登陆注册的页…