数据库01_增删改查

1、什么是数据?什么是数据库?

  • 数据:描述事物的符号记录称为数据。数据是数据库中存储的基本对象。
  • 数据库:存放数据的仓库,
  • 数据库中可以保存文本型数据、二进制数据、多媒体数据等数据

2、数据库的发展

  • 第一阶段:使用磁盘文件来存储数据,有网状模型、层次模型,用于分组保存数据。
  • 第二阶段:关系型数据库(RDB)+结构化查询语言(SQL),各厂商都在做关系型数据库以及优化SQL查询的效率。
  • 第三阶段:关系-对象型数据库即我们平时听到的“大数据”,大数据是超越了关系型数据库的非结构化数据库,通常使用大数据处理技术+全文搜索+分类聚类各种算法来处理。

关系型数据库(结构化的数据)

结构化数据:每一列都有特定的含义,结构非常清晰,二维表结构是关系型数据库的核心。

二、数据库常用操作

  • 数据库定义功能:DBMS提供数据定义语言(DDL)用户可以对数据库中的数据对象进行定义
    如创建数据库、删除数据库、修改数据库、创建表、删除表、修改表等
  • 数据库操纵功能:DBMS提供数据操纵语言(DML)用户可以实现对数据的基本操作,如插入、删除、修改。
  • 数据查询功能:DBMS提供数据查询语言(DQL)用户实现对数据的查询功能
  • 数据控制功能:DBMS提供数据控制语言(DCL)进行用户角色和权限的管理

总体上,对数据的操作基本上都支持CRUD,即Create、Retrieve、Update、Delete

三、一些数据库管理系统

  • Access:桌面的个人数据库,微软开发的,办公用的和office放在一起
  • MS SQLserver:微软的企业版本的数据库,关系型数据库,企业型的
  • DB2/Informixi:IBM的,IBM最早期的是DB2,Informixi是被IBM收购的,关系型数据库最早就是IBM 发明的,但现在最厉害的是ORACLE商业数据库
  • MySQL:免费版本和商业版本,MySQL被ORACLE收购,所以MySQL的免费版本和商业版有比较大的差异,MySQL Community是社区免费版,ORACLE收购了Sun,Sun之前收购了MySQL。
     

ORACLE收购了Sun有两个至关重要的产品,第一个是Java。第二个是MySQL,都是开源社区里面及其重要的两个应用系统和底层的软件,所以欧盟对ORACLE收购Sun这件事做了严格的审计,确保 ORACLE承诺无论是否开发商业版本,都要有免费版本的授权,否则是不允许收购的。因为用MySQL和Java的人太多了,必须要考虑这种影响。

Sun在被ORACLE后,MySQL的原作者拉了一个分支出来叫MariaDB,内核都一样,功能都一样,95%都是一样的。Java社区版是OpenJdk。MySQL常用的版本是5.6或5.7。

  • PostgreSQL:免费试用、修改和分发PostgreSQL,不管是私用、商用还是学术研究,很多企业从MySQL转换到PostgreSQL,也是因为宽松的授权
  • ORACLE商业数据库
  • NoSQL:非关系型数据库

三、关系型数据库

什么是关系?

关系型数据库加结构化查询语句

数据库定义语言DDL

1、创建数据库

在大多数的RDBMS中,我们可以使用如下简单的SQL语句,创建整个数据库:

CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARACTER set 'utf8mb4'];#在SQL语句中 中括号 表示 可选
#[IF NOT EXISTS]参数表示当数据库不存在的时候才执行创建,如果存在的时候就不执行
#[CHARACTER set 'utf8mb4']
create database test character set 'utf8';
create database if not exists test character set 'utf8';

其中:数据库名在服务器中必须是唯一的,并且符合标识符规则。所谓标识符规则指:

  • 第一一个字符必须是下列字符
    a)Unicode标准3.0所定义的字母(Unicode中定义的字母包括拉丁字母a-z和A-Z,以及来自其他语言的字母字符)。
    b)下划线(_)、at符号(@)或者数字符号(#)
  • 后续字符可以是
    a)Unicode标准3.0所定义的字母
    b)来自基本拉丁字母或其他国家/地区脚本的十进制数字
    c)at符号(@)、美元符号($)、数字符号或下划线
    d)标识符不能是所用RDBMS的保留字,如create、drop、insert、delete、update、alter、select、return、use、grant、revoke等。
    e)不允许嵌入空格或其他特殊字符。

2、修改数据库

语法:ALTER DATABASE db_name CHARACTER SET = charset_name

ALTER DATABASE db_name CHARACTER SET = UTF8MB4

3、删除数据库

语法:DROP DATABASE 数据库名;

DROP DATABASE school;

4、命令行常用的数据库命令

show databases;                         #查看当前系统存在的数据库use test;                              #切换到test数据库show tables;                            #显示当前test数据库中的所有可用的表desc school;                            #显示当前test数据库中school表的结构use mysql;                              #切换到mysql核心数据库select host,user,password from user;    #查询mysql数据库中的user表的三列数据exit;                                   #退出MySQL命令行操作

三、数据表

1、创建表

CREATE TABLE 表名(列名 数据类型 约束,列名 数据类型 约束,
) [ENFINE = engine_name | [DEFAULT] CHARACTER SET [=] charset_name];

其中,表名在一个数据库中必须是唯一的,并且符合标识符规则,列名在一个表中必须是唯一的,并且符合标识符规        则,列的数据类型决定了什么样的数据可以存储在列中,而列的约束定义了创建列时的限制条件。MySQL引擎类型有InnoDB和MylSAM两种。建议使用功能innoDB,功能更加强大,但是执行效率会稍低。

在建表时要根据实际情况考虑表的列的数据类型和约束:

序号id INT

学号sid:13位        15位的变长字符串       varchar(15)

姓名sname:varchar(10)

电话号码:sphone:varchar(11)

性别sex 定长字符串 char(1)

年龄sage:tinyint

创建时间createtime   datatime

2、数据字典

数据字典是 用于描述关系表结构和组成的字典表,通常用于数据库设计工作中,如:

3、表的常用操作

  • 查看数据表
SHOW TABLES;    
DESC <表名>              #查看表的结构

  • 修改数据表

修改数据表表名:

#语法如下:
#ALTER TABLE 表名 RENAME TO 新表名;
#举例:
ALTER TABLE address_info RENAME TO addr_info;

添加字段:

#语法:
#ALTER TABLE 表名 ADD [COLUMN] 列名 列的定义
#举例
ALTER TABLE stu_info ADD age int;

修改字段:

#语法:
ALTER TABLE 表名 CHANGE [COLUMNE] 旧列名 新列名 列的定义;
#举例:
ALTER TABLE stu_info CHANGE address addr varchar(50);

修改字段类型 :

#语法:
ALTER TABLE 表名 MODIFY [COLUMNE] 列名 列的定义;
#举例:
ALTER TABLE stu_info MODIFY stu_info addr varchar(255);

删除字段:

#语法:
ALTER TABLE 表名 DROP [COLUMNE] 列名;
#举例:
ALTER TABLE stu_info DROP addr;

4、删除数据库表

#语法:
DROP TABLE 表名;
#举例:
DROP TABLE stu_info;

四、增删查改 

1、INSERT

针对列名或表名,可以通过添加" ` "来进行区分

#针对列名或表名,可以通过添加" ` "来进行区分
INSERT INTO student(sid, sname, phone, sex, age, degree, createtime)
VALUES (XXAN3005 荔枝 13533066789 女 18 本科 2023-0820 16:00:30);INSERT INTO student(sid, sname, phone, sex, age, degree, createtime)
VALUES (`XXAN3005`, `荔枝`, `13533066789`, `女`, 18, `本科`, `2023-0820 16:00:30`);

 如果在插入数据时每一列都要插入数据则可以省略列名,如果是部分列插入数据则必须指定列名

#如果在插入数据是每一列都要插入数据则可以省略列名
INSERT INTO VALUES (`XXAN3006`, `杨梅`, `1353366789`, `女`, 18, `本科`, `2023-0820 15:00:30`);#如果是部分列插入数据则必须指定列名
INSERT INTO student(sid, sname) VALUES (`XXAN3005`, `程橙`);

如果要插入数据,一次插如多行,可以写多条INSERT语句

INSERT INTO student(sid, sname, phone, sex, age, degree, createtime)
VALUES (`XXAN3005`, `毛毛`, `13533066785`, `女`, 18, `本科`, `2023-0820 13:00:30`);
INSERT INTO student(sid, sname, phone, sex, age, degree, createtime)
VALUES (`XXAN3005`, `花花`, `13533066786`, `女`, 18, `本科`, `2023-0820 14:00:30`);
INSERT INTO student(sid, sname, phone, sex, age, degree, createtime)
VALUES (`XXAN3005`, `小小`, `13533066787`, `女`, 18, `本科`, `2023-0820 15:00:30`);
INSERT INTO student(sid, sname, phone, sex, age, degree, createtime)
VALUES (`XXAN3005`, `豆豆`, `13533066788`, `女`, 18, `本科`, `2023-0820 16:00:30`);

标准的批量插入:

INSERT INTO student(sid, sname, phone, sex, age, degree, createtime)
VALUES (`XXAN3005`, `毛毛`, `13533066785`, `女`, 18, `本科`, `2023-0820 13:00:30`),
(`XXAN3005`, `花花`, `13533066786`, `女`, 18, `本科`, `2023-0820 14:00:30`),
(`XXAN3005`, `小小`, `13533066787`, `女`, 18, `本科`, `2023-0820 15:00:30`),
(`XXAN3005`, `豆豆`, `13533066788`, `女`, 18, `本科`, `2023-0820 16:00:30`);

2、DELETE

TRUNCATE TABLE student;                  #清空表数据
DELETE FROM student;                     #删除表数据,可以带WHERE条件决定删除哪些行
DELETE FROM student WHERE sid='XXAN3005';
​​​​​​​DELETE FROM student WHERE not in(sid='XXAN3005', sid='XXAN3006');

3、UPDATE

UPDATE student SET 'sname'='张三' WHERE sid=`XXAN3007`

五、知识补充

1、常用的编码格式

  • UTF-8格式对全球文字进行统一编码

  • ASCII码:ISO-8859-1,ASCII码是由1byte来进行编码,1byte=8bit,表示有8个二进制位,0000 0000 ~ 1111 1111 对应0~255,最多可以表示256个字符。平时我们键盘上见到的这些字符是标准的ASCII字符,128个字符

    把128~255组成扩展的ASCII表,绝大部分的欧美文字都可以表示,但是唯独没有亚洲文字,比如中文、韩文、蒙古文是不能表示的。

  • 中文编码:汉卡中文编码:GB2312、GBK、GB10030,在中文编码规范下,只支持ASCII+中文,但是不支持日文等,中文编码规范由2byte =16bit,2^16=65536,基本上全部中文都可以表示了,但是如果把全球的文字放进去,2^16又不够,所以UTF-8编码除了ASCII码占1byte,其他文字占3byte=24bit,可表示2^24=16777216个字符。

2、MYSQL常见的数据类型

1、数值型

类型大小 范围(有符号)范围(无符号)用途
TINYINT1byte(-128,127)(0,255)小整数值
SMALLINT 2bytes (-32768,32767)(0,65535)大整数值
MEDIUMINT 3bytes (-8388608,8388607)(0,2^24-1)大整数值
INT或INTEGER 4bytes (-2^31,2^31-1)(0,2^32-1) 大整数值
BIGINT8bytes (-2^63,2^63-1) (0,2^63)大整数值
FLOAT  4bytes ————单精度浮点数值
DOUBLE 8bytes————双精度浮点值
DECIMAL       ——————小数值

2、字符型

CHARE         0-255bytes          定长字符串

VARCHAR   0-65535bytes       不定长字符串

3、日期和时间

最常用的是DATETIME表示日期时间,格式是YYYY-MM-DD-HH:MM:SS

DATETIME        YYYY-MM-DD-HH:MM:SS

DATE               YYYY-MM-DD

TIME                HH:MM:SS

YEAR                YYYY
TIMESTAMP   uninux元年开始的时间

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

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

相关文章

不可能得到的最短骰子序列

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 给你一个长度为 n 的整数数组 rolls 和一个整数 k 。你扔一个 k 面的骰子 n 次&#xff0c;…

【知识点随笔分享 | 第九篇】常见的限流算法

目录 前言&#xff1a; 1.固定窗口限流&#xff1a; 缺点&#xff1a; 2.滑动窗口限流&#xff1a; 优点&#xff1a; 滴桶限流&#xff1a; 缺点&#xff1a; 令牌桶限流&#xff1a; 优点&#xff1a; 总结: 前言&#xff1a; 当今互联网时代&#xff0c;随着网络…

creo投影的使用-如何将一个实体的轮廓曲线单独画出来

第一步&#xff1a;先建立一个平面&#xff1a; 比如你需要将实物的曲线正对自己&#xff0c;然后建立此面的偏移平面&#xff0c;然后选中新建立的偏移平面&#xff0c; 然后进入新偏移平面的草绘&#xff0c;然后就可以进行投影了。 第二步&#xff1a;建立参考&#xff1a;…

低代码实施复杂应用的实践方法

内容来自演讲&#xff1a;韦有炬 | 柳州知行远企业管理咨询有限公司 | 总经理 摘要 本文探讨了在全民开发时代如何使用低代码实施复杂应用并降低上线风险。文章分析了复杂系统实施失败的风险&#xff0c;包括项目规划不周、人员变动、企业基础管理不足等&#xff0c;并对比了低…

基于ssm航空信息管理系统论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;飞机票信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…

解锁微信群发新功能,一键轻松达到5000人!

随着社交媒体的不断发展和智能手机的普及&#xff0c;微信已经成为我们日常生活中不可或缺的一部分。作为一个商家或者个人品牌&#xff0c;利用微信进行群发消息是一种非常便捷和高效的方式来推广产品或者传递信息。 然而&#xff0c;传统的微信群发功能却有着一些限制&#…

Linux怎么解压zip格式文件?

Linux解压命令zip是一种常见的文件压缩格式&#xff0c;用于把文件打包成一个zip文件&#xff0c;当我们需要共享或是发送时&#xff0c;能够更快速的发送&#xff0c;储存起来能够减少储存空间。那我们在Linux上怎么使用解压命令zip来解压zip格式文件呢&#xff1f;我们一起来…

H266/VVC帧内预测编码技术概述

预测编码技术 预测编码&#xff08;Prediction Coding&#xff09;是指利用已编码的一个或多个样本值&#xff0c;根据某种模型或方法&#xff0c;对当前的样本值进行预测&#xff0c;并对样本真实值和预测值之间的差值进行编码。 视频中的每个像素看成一个信源符号&#xff…

关于Dark Frost 僵尸网络对游戏行业进行DDoS攻击的动态情报

一、基本内容 近期&#xff0c;一种名为Dark Frost 的新型僵尸网络被发现正在对游戏行业发起分布式拒绝服务攻击&#xff08;DDoS)。目标包括游戏公司、游戏服务器托管提供商、在线流媒体甚至和网络信息安全攻击者直接交互的其他游戏社区成员。截至2023年2月&#xff0c;僵尸网…

GD32移植STM32工程(因为懒,所以移植)

文章目录 一、前言二、差异性三、软件移植部分1.前期准备1.1 安装GD32固件库1.2 选择所用芯片 2.修改程序2.1 启动时间&#xff08;内部时钟可不改&#xff09;2.2 主频2.2.1 系统时钟配置2.2.2 108MHz宏定义第一处第二处第三处第四处第五处 2.2.3 串口2.2.4 FLASH 四、总结 一…

等级保护的网络安全技术措施

目录 结构安全 访问控制 ​编辑 安全审计 边界完整性检查 入侵防范 恶意代码防范 网络设备防护 结构安全 访问控制 安全审计 边界完整性检查 入侵防范 恶意代码防范 网络设备防护 ~over~

date-fns v3 发布——这个由 200 个函数组成的 JavaScript 日期处理套件

date-fns v3 发布——这个由 200 个函数组成的 JavaScript 日期处理套件已经在 TypeScript 中重写&#xff0c;重新引入了 String 日期参数&#xff0c;在 Node 上支持 ESM&#xff0c;并且所有函数现在都可以通过命名导出导出。 经过几个月的开发&#xff0c;v3 终于出来了&a…

力扣经典面试题——搜索旋转排序数组及最小值(二分搜索旋转数组系列一次搞定)

我们先来看看一个常规的二分搜索是如何进行的&#xff1f; 例如要找一个有序数组的某个数 【1&#xff0c;2&#xff0c;4&#xff0c;5&#xff0c;9&#xff0c;11&#xff0c;15&#xff0c;19】 我们要找11&#xff0c;每次我们分割半边判断然后看到底在哪一边。 这里为什么…

Neovim+ctag浏览、编辑源代码

Neovimctag浏览、编辑源代码 一 配置安装vim及 ctags vim应该可以不用装&#xff0c;直接装neovim&#xff0c;这里我是先装了vim再装的neovim Ctags必须装&#xff0c;后面用neovim telescope索引函数时才有效 vim复制系统粘贴板&#xff1a;vim输入模式下&#xff0c;按shi…

[kubernetes]Kube-APIServer

API Server API Server是什么 提供集群管理的REST API接口&#xff0c;包括认证授权、数据校验以及集群状态变更等提供其他模块之间的数据交互和通信的枢纽&#xff08;其他模块通过API Server查询或修改数据&#xff0c;只有API Server才直接操作etcd&#xff09; 访问控制…

开源自托管导航页配置服务Dashy本地搭建结合内网穿透远程访问

开源自托管导航页配置服务Dashy本地搭建结合内网穿透远程访问 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一…

Mongodb基础介绍与应用场景

NoSql 解决方案第二种 Mongodb MongoDB 是一款开源 高性能 无模式的文档型数据库 当然 它是NoSql数据库中的一种 是最像关系型数据库的 非关系型数据库 首先 最需要注意的是 无模式的文档型数据库 这个需要后面我们看到它的数据才能明白 其次是 最像关系型数据库的非关系型数据…

RK3588平台开发系列讲解(AI 篇)RKNN 数据结构详解

文章目录 一、rknn_sdk_version二、rknn_input_output_num三、rknn_tensor_attr四、rknn_perf_detail五、rknn_perf_run六、rknn_mem_size七、rknn_tensor_mem八、rknn_input九、rknn_output沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解 RKNN 相关的数…

Autosar CAN开发02(入门Autosar)

Autosar架构 想起当时刚毕业进入公司之后&#xff0c;我的岗位是Autosar Bsw软件工程师。 看着这个什么“Autosar”&#xff0c;真的是一脸懵。 后来才知道&#xff0c;按照我的理解&#xff1a;Autosar就是一个软件架构。它分为ASW和BSW。ASW负责实现应用层功能&#xff08…

“React学习之旅:从入门到精通的点滴感悟“

在探索和学习React的过程中&#xff0c;我逐渐领悟到了前端开发的魅力与挑战。React&#xff0c;作为Facebook推出的开源JavaScript库&#xff0c;以其独特的思维方式和强大的功能&#xff0c;引领着前端开发的潮流。在这篇文章中&#xff0c;我将分享我的React学习心得&#x…