当前位置: 首页 > news >正文

MYSQL基础问题

一.DBMS 是什么

DBMS(Database Management System),数据库管理系统,是一种操纵和管理 数据库的大型软件,用于建立、使用和维护数据库。对数据库进行统一的管理和 控制,以保证数据库的安全性和完整性。

二、实体和实体之间的关系有哪些,外键上应该如何体现

一对一:外键字段放在使用频率高的表上,比如一个用户对应一个病人信息, 一个病人对应一个用户

一对多:外键字段放在多的一方,比如一个班级对应多个学生

多对多:建在关系表中,比如一个学生可以选择多个课程,一个课程可以被 多个学生选择,学生和课程之间就是多对多

三、 数据库三大范式是怎么样的

第一范式: 每列保证原子性,属性不可分割,每个属性都是不可分割的原子项

第二范式: 首先满足第一范式; 必须要有一个主键; 如果主键是复合主键,除了主键以外的其他列必须完全依赖于主键列, 不能只依赖主键的一部分;

第三范式: 满足第二范式 除了主键以外的其他列必须直接依赖于主键,不能间接依赖于主键

四.什么样的列适合建立主键
  1. 选择尽量更新少的列作为主键,尽量选择没有业务含义的列作为主键

  2. 一个表只有一个主键约束,但主键约束可以使组合键,但组合键尽量少用

  3. 主键不能为 null

五、主键约束和唯一约束有什么区别

1.同一张表可以有多个唯一约束,但只能有一个主键;

2.主键字段不能为 null,但唯一约束可以为 null;

3.主键字段可以作为其他表的外键,但唯一约束字段不可以作为其他表的 外键。

六.TRUNCATE TABLE 和 delete from 有什么区别 1

1.语句格式: Delete From: Delete from 表名(where 条件); Truncate table:truncate table 表名;

2.删除表数据不同 Delete from:可以删除整张表数据或删除指定条件的记录行; Truncate table:只能删除整张表数据,不能删除指定的行;

3.释放空间不同

delete from:删除数据后,不会释放表所占用的内存空间,删除后可撤销,删除操作会做日志记录

Truncate table:删除数据后,会释放表占用的内存空间,删除后不可撤销,删除操作不会记录日志

4.执行速度不同 Delete from:速度慢 Truncate table:速度快

七、sql 语句的分类有哪些

1.DQL(数据查询语言)select

2.DML(数据库操作语言) insert、delete、update

3.DDL(数据库定义语言)创建数据库中的各种对象,创建删除修改表结构

4.DCL(数据控制语句)授予或回收访问数据库的某种特权,并控制数据库 操纵事务发生的时间及效果,对数据库进行实时监视

八、mysql 中,char 和 varchar 有什么区别(看笔记找答案)
1.场景区别:char适合存放定长字符串,varchar存放长度可变的字符串
2.后面的数字:字符个数,char后面最多可以写到255,varchar:一行数据最多占65535个字节(除去Bolb类的数据类型)除去其他列所占的空间,剩余的空间和varchar后面写的字符个数有关系,编码不同,一个字符 所占用的存储空间也不一样,所以也会影响varchar后字符个数3.char是固定长度,char(5),如果存放了3个字符,也会按照5个字符占用存储空间varchar(5):可变长度,如果存储了3个字符,会按照3个字符占用存储空间。
4.速度区别:char优于varchar
5.空格的处理:char会消灭掉字符后自己插入的空格,varchar不会
九.mysql 中,dataTime 和 timestamp 有什么区别

相同点:存储格式相同 datetime 和 timestamp 两者的时间格式都是 YYYY-MMDD HH:MM:SS

不同点:存储范围不同,datetime 的范围是 1000-01-01 到 9999-12-31,而 timestamp 是从 1970-01-01 到 2038-01-19,即后者的时间范围很小。

与时区关系:datetime 是存储服务器当前的时区,而 timestamp 类型,是将服务 器当前时间转换为 UTC(世界时间)来存储,即 datetime 与时区无关,存什么, 返回什么,而 timestamp 存储的时间,返回的时间会随着数据库的时区不同而 发生改变。

九.mysql 中,enum 和 set 有什么区别
enum和set的区别:enum只能从列出来的值中选择一个作为数据,set可以从列出来的值中选择多个值作为数据
十、mysql 中的这些函数,能说出来一些
select  if(1>2,2,3)
select ifnull(title,0)   from book
#如果两个表达式补相等,返回表达式1,否则返回null
select nullif('abc','abc1')
#将参数进行连接(必然会使用)
select  concat('a','*','b')
select  concat(title,',',type,',',bookid) from book
#第一个参数为分隔符
select CONCAT_WS('*',title,type,bookid) from book
​
#字符串截取,索引从1开始(字符串,开始位置,长度)
select substring('abcde',2,2)
​
#去掉字符串收尾的空格
select trim('   bcde  ')
create table test4(t_id int primary key auto_increment,t_name varchar(20)
)
​
insert into test4(t_name)values("amdin")
#返回最后一次插入的自增列的值(非常实用)
select LAST_INSERT_ID() 
select  CURDATE()
select  CURRENT_DATE()
select  CURTIME()
select CURRENT_TIME()
SELECT NOW()
select DATE_ADD(NOW(),INTERVAL -6 MONTH); 
select DATE_ADD(CURRENT_DATE,INTERVAL 6 DAY); 
​
select DATE_ADD(CURRENT_DATE,INTERVAL 6 HOUR); 
​
select DATE_ADD(CURRENT_DATE,INTERVAL 6 YEAR); 
select DATE_ADD(now(),INTERVAL 6 MINUTE); 
select DATE_ADD(now(),INTERVAL 6 SECOND); 
select DATE_ADD(CURRENT_DATE,INTERVAL 6 WEEK); 
SELECT  DATE_SUB(CURRENT_DATE,INTERVAL -6 MONTH);
SELECT MONTH(now())  获取时间的月份
SELECT year(now())  获取时间的年份
#y代表两MONTH(NO)位年份 Y代表4位年份  h代表12小时制 H代表24小时制
​
select DATE_FORMAT(CURRENT_TIMESTAMP(),'%y/%m/%d %h:%i:%s')
​
select DATE_FORMAT(CURRENT_TIMESTAMP(),'%Y/%m/%d %H:%i:%s')
十一、mysql 中的自然连接是怎么会事情,举个例子说明下 natural join

自然连接 条件:两张连接的表中作为联合条件的列的列名称和类型完全一致
create table bookType(type_id int auto_increment primary key,type_name varchar(20)
)
​
create table books(book_id int auto_increment primary key,book_name varchar(20),type_id INT,foreign key(type_id) REFERENCES bookType(type_id)
)
select * from bookType
insert into bookType(type_name)values('计算机类'),('文学类')
​
insert into books(book_name,type_id)values('JAVA基础',1),('JAVA编程思想',1),
('西游记',2),('三国演义',2)
​
insert into books(book_name,type_id)values('JAVA基础',null)
#自然连接,条件:需要联合条件所涉及的列的列名需要一样
#自然内连接
select * from books  NATURAL join bookType  
#自然左连接
select * from books NATURAL left join bookType
#自然右连接
select * from books NATURAL right join bookType
#交叉连接
select * from books  cross  join bookType on  books.type_id=bookType.type_id

相关文章:

MYSQL基础问题

一.DBMS 是什么 DBMS(Database Management System),数据库管理系统,是一种操纵和管理 数据库的大型软件,用于建立、使用和维护数据库。对数据库进行统一的管理和 控制,以保证数据库的安全性和完整性。 二…...

SpringBoot使用Guava实现日志脱敏(含源码)

点击下载《SpringBoot使用Guava实现日志脱敏(含源码)》 1. 摘要 本文将介绍如何使用Google Guava库进行日志脱敏,保护敏感数据的安全。我们将详细解释脱敏的必要性,然后介绍如何使用Guava中的Strings、Maps和CharMatcher类来进行…...

数据结构—动态查找

动态查找介绍 1. 动态查找的引入:当查找表以线性表的形式组织时,若对查找表进行插入、删除或排序操作,就必须移动大量的记录,当记录数很多时,这种移动的代价很大。 2. 动态查找表的设计思想:表结构本身是…...

Tarjan算法学习笔记

目录 无向图的割点与桥 时间戳: 搜索树: 追溯值: 割边判定法则: 割点判定法则: 无向图的双连通分量 定理: 边双连通分量(e-DCC)的求法: e-DCC的缩点: 有向图的连通性 追…...

vue 项目涉及的焦点聚焦、格式化日期、判断是否为对象或数组、判断是否为空、深拷贝、节流、防抖

焦点聚焦 import Vue from vue // 插件对象(必须有 install 方法, 才可以注入到 Vue.use 中) export default {install () {Vue.directive(fofo, {inserted (el) {el el.querySelector(input)el.focus()}})} }格式化日期格式 export const formatDate (time) > {// 将xx…...

软件工程知识梳理6-运行和维护

软件维护需要的工作量很大,大型软件的维护成本高达开发成本的4倍左右。所以,软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 定义:软件已经交付使用之后,…...

docker- php7.4

安装 gd拓展 anzhuanga在Dockerfile里面安装php7.4的GD库 - 知乎 apt update apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-devdocker-php-source extractdocker-php-ext-configure gd \ --with-jpeg/usr/include \ --with-freetype/usr/include/docker-…...

开发一个Android App,在项目中完成添加联系人的功能,通过ContentResolver向系统中添加联系人信息。

实现步骤&#xff1a; &#xff08;1&#xff09;添加动态联系人的权限。 &#xff08;2&#xff09;创建Activity和布局文件&#xff0c;添加输入框和按钮等控件。 &#xff08;3&#xff09;完成添加联系人的功能。 代码文件如下&#xff1a; activity_main.xml文件 <!…...

Flume搭建

压缩包版本&#xff1a;apache-flume-1.9.0-bin.tar 百度盘链接&#xff1a;https://pan.baidu.com/s/1ZhSiePUye9ax7TW5XbfWdw 提取码&#xff1a;ieks 1.解压 tar -zxvf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/ 2. 修改文件名 [rootbigdata1 opt]…...

Web APIs 1 DOM操作

Web APIs 1 引入&#xff1a;const优先Web API 基本认知01 作用和分类02 什么是DOM03 DOM树04 DOM对象 获取DOM对象01 根据CSS选择器获取02 其他获取DOM元素方法 操作元素内容01 innerText 属性02 innerHTML 属性 操作元素属性操作元素的常用属性操作元素的样式属性操作表单元素…...

dvwa,xss反射型lowmedium

xss&#xff0c;反射型&#xff0c;low&&medium low发现xss本地搭建实操 medium作为初学者的我第一次接触比较浅的绕过思路high low 发现xss 本关无过滤 <script>alert(/xss/)</script> //或 <script>confirm(/xss/)</script> //或 <scr…...

从云计算到物联网:虚拟化技术的演变与嵌入式系统的融合

文章目录 一、硬件性能提升&#xff1a;摩尔定律与嵌入式虚拟化二、CPU多核技术&#xff1a;为嵌入式虚拟化提供支持三、业务负载整合&#xff1a;嵌入式虚拟化的核心需求四、降低硬件成本&#xff1a;虚拟化技术的经济效益五、软件重用与移植&#xff1a;虚拟化技术的优势六、…...

linux 文件查看 head 、 cat 、 less 、tail 、grep

查看文件详细信息 stat 文件 cat 》》适合显示小文件【行数比较少】&#xff0c;如果行数较多&#xff0c;屏幕显示不完整&#xff08;如果虚拟操作&#xff0c;是无法上下键的&#xff0c;或者滚动鼠标的&#xff0c;第三方 xsheel&#xff0c;crt 可以方向键查看&#xf…...

13.2 Web与Servlet进阶(❤❤)

13.2 Web与Servlet进阶 1. 请求与响应1.1 URL与URI1.2 HTTP请求的结构1. 结构2.后端获取访问工具类型:getHeader().toLowerCase方法1.3 响应的结构1. 结构2. 响应常见状态码3. 后端设置响应参数4. 响应的ContentType作用1.4 请求转发与响应重定向应用1. 请求转发:getRequestDis…...

记录解决报错--vue前后端分离,接口401(Unauthorized)

1.场景 前端访问不了后端接口。报错401。 2.解决步骤 ①在页面console.log(111)查看走到代码的位置没有。&#xff08;走到了&#xff0c;没问题&#xff09; ②查看vue.config.js配置。这段配置就是vue访问api的url。&#xff08;没问题&#xff09; devServer: {port: 80…...

【笔记】Android 常用编译模块和输出产物路径

模块&产物路径 具体编译到软件的路径要看编译规则的分区&#xff0c;代码中模块编译输出的产物基本对应。 Android 代码模块 编译产物路径设备adb路径Comment 模块device/mediatek/system/common/ 资源overlay/telephony/frameworks/base/core 文件举例res/res/values-m…...

部署私有知识库项目FastGPT

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景。 项目文档: [快速了解 FastGpt | FastGptFastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即…...

【2024-02-02】华为秋招笔试三道编程题解

恭喜发现宝藏&#xff01;搜索公众号【TechGuide】回复公司名&#xff0c;解锁更多新鲜好文和互联网大厂的笔经面经。 作者TechGuide【全网同名】 订阅专栏&#xff1a; 【专享版】2024最新大厂笔试真题解析&#xff0c;错过必后悔的宝藏资源&#xff01; 第一题&#xff1a;找…...

银行数据仓库体系实践(8)--主数据模型设计

主数据区域中保留了数据仓库的所有基础数据及历史数据&#xff0c;是数据仓库中最重要的数据区域之一&#xff0c;那主数据区域中主要分为近源模型区和整合&#xff08;主题&#xff09;模型区。上一节讲到了模型的设计流程如下图所示。那近源模型层的设计在第2.3和3这两个步骤…...

vue在main.js中引入三方插件不生效的原因

有的时候需要比较复杂的功能,但是自己实现比较复杂的话,可以引入第三方插件.如果这个第三方插件需要全局都使用的话,可以在main.js中进行引入. 比如router elementplus之类的. import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/…...

【LLM-Agent】智能体的记忆缓存设计

note 实践&#xff1a;https://modelscope-agent.readthedocs.io/zh-cn/latest/modules/memory.html 文章目录 note一、Agent的记忆实现二、相关综述三、记忆体的构建四、cursor的记忆设计1. 记忆生成提示词2. 记忆评估提示词 五、记忆相关的MCPReference 一、Agent的记忆实现…...

【学习记录】如何使用 Python 提取 PDF 文件中的内容

如何使用 Python 提取 PDF 文件中的内容 在文档自动化处理、数据提取和信息分析等任务中&#xff0c;从 PDF 文件中提取文本是一项常见需求。PDF 文件通常分为两种类型&#xff1a;基于文本的 PDF 和 包含扫描图像的 PDF。 本文将介绍如何使用 Python 分别提取这两种类型的 P…...

洛谷P1591阶乘数码

P1591 阶乘数码 题目描述 求 n ! n! n! 中某个数码出现的次数。 输入格式 第一行为 t ( t ≤ 10 ) t(t \leq 10) t(t≤10)&#xff0c;表示数据组数。接下来 t t t 行&#xff0c;每行一个正整数 n ( n ≤ 1000 ) n(n \leq 1000) n(n≤1000) 和数码 a a a。 输出格式…...

【C/C++】实现固定地址函数调用

在 C 里&#xff0c;函数地址在程序运行期间通常是固定的&#xff0c;不过在动态链接库&#xff08;DLL&#xff09;或者共享库&#xff08;SO&#xff09;中&#xff0c;函数地址可能会因为地址空间布局随机化&#xff08;ASLR&#xff09;而改变。所以我们想要通过地址直接调…...

rk3588 区分两个相同的usb相机

有时候会插入两个一模一样的usb相机&#xff0c;担心每次启动他们所对应的设备节点 /dev/video* 会变化&#xff0c;所以需要绑定usb口&#xff0c;区分两个相机。把两个相机都插入后&#xff0c;查看usb信息 rootrk3588:/# udevadm info --attribute-walk --name/dev/video0U…...

计算机视觉处理----OpenCV(从摄像头采集视频、视频处理与视频录制)

一、采集视频 VideoCapture 用于从视频文件、摄像头或其他视频流设备中读取视频帧。它可以捕捉来自 多种源的视频。 cv2.VideoCapture() 打开摄像头或视频文件。 cap cv2.VideoCapture(0) # 0表示默认摄像头&#xff0c;1是第二个摄像头&#xff0c;传递视频文件路径也可以 …...

|从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面

&#x1f411; |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面 &#x1f411; 文章目录 &#x1f411; |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面 &#x1f411;♈前言♈♈调取Deepseek大模型♈♒准备工作♒♒调用API♒ ♈将模型嵌入到ui界面中♈♈…...

scss(sass)中 的使用说明

在 SCSS&#xff08;Sass&#xff09;中&#xff0c;& 符号是一个父选择器引用&#xff0c;它代表当前嵌套规则的外层选择器。主要用途如下&#xff1a; 1. 连接伪类/伪元素 scss 复制 下载 .button {background: blue;&:hover { // 相当于 .button:hoverbackgrou…...

AI推理服务的高可用架构设计

AI推理服务的高可用架构设计 在传统业务系统中,高可用架构主要关注服务冗余、数据库容灾、限流熔断等通用能力。而在AI系统中,尤其是大模型推理服务场景下,高可用架构面临更加复杂的挑战,如推理延迟敏感性、GPU资源稀缺性、模型版本切换频繁等问题。本节将专门探讨如何构建…...

【题解-洛谷】B3622 枚举子集(递归实现指数型枚举)

题目&#xff1a;B3622 枚举子集&#xff08;递归实现指数型枚举&#xff09; 题目描述 今有 n n n 位同学&#xff0c;可以从中选出任意名同学参加合唱。 请输出所有可能的选择方案。 输入格式 仅一行&#xff0c;一个正整数 n n n。 输出格式 若干行&#xff0c;每行…...