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

数据库SQL

数据库&SQL

  • 数据库基本概念
    • 数据库DataBase
      • 定义
    • 数据库管理系统(DBMS)
      • 定义
      • 在JAVA项目中与数据库的结合
      • 数据库管理系统中常见的概念
        • 库与表的关系
  • SQL
    • 数据类型
      • 数字类型
      • 浮点类型
      • 字符类型
      • TEXT类型
      • 日期类型
    • SQL语言的分类
      • DDL:数据定义语言
          • 修改表结构的注意事项
      • DML:数据操作语言
      • DQL:数据查询语言
      • DCL:数据控制语言
      • TCL:事务控制语言
  • 约束

数据库基本概念

数据库DataBase

定义

保存一组数据的仓库就称为数据库
例如
编写一个用户管理系统,我们将用户输入的信息以User对象形式表示,并序列化后保存到某个.obj的文件中,用一个目录来保存所有的用户文件,这个目录也可以称为是一个"数据库".
只是对于文件的维护工作(新建文件,修改现有文件数据,删除文件数据)通过编码来实现.

数据库管理系统(DBMS)

定义

一套可独立运行的软件,用于维护磁盘上的数据.维护性高,性能好,可扩展性强.

常见的数据库
MySQL
MariaDB
ORACLE
DB2
SQLServer

在JAVA项目中与数据库的结合

在这里插入图片描述

数据库管理系统中常见的概念


是表的集合,将来不同的项目都可以创建一个库,用来保存该项目中所有的表

是数据的集合,一组具有相同数据的数据保存在一张表上
行:一条记录,具有表中所有字段的一条实际数据
列:字段,一条记录应当具有的相应属性
在这里插入图片描述

库与表的关系

不同的数据要保存在不同的表中,一个项目中所有的表应当存在一个数据库中.而DBMS可以同时管理多个库
DBMS安装后是以服务端的角色运行的,因此我们向操作数据库是以客户端的身份与数据库进行连接,并进行相关操作
在这里插入图片描述

请添加图片描述

SQL

Structured Query Language
SQL语言的特点:
关键字不缺分大小写

好的书写习惯:
关键字全大写,非关键字全小写
字符串内容是区分大小写的

数据类型

在数据库中设计一张表时,要为表中每个字段(列)单独指定数据类型以确保可以保存正确的数据

数字类型

整数类型

  • INT类型
    int类型占用4个字节,保存数字的范围±21
    INT(m):m表示整数的长度(位数),类型后面通常要指定长度,不指定时默认为11位.
  • BIGINT类型
    bigint类型占用8个字节

浮点类型

  • DOUBLE类型
    DOUBLE(M,N):定义DOUBLE类型时,要指明数字的长度和精度
    M:表述数字的长度(位数)
    N:表示小数点后的精度
    M包含N.
    DOUBLE(7,2):可以保存一个7位数字,其中2位数小数.最大值可以保存:99999.99

字符类型

定长字符串

  • CHAR类型
    CHAR类型是定长字符串类型
    CHAR(m): m是一个数字,表示长度,单位是字符。m最大值255
    CHAR类型在磁盘中开辟的空间是固定的,根据指定的长度来进行开辟。
    例如:使用UTF-8编码,长度为3,最多可以保存3个字符,此时无论该字段是否保存够了三个字符都要都开3个字符占用的字节空间。
    优点: 在磁盘上开辟的空间是确定的,固定长度带来了更好的检索性能
    缺点: 浪费磁盘空间

变长字符串

  • VARCHAR类型
    VARCHAR类型是边长字符串,实际占用磁盘空间的大小由数据决定
    VARCHAR(m): m是一个数字,表示长度,单位是字节,最大值为65535.
    实际占用的磁盘空间由数据决定
    例如:name VARCHAR(50)
    name字段保存的字符最多占用50个字节
    如果name保存字符串’张三’,'张三’在UTF-8编码中占6个字节,该字段值实际在磁盘上就占用6字节
    优点: 磁盘空间没有浪费
    缺点: 每条记录该字段长度不一致,会导致查询性能差一些

TEXT类型

TEXT(m): m是一个数字,表示长度,单位是字符,最大值65535

日期类型

类型

  • DATE
    可以保存年,月,日
  • TIME
    可以保存时,分,秒
  • DATETIME
    可以保存年,月,日,时,分,秒
    格式必须为"yyyy-MM-dd hh:mm:ss"(M表示月,m表示分)
    插入数据时可以忽略时分秒,不指定时默认为0
    插入数据时不可以忽略年月日
  • TIMESTAMP
    时间戳,保存UTC时间,最多可以精确到毫秒

SQL语言的分类

DDL:数据定义语言

用于进行数据库对象的操作.数据库对象指:库,表,视图,索引,序列等
对数据库对象进行操作的语言:CREATE,ALTER,DROP

  • CREATE DATABASE 数据库名 [CHARSET=字符集]
    新建一个数据库
    指定字符集常用:UTF8,GBK

  • SHOW DATABASES
    查看已经创建的数据库

  • SHOW CREATE DATABASE 数据库名
    查看某个数据库创建时的信息

  • DROP DATABASE 数据库名
    删除数据库

  • USE 数据库名
    切换数据库
    注意:
    在DBMS下会为不同的项目创建不同的数据库,只有切换到某个数据库上,进行的相关操作才是针对该库的操作

  • CREATE TABLE 表名(
    字段1名字 类型[(长度)] [DEFAULT 默认值] [约束],
    字段2名字 类型[(长度)] [DEFAULT 默认值] [约束],

    )

    创建表

  • DESC 表名
    查看表结构

  • SHOW CREATE TABLE 表名
    查看表时创建的信息

  • SHOW TABLES
    查看当前数据库所有的表

  • RENAME TABLE 原表名 TO 新表名
    修改表名

  • DROP TABLE 表名
    删除表

  • ALTER TABLE 表名 ADD 字段名 类型[(长度)] [DEFAULT默认值] [约束]
    在一张表的末尾追加一个新的字段

  • ALTER TABLE 表名 ADD 字段名 类型 FIRST
    在表最开始处插入字段

  • ALTER TABLE 表名 ADD 字段名 类型 AFTER 表中某字段
    将新字段添加到表中指定字段的后面

  • ALTER TABLE 表名 DROP 字段名
    删除表中字段

  • ALTER TABLE 表名 CHANGE 原字段名 新字段名 类型[长度 默认值 约束]
    修改表中字段

修改表结构的注意事项

修改表结构最好是在表中没有数据的前提下进行

如果表中已经存在数据

  • 尽量不要修改字段类型,否则可能导致表中该字段原有的数据不符合新修改的类型而导致修改失败
  • 字段的长度尽量不要缩短,否则可能由于表中该字段的值已经超过了修改后的长度导致修改失败
  • 为字段添加新的约束时,要保证表中该字段原有的数据不违背该约束要求。
    请添加图片描述

DML:数据操作语言

对表中数据进行操作的语言.包含:增(INSERT)删(DELETE)改(UPDATE)

  • INSERT INTO 表名 (字段1,字段2,字段3,…) VALUES(值1,值2,值3,…)
    指定的值要与指定的字段一一对应,用于将值插入到表中作为一条记录
    INSERT语句中没有被指明的字段都是插入默认值。如果该字段没有明确指定默认值时,默认值为NULL
    注意事项:
    数据库中字符串的字面量使用单引号
    INSERT语句中VALUE子句中指定的值的顺序,个数,类型必须与前面指定的字段完全一致
    INSERT语句指定的字段的顺序,个数可以与该表不完全一样
    全列插入
    INSERT语句中不指定任何字段时,则为全列插入,此时要求VALUES子句中指定的值的顺序,个数,类型必须与表结构定义完全一致

  • INSERT INTO 表名 VALUES(值1,值2,…)
    全列插入

  • INSERT INTO 表名[(字段1,字段2,字段3…)] VALUES(值1,值2,值3),(第二组值),(第三组值),…
    批量插入

  • SELECT * FROM 表名
    查看指定表中的所有记录

  • UPDATE 表名 SET 字段1=新值1,字段2=新值2,… [WHERE 过滤条件]
    修改表数据

  • WHERE子句的基础条件
    WHERE子句中可以使用的基础条件判断:>, >=, <, <=, =, <>(判断不等于使用"<>“,有些数据库支持”!=")

  • DELETE FROM 表名 [WHERE 过滤条件]
    删除表中数据

  • DELETE FROM 表名
    清空表

请添加图片描述

DQL:数据查询语言

对表中数据进行查询的语言,SELECT语句

DCL:数据控制语言

是对数据库进行管理的,通常比如创建用户,分配权限等.(DBA重点学习)

TCL:事务控制语言

包含:COMMIT(提交),ROLLBACK(回滚)

约束

相关文章:

数据库SQL

数据库&SQL 数据库基本概念数据库DataBase定义 数据库管理系统(DBMS)定义在JAVA项目中与数据库的结合数据库管理系统中常见的概念库与表的关系 SQL数据类型数字类型浮点类型字符类型TEXT类型日期类型 SQL语言的分类DDL:数据定义语言修改表结构的注意事项 DML:数据操作语言D…...

C语言实现给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

完整代码&#xff1a; // 给一个不多于5位的正整数&#xff0c;要求&#xff1a;一、求它是几位数&#xff0c;二、逆序打印出各位数字。 #include<stdio.h>int main(){int num;int len0;printf("请输入一个不多于5位的正整数:");scanf("%d",&n…...

101 对称二叉树

原题链接&#xff1a;101 对称二叉树 全代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : va…...

安全测试,接口返回内容遍历~

最近公司被人大量爬取数据&#xff0c;查了一下发现&#xff0c;用户主页接口&#xff0c;没有加用户登录校验&#xff0c;返回了用户的敏感信息有手机号和邮箱&#xff0c;其实这个接口是用不到这些信息的。再加上用户id是自增长的&#xff0c;所以很容易被别人爬取。 既然这…...

【GIS】地理坐标系与投影坐标系的区别

在地理信息系统中&#xff0c;坐标系的选择和使用是至关重要的。我们通常使用的坐标系有两种&#xff1a;地理坐标系和投影坐标系。本文将详细介绍这两种坐标系的概念、区别、转换方式以及常见投影。 一、定义 地理坐标系&#xff08;Geographic Coordinate System&#xff09…...

太细了:美团一面连环夺命20问,搞定就60W起

说在前面 在40岁老架构师尼恩的&#xff08;50&#xff09;读者社群中&#xff0c;经常有小伙伴&#xff0c;需要面试美团、京东、阿里、 百度、头条等大厂。 下面是一个小伙伴成功拿到通过了美团一面面试&#xff0c;现在把面试真题和参考答案收入咱们的宝典。 通过美团一面…...

休眠和睡眠有哪些区别?如何让电脑一键休眠?

电脑中有休眠和睡眠&#xff0c;那么它们有什么区别呢&#xff1f;下面我们就通过本文来了解一下。 休眠和睡眠的区别 电脑在睡眠状态时&#xff0c;会切断内存之外的设备电源&#xff0c;电脑会进入睡眠状态&#xff0c;当再次唤醒电脑后&#xff0c;不会影响睡眠前保存好的工…...

Kibana使用Timelion根据时间序列展示数据

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

基础:JavaScript的怪癖之一:提升(Hoisting)

JavaScript&#xff0c;通常被称为“Web 语言”&#xff0c;是一种多功能且广泛使用的编程语言。它以其怪癖而闻名&#xff0c;其中之一就是 hoisting&#xff08;提升&#xff09;。无论你是经验丰富的开发人员还是刚刚开始你的编码之旅&#xff0c;理解提升对于编写干净和高效…...

前端特殊字符转码

前端特殊字符转码 建议 最好不要传名称&#xff0c;传ID 是在不行就用这个方法 name encodeURIComponent(name),...

Python开发运维:Python3.7安装Django3.2

目录 一、理论 1.pip 2.Django 3.Pycharm国内镜像源 二、实验 1.Python3.7安装Django3.2 三、问题 1.安装django3.2报错 2.pip更新报错 一、理论 1.pip &#xff08;1&#xff09;概念 1&#xff09;pip pip 是 Python 的包安装程序。其实&#xff0c;pip 就是 Pyt…...

B站双11,联手天猫暴涨2亿消费新势力

一直以来&#xff0c;手持高活跃、高粘性用户群体的B站是行业用来观察年轻人消费习惯的重要平台。以至于用户群体的不断壮大带动了B站的商业价值。如今B站的商业舞台越来越大&#xff0c;不断地向外界招手&#xff0c;欢迎更多品牌积极加入到这个千万年轻人聚集的内容社区。 2…...

如何选择SVM中最佳的【核函数】

参数“kernel"在sklearn中可选以下几种 选项&#xff1a; 接下来我们 就通过一个例子&#xff0c;来探索一下不同数据集上核函数的表现。我们现在有一系列线性或非线性可分的数据&#xff0c;我们希望通过绘制SVC在不同核函数下的决策边界并计算SVC在不同核函数下分类准确…...

RT-Thread的构建与配置系统

Kconfig&#xff1a;kernel config配置文件&#xff08;提供系统的配置裁剪功能&#xff09;Scons&#xff1a;构建工具env工具&#xff1a;主要提供构建系统所需的各种环境变量以及软件包的管理 Env Env是RT-Thread推出的开发辅助工具&#xff0c;针对基于RT-Thread操作系统…...

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)

基于ARM语音识别的智能家居系统 我们接下来带大家完成基于语音识别的智能家居系统嵌入式项目实战&#xff0c;使用到stm32开发板&#xff0c;讯飞的离线语音识别&#xff0c;我们在此之前&#xff0c;我们先学习一些Linux系统的基本操作。 。 一、Linux简介 在嵌入式开发中&am…...

Git的简介以及基本使用

目录 一.Git的简介 拓展&#xff1a;Git与SVN的区别&#xff08;各自的优点与缺点&#xff09; 二.Git文件的4种状态 三.Git的常用命令 搭建完成之后&#xff0c;将项目文件也上传之后&#xff0c;现在模拟其他人来下载这个代码 今天就分享到这啦&#xff01;&#xff01;…...

django安装数据库

使用pip安装django pip3 install django注意我使用的是python3所以用pip3安装&#xff0c;如需安装指定版本 django ..* 检测是否安装成功,不报错&#xff0c;则安装成功 # python3 # import django下边这是报错的 django迁移数据库 再mysql中简历数据库 CREATE DATABA…...

springboot--外部环境配置

外部环境配置 前言1、配置优先级配置文件优先级如下&#xff08;后面的覆盖前面的&#xff09;测试 2、外部配置3、导入配置4、属性占位符 前言 场景&#xff1a;线上应用如何快速修改配置&#xff0c;并引用最新配置&#xff1f; springBoot 使用配置优先级外部配置 简化配置…...

『MySQL快速上手』-④-表的操作

文章目录 1.创建表2.查看表结构3.修改表4.删除表 1.创建表 语法格式如下&#xff1a; CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明&#xff1a; field 表示列名&#xff1…...

2023年10月Web3行业月度发展报告区块链篇 |陀螺研究院

10月是加密动荡的一月&#xff0c;围绕比特币现货ETF市场激荡不断&#xff0c;先有Cointelegraph“假消息”搅动市场以致合约遭血洗1.89亿美元&#xff0c;后有灰度、DCTT接二连三释放利好&#xff0c;市场情绪迅速激化&#xff0c;流动性显著提升&#xff0c;USDT 总市值突破8…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...