数据库基础知识---------------------------(1)

数据库分类

关系型数据库 以表格方式存储数据

例子:   MySQL、Oracle、DB2、SQLserver等

特点:  SQL结构程度较高、安全性高、查询效率较低

非关系型数据库 以键值方式存储数据

例子:   Redis、Hbase、MongoDB等

特点:   查询效率高、安全性不高

数据类型

整数   int

小数   double

字符串  varchar()

时间日期  date   datetime

其他  图片音频存放路径

SQL语句的分类

DDL 数据定义语言

创建库

        create database if not exists 库名 charset utf8;

删除库

        drop database 库名;

查看库

        show databases  显示所有的库

        select database() 显示正在使用的库  

        show create database 库名 显示创建该库的语句

创建表

        create table if not exists 表名(
         字段名 类型 约束,
         ...... ..... ....
        );

查看表

        show tables 查看有哪些表

        show create table 表名  查看数据表的创建语句

        desc 表名   查看表结构

删除表 

        drop table  表名

        truncate table 表名 清空数据 有自动增加字段可以重置为0

        delete 不会重置且效率低

修改表(列操作)

给表添加一列 

        alter table 表名 add 字段名 类型 first/after 其他字段名

修改列

        alter table 表名 modify 要修改的字段名 类型 约束

修改列名

        alter table 表名 change 旧字段名 新字段名 类型 约束

删除列

        alter table 表名 drop 列名

修改表名

        rename table 表名 to 新表名

DML 数据操作语言

插入数据

        insert into 表名(字段名1,字段名2,...) values (值1,值2...)

修改数据

        update 表名 set 字段名1 = 值,字段名2 = 值... where 条件

删除数据

        delete from 表名 where 条件

DQL 数据查询语言

查询分类

去重  select distinct 字段名 from 表名

比较查询  >,<,>=,<=,<>,!=

范围查询

        select * from 表名 where 字段名 in (范围值)

        select * from 表名 where 字段名 between A and B

逻辑查询 and / or / not

模糊查询 

        select * from 表名 where 字段名 like '%字%'   %通配符表示占0-n个位置

        select * from 表名 where 字段名 like  ‘_’  _通配符表示占一个位置

非空查询 is null / is not null

排序查询 

        select * from 表名 where 条件 order by 字段名 [asc|desc];

聚合查询  聚合函数会忽略空值计算

        select 函数(...) from 表名 [where 条件];    -- count\max\min\avg\sum

分页查询

        select 字段名1,字段名2,... from 表名 limit M, N;

        M 表示从第几个索引开始,默认为0  
        计算:(当前页码-1 )*每页显示的数据

        N 表示查询多少个数据

分组查询

        select 字段名1,字段名2,... from 表名 group by 分组字段名 [having 分组条件];

        select 字段名1,字段名2,聚合函数(...) from 表名 group by 分组字段名;

查询顺序

                select 
                           字段名,聚合函数 as 别名
                from 
                           表名1 join 表名2 on 关联条件 
                where
                           条件
                group by
                             分组字段名 、sum(聚合函数)
                having 
                              过滤条件
                order by
                              字段名
                limit   m, n;

  1. FROM:首先执行FROM子句,确定要从哪些表中检索数据。

  2. ON:接着执行ON子句,用于表之间的连接条件。

  3. JOIN:然后是JOIN操作,根据ON子句的条件合并表。

  4. WHERE:之后是WHERE子句,用于对结果集进行过滤。

  5. GROUP BY:GROUP BY子句用于将结果集分组,通常与聚合函数(如SUM, AVG)一起使用。

  6. HAVING:HAVING子句用于筛选分组后的结果集。

  7. SELECT:SELECT子句用于选择从结果集中返回哪些列。

  8. DISTINCT:DISTINCT用于去除重复的行。

  9. ORDER BY:ORDER BY子句用于对结果集进行排序。

  10. LIMIT:最后,LIMIT子句用于限制返回的结果数量。

DCL 数据控制语言

SQL约束

一般在创建数据表时进行设定,且可以同时对字段设定多个SQL约束

主键 primary key

        添加主键约束 

        alter table 表名 add primary key(字段名)

        删除主键约束

        alter table 表名 drop primary key

非空 not null

唯一 unique

默认值 default

外键 foreign key

※※MYSQL常见引擎   引擎起到一个启动器的作用

InnoDB:支持事务处理 支持外键 支持崩溃恢复处理和并发控制

MyISAM:插入数据快,空间和内存使用比较低   以查询插入为主,基本上可以用这个引擎来创建表

Memory: 所有的数据都在内存中,数据的处理速度快,但是安全性不高

archive : 只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面

外键 foreign key

  • 约束两张表
  • 在从表中约束 本表中关联字段非主键 和主表中的主键
  • foreign key (字段名) references 另外表名(主键列名)
  • alter table 表A add constraint xxxfk foreign key (外键字段名) references 另外表名(主键字段名);(了解)

关系:

  • 一对一
    • 就是在数据表A中的一条数据,在数据表B中都有一个与之对应的结果
    • 1.主键对主键
    • 2.在任意一张中建立外键连接另一个表的主键.外键必须加唯一约束.
  • 一对多
    • 在【多】的一方有个字段,作为外键字段指向【一】的一方的主键字段。
  • 多对多
    • 通常需要创建第三张表(综合表),并作为中间表,且该表至少有两个字段(都是外键),分别作为外键字段指向各自一方的主键。
    • 就是将一个多对多关系拆分成:两个一对多关系的数据表

多表查询

交叉连接查询

  • 笛卡尔积 两个表并集
  • select 字段名 from A表名, B表名;
  • select 字段名 from A表名 cross join B表名;

内连接查询 两个集合交集

  • 隐式内连接
    • select 字段名 from A表名, B表名 where 条件;
  • 显式内连接
    • select 字段名 from A表名 别名 [inner] join B表名 别名 on 条件 [where 查询条件];

外连接查询

如果根据条件查询,当表数据不存在时,则会使用null值来填充

  • 左外连接 以左表为主并根据条件来查询右表数据
    • select 字段名 from A表名 别名 left [outer] join B表名 别名 on 条件;
  • 右外连接 以右表为主并根据条件来查询左表数据
    • select 字段名 from A表名 别名 right [outer] join B表名 别名 on 条件;

自连接查询

  • select *|字段名1,字段名2,... from A表名 a join B表名 b on a.字段名 = b.字段名 [where 条件];
  • 在进行连接查询操作时,必须为数据表定义别名
  • 自连接查询常用于省市的多级关联处理  又或者员工上级的多级关联

子查询

语法  可以来源于一个子查询 也可以条件是一个子查询的字段

  • select *|字段名1,字段名2,.. from 表名 where 字段名 = (另外select语句的结果);
  • select *|字段名1,字段名2,.. from 表名 where 字段名 in (另外select语句的结果);
  • select *|别名.字段名1,别名.字段名2,.. from (select * from 表名 ) 别名

常用函数

字符函数

  • length(str)  字符串求占用空间长度
  • concat(str1,str2...) 连接字符串
  • upper(str)、lower(str)函数   转大小写
  • substr(str,start,len)函数   从指定位置截取指定长度的字符串
  • instr(str,要查找的子串)函数   判断是否存在 返回 索引值 或者 0
  • trim(str)函数  去除两端空格
  • lpad(str,len,填充字符)、rpad(str,len,填充字符)函数  左右两边指定个数填充.
  • replace(str,子串,另一个字符串)函数  字符串替换

数学函数

  • ①round(x,保留位数)函数: 四舍五入保留小数位.
  • ②ceil(x)函数        :天花板函数
  • ③floor(x)函数       :地板函数
  • ④truncate(x,D)函数  : 按照D的值截取小数部分.
  • ⑤mod(被除数,除数)函数 : 求余数
  • ⑥pow(x,D)函数       : x的D次方

时间与日期

  • ②now()函数                          :当前日期和时间
  • ③curdate()函数                      :当前日期
  • ④curtime()函数                      :当前时间
  • ⑤year、month、day、hour、minute、second获取日期和时间中的年、月、日、时、分、秒
  • ⑥weekofyear()函数                   :一年的第几周
  • ⑦ quarter()函数                     :一年中的季度
  • ⑧ str_to_date()函数                 :字符串转时间类型
  • ⑨date_format()函数                  :格式化时间字符串
  • ⑩date_add(日期,interval num 时间)函数 :添加日期   还有一个date_sub同理
  • ⑪last_day()函数                      :月度最后一天
  • ⑫datediff(end_date,start_date)函数   : 时间差
  • ⑬timestampdiff(unit,start_date,end_date)函数计算两个时间返回的年/月/天数;

流程操作

  • if(expr,v1,v2)函数   : 判断数据给出返回值
  • ifnull()函数         : 判断空给出返回值
  • nullif(expr1,expr2)  : 相同返回null 不同保留表达式1的原值.
  • case…when函数用法     : 多条件判断给出返回值.

   

 case…when函数用法     : 多条件判断给出返回值.
    #区间范围的判断.
    Case
        When condition1 Then result1
        When condition2 Then result2
        ...
        Else result_n
    End
    --------------------------------------
    固定值的判断.
    case 列名
        when 值 then 值
        when 值 then 值
        ....
        else 值
    end

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习的零碎知识点

显卡内存 什么是显卡内存 简单来说就是&#xff0c;Windows 会在物理显存/「专用 GPU 内存」不够用或只有集成显卡的情况下&#xff0c;将物理内存 RAM 当作 GPU 的虚拟显存/「共享 GPU 内存」来使用。 什么是 Windows「共享 GPU 内存」&#xff0c;它与 VRAM 有什么不同 (s…

C# 使用Socket通信,新建WinForm服务端、客户端程序

一、新建WinForm Socket服务端程序 注&#xff1a;rtbReceviceMsg为RichTextBox控件 服务端程序、界面 服务端代码 public partial class Form1 : Form {public Form1(){InitializeComponent();}public virtual void TriggerOnUpdateUI(string message){if (this.InvokeRequir…

软件测试学习笔记丨Pytest的使用

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22158 1. 简介 pytest是一个成熟的全功能python测试框架测试用例的skip和xfail&#xff0c;自动失败重试等处理能够支持简单的单元测试和复杂的功能测试&#xff0c;还可以用来做selenium/ap…

Hive任务优化参数整理

Hive本身是个基于hdfs的结构化数据管理工具&#xff0c;虽然在后面的发展中允许底层接入其他的数据源&#xff0c;比如第三方数据服务这种基础架构&#xff0c;但是它从立意上来说&#xff0c;它不适合用来做高性能查询引擎&#xff0c;反而在传统离线数据仓库中它有着自身的优…

python 函数 封装

封装 函数的参数是&#xff1a;变量 def 函数(参数):print(参数)if __name__ __main__:函数(参数)函数(参数2)函数的参数是&#xff1a; 字典 import requests# 定义一个字典 data {} 地址 "https://webdriveruniversity.com/" 请求方法 getdata["url"…

科研绘图系列:R语言宏基因组PCoA图(PCoA plot)

介绍 PCoA(主坐标分析,也称为主轴分析)是一种多维统计技术,用于分析和可视化高维数据集,如宏基因组数据。在宏基因组学中,PCoA图用于展示样本之间的相似性和差异性,通常基于样本之间的距离或相似度矩阵。PCoA图说明: 样本间关系:PCoA图通过降维技术将高维数据投影到二…

RK3588开发板TF卡槽连接WIFI模组O9201SB

RK3588平台开发板有TF卡槽&#xff0c;可以做为SDIO WIFI连接接入点&#xff0c;本文以O9201SB WIFI模组接入配置。 一、O9201SB模组放于测试架上&#xff0c;底板具有SDIO接口可插入TF卡卡槽。 O9201SB为2T2R SDIO 13x15mm 支持sdio3.0的wifi6模组&#xff0c;支持DBDC1x1或DB…

数据中台 | 数据资源管理平台介绍

01 产品概述 数据资源的盘查、集成、存储、组织、共享等全方位管理能力&#xff0c;无论对于企业的数字化转型&#xff0c;还是对企业数据资产的开发、运营、交易及入表&#xff0c;都具有极为关键的作用。今天&#xff0c;小兵就来为大家介绍我们自研数据智能平台中的核心产品…

3D云渲染农场为何怎么贵?主要消耗成本介绍

随着对高质量3D动画的需求持续增长&#xff0c;云渲染农场对于旨在以高效速度生产高质量视觉效果的工作室来说变得至关重要。然而&#xff0c;用户经常想知道为什么渲染农场的价格如此之高&#xff0c;理解背后的原因可以帮助艺术家做出更好的选择。 什么是云渲染农场&#xff…

YOLO配合 PYQT做自定义虚拟电子围-自定义绘制多边形虚拟电子围栏

电子围栏标注以及显示 1、目标检测&#xff1a; YOLO可以识别检测物体&#xff0c;这是众所周知的。使用YOLO来做目标检测&#xff0c;并获取坐标信息。 2、电子围栏 比如在监控中&#xff0c;指定一块区域&#xff0c;如果有目标进入&#xff0c;则发出警报&#xff0c;并提…

计算机网络(一) —— 网络基础入门

目录 一&#xff0c;关于网络 二&#xff0c;协议 2.1 协议是什么&#xff0c;有什么用&#xff1f; 2.2 协议标准谁定的&#xff1f; 2.3 协议分层 2.4 OSI 七层模型 2.5 TCP/IP 四层模型 三&#xff0c;网络传输基本流程 3.1 局域网中两台主机通信* 3.2 报文的封装与…

[001-03-007].第07节:Redis中的事务

我的后端学习大纲 我的Redis学习大纲 1、Redis事务是什么&#xff1a; 1.可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化&#xff0c; 按顺序地串行化执行而不会被其他命令插入&#xff0c;不许加塞2.一个队列中&#xff0c;一次性、…

2009-2023年上市公司华证esg评级、评分年度数据(含细分项)

2009-2023年上市公司华证esg评级、评分年度数据&#xff08;含细分项&#xff09; 1、时间&#xff1a;2009-2023年 2、来源&#xff1a;整理自wind 3、指标&#xff1a;证券代码、年份、证券简称、评级日期、综合评级、综合得分、E评级、E得分、S评级、S得分、G评级、G得分…

How to see if openAI (node js) createModeration response “flagged“ is true

题意&#xff1a;如何查看 OpenAI (Node.js) createModeration 响应中的 "flagged" 是否为 true 问题背景&#xff1a; Using the OpenAI createModeration feature, I am trying to see if the string gets flagged or not. 使用 OpenAI 的 createModeration 功能…

基于开源WQ装备知识图谱的智能问答优化

基于笔者之前写的博客基础上&#xff1a;https://blog.csdn.net/zhanghan11366/article/details/142139488【基于开源WQ装备知识图谱的智能问答全流程构建】进行优化。 优化一、 解决你提出的多武器、多关系解析问题&#xff0c;并确保每个武器只匹配其对应的关系&#xff0c…

百元内真无线蓝牙耳机推荐有哪些?四大百元性价比品牌公开推荐

在当今这个科技迅速发展的时代&#xff0c;真无线蓝牙耳机以其便携性和自由度成为了许多人日常生活中不可或缺的配件&#xff0c;然而&#xff0c;面对市场上琳琅满目的产品&#xff0c;消费者往往感到眼花缭乱&#xff0c;难以抉择&#xff0c;百元内真无线蓝牙耳机推荐有哪些…

Python | 练习作业 2

为学生登录系统新增搜索功能。 第二天作业的解题思路&#xff1a; # 1.创建一个空列表保存搜索结果 # 2.让用户输入要搜索的内容 # 3.遍历学生信息&#xff0c;检查学生的id name age gender score # 中的属性值 是否跟用户搜索的内容一致 # 4.如果有一致的属性 那么就将该学生…

通过nginx代理转发实现共用80和443端口

目录 项目场景&#xff1a; 问题&#xff1a;怎么实现端口共用&#xff1f; 一、域名解析到nginx服务器 二、创建vhost解析到实际的服务器 三、防火墙的配置 项目场景&#xff1a; 公司自建服务器&#xff0c;有一条专线带有公网IP&#xff0c;如何满足不同的域名解析共用…

春日美食汇:基于SpringBoot的订餐平台

2 系统关键技术 2.1JSP技术 JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。将Java程序添加到传统的web页面HTML文件()。htm,。Html) [1]。 JSP这种能够独立使用的编程语言可以嵌入在html语言里面运行&#xff0c;正因为JSP参照了许多编程语言的特性&#xf…

RHCE--复习(一)之系统延迟任务及定时任务

系统延迟任务及定时任务 #关闭图形命令&#xff08;第二次开启的时候&#xff09;[rootlocalhost ~]# systemctl set-default multi-user.target#windos系统级别类型 0-6个级别#查看级别类型[rootlocalhost ~]# runlevel 一、延迟任务 在系统中我们的维护工作大多数时在服务器…