数据库SQL

news2024/12/24 11:40:09

数据库&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(回滚)

约束

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

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

相关文章

关于卷积神经网络的池化层(pooling)

了解池化层 池化层又称“下采样层”或“子采样层”&#xff0c;池化层可以大大降低特征的维度&#xff0c;减少计算量&#xff0c;同时可以避免过拟合问题。 顾名思义&#xff0c;最大池化层就是从输入的矩阵中某一范围内&#xff0c;选择最大的元素进行保留&#xff1b;平均池…

在MacBook上实现免费的PDF文件编辑

之前我想对PDF文件进行简单处理&#xff08;比如删页面、添空白页、调整页面顺序&#xff09;&#xff0c;要么是开wps会员【花钱贵】&#xff0c;下载&#xff08;盗版&#xff09;Adobe Acrobat【macOS不好下载】&#xff0c;要么用福昕阅览器登陆学生账号&#xff08;学校买…

运算符重载(operator)

语法&#xff1a; 返回值 operator 运算符 ( 参数 ) 例&#xff1a; Point operator(const Point &p1,const Point &p2); //输出 Point 类型的输出运算符重载函数 ostream & operator<<(ostream& out,Point &p) {cout << "输出运算符…

01. Python基础环境搭建

目录 1、什么是Python 2、Python的特点 3、基础环境搭建 3.1、下载安装解释器 3.2、hello world 4、集成开发环境&#xff1a;PyCharm 4.1、下载安装Pycharm 4.2、新建简单Demo 1、什么是Python Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。Pytho…

Android EditText 实现强制性弹出只能输入英文的键盘

如果 EditText 控件不做任何特殊处理&#xff0c;例如笔者手机默认弹出的是百度输入法的软键盘&#xff0c;可实现中英文切换&#xff0c;并且自带英文单词智能联想功能&#xff08;与系统安装输入法和设置相关&#xff09;。但在某些应用场景下&#xff0c;例如在英语APP里练习…

在CSDN上挣点外快的小tips

作为一个在csdn上也挣了一点辛苦费的博主&#xff0c;个人简单总结了两个方法。 1、道德的方法 如上图&#xff0c;可以把自己曾经做过的一些设计或其它资源类的内容&#xff0c;打包传到CSDN的资源池中&#xff0c;有条件的可以写个文章引流一下&#xff0c;运气好的话会有人下…

Python基础入门(6)----Python控制流:if语句、for循环、while循环、循环控制语句

文章目录 Python控制流:if语句、for循环、while循环、循环控制语句if语句示例:for循环示例:while循环示例:循环控制语句示例:最佳实践Python控制流:if语句、for循环、while循环、循环控制语句 控制流是编程中的基础概念,它允许我们根据不同的条件执行不同的代码块,或者…

中西部地区教育正获优质均衡高质量发展

教育部日前消息&#xff0c;2022年我国基础教育财政性教育经费达3.2万亿元&#xff0c;比2015年增加了1.3万亿元&#xff0c;年均增长7.7%。近些年来&#xff0c;我国基础教育各学段财政总投入和生均支出逐年只增不减&#xff0c;为推动基础教育优质均衡发展提供了有力支撑。 …

antd 表单项联动验证时,disabled属性不生效

在antd表单中&#xff0c;表单项验证条件是根据其他表单项的值决定的&#xff0c;比如当前【时间限制】选择【无】时&#xff0c;【限制时段】表单项不可用 所以我单纯使用 disabled{sourceForm.getFieldValue().timeLimit}是不生效的&#xff0c;因为disabled切换会涉及到st…

怎么在相册里去水印?三种方法教你去除

当你查看相册时&#xff0c;有时可能会注意到一些照片上有水印&#xff0c;这可能会让人感到不满,不管你是想保存这些照片还是与他人分享&#xff0c;水印往往会影响图片的观赏效果&#xff0c;不过别担心我将向你介绍一些简单的方法&#xff0c;帮助你在相册中轻松去除这些水印…

解决docker tag打标签时报错:Error response from daemon: no such id

现象&#xff1a; 原因&#xff1a; docker tag时不仅仅要Repository仓库名&#xff0c;也需要原有的tag作为版本号 解决办法&#xff1a; docker tag 原有仓库名: 原有tag值 新的打标名称 问题解决&#xff01;

适合汽车应用的MAX49017ATA/VY、MAX40025AAWT、MAX40025CAWT、MAX40026ATA/VY(线性)微功耗比较器

一、MAX49017ATA/VY 内置基准电压源的1.7V、双通道微功耗比较器 MAX49017是一款节省空间的双通道比较器&#xff0c;内置基准电压源&#xff0c;提供推挽输出。该器件通过了AEC-Q100认证&#xff0c;非常适合汽车应用&#xff0c;例如汽车电池监控系统、信息娱乐系统音响主机和…

冰点还原精灵 Deep Freeze 管理密码忘了怎么办?

环境&#xff1a; Win10 专业版 Deep Freeze V.8.63 问题描述&#xff1a; 冰点还原精灵 Deep Freeze 管理密码忘了怎么办&#xff1f; 解决方案&#xff1a; 1.找一台安装Deep Freeze V.8.63相同版本的电脑&#xff0c;进入PE复制C盘Persi0.sys文件 2.到要破解电脑上进入…

DAY 12 结构体(重点) 共用体 枚举01

1.结构体 1.概念 将基本类型或构造类型封装在一起&#xff0c;拥有独立空间&#xff0c;这个数据结构 就叫结构体。 结构体 使用的关键字 struct. 一个结构体可以定义多个结构体变量 2.定义 注意&#xff1a; 1,结构体定义一般在头文件中 2,不要在定义结构体时给其成员初始…

7.判断素数----不知道哪里错了

#include<stdio.h>void fun(int n) { int i;for(i2;i<n;i){if(n%i0)break;}if(in)printf("%d是素数\n",n);elseprintf("%d不是素数",n); }int main(){int n;scanf("d",&n);fun(n);return 0;}

王干娘和西门庆-UMLChina建模知识竞赛第4赛季第18轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先全部答对前3题&#xff0c;即可获得本轮优胜。 所有题目的回答必须放在同一条消息中&…

虚幻引擎:如何使用 独立进程模式进行模拟

第一步:先更改配置 第二步,在启动的两个玩家里面,一个设为服务器,一个链接进去地图就可以了 1.设置服务器 2.另一个玩家链接

kubernetes存储-volumes

目录 一、Volumes的简介 二、emptyDir卷 1、emptyDir的引入 2、emptyDir 的使用场景 3、多容器共享volumes 4、emptyDir缺点 三、hostPath卷 1、hostPath卷简介 2、创建hostPath卷 3、NFS共享文件 四、PersistentVolume&#xff08;持久卷&#xff09; 1、PV与P…

利用SPDK改善NVMe存储I/O性能

长期以来&#xff0c;SATA、SAS盘统治着企业级存储&#xff0c;虽然前些年 SSD固态存储介质的出现对 AHCI协议类型的存储访问带来了一定性能提升&#xff0c;但与 CPU 的计算速度相比&#xff0c;只能是杯水车薪&#xff0c;并且 SSD 的性能也不能充分地得到发挥。传统存储技术…