数据库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元年开始的时间

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

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

相关文章

docker-compose部署kafka

docker-compose.yml配置 version: "3" services:kafka:image: bitnami/kafka:latestports:- 7050:7050environment:- KAFKA_ENABLE_KRAFTyes- KAFKA_CFG_PROCESS_ROLESbroker,controller- KAFKA_CFG_CONTROLLER_LISTENER_NAMESCONTROLLER- KAFKA_CFG_LISTENERSPLAIN…

面向对象设计与分析40讲(15)简单工厂方法模式

文章目录 定义示例优缺点定义 简单工厂模式是一种创建型模式,用于根据客户端的需求创建对象实例,所谓的需求反映到编程语言里就是传入的参数。 简单工厂模式包括三个主要部分: 工厂类(Simple Factory):这是整个模式的核心。它负责根据客户端的请求来创建并返回相应的对…

【教程】从gitee或者github,下载单个文件或文件夹命令

1.打开git 2.初始化 git init 3.设置允许下载子目录 &#xff08;不需要修改任何&#xff0c;只要原样复制&#xff0c;需要按照个人状况修改的话我会标注&#xff09; git config core.sparseCheckout true 4. 选择要下载的单个文件夹的路径 这里单引号内部需要修改&…

Shell 脚本基础

Shell脚本 脚本以#!/bin/bash开头 执行方式 直接使用文件名执行&#xff1a;文件需要执行权限 以bash xxx.sh来执行, 本质上是bash解析器去执行, 文件作为一个输入, 因此可以不需要执行权限 变量 系统变量 自定义变量 定义变量 # 定义一个变量username, 注意不能有多余…

一体机定制_工控触控一体机安卓主板方案

工控一体机是一种集成化的硬件方案&#xff0c;采用了联发科MT8768八核芯片和12nm制程工艺。该芯片拥有2.0GHz的主频和IMG PowerVR GE8320图形处理GPU&#xff0c;具备强大的视频处理能力&#xff0c;并且兼容大部分的视频格式和解码能力。工控一体机搭载了Android 9.0操作系统…

学Java的第二天

一、常量 1.值不可以变化的量。 2. 分类&#xff1a; 字符串常量 用双引号括起来的多个字符&#xff0c;可以包含 0、1 或多个&#xff0c;例如 "a" 、 "abc" 、 " 中国 " 整数常量&#xff0c;例如&#xff1a; -10 、 0 、 88 小数常量&…

浅谈Java反射中的getFields()方法和getDeclaredFields ()方法

目录 1. 概念2. getFields()方法2. getDeclaredFields()方法4. 总结 1. 概念 反射是Java中一种强大的机制&#xff0c;允许在运行时获取、检查和操作类、方法、字段等信息&#xff0c;而不需要在编译时知道这些信息。 其中字段&#xff08;Field&#xff09;在Java中是类中用…

【精选】vulnhub CTF5 NanoCMS漏洞 (青铜门笔记)

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

微信小程序使用canvas制作海报并保存到本地相册(超级详细)

案例图 分析案例图都有哪些元素 1.渐变背景 2.圆形头像 3.文字 4.文字超出换行 5.图片居中 6.文字居中 7.单位适配 8.弹窗保存图片。因为一个个绘制图形太麻烦所以这里都采用了方法封装。 canvas api介绍 最后有全部代码&#xff0c;复制即用。 data数据 data() {return {myO…

并发程序设计--D1进程的创建和回收

进程和程序内容区别 进程包含的内容&#xff1a; BSS段&#xff1a;存放程序中未初始化的全局变量 数据段&#xff1a;已初始化的全局变量 代码段&#xff1a;程序执行代码 堆&#xff08;heap&#xff09;&#xff1a;malloc等函数分配内存 栈(stack)&#xff1a;局部变量…

升压斩波电路的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 一、升压斩波电路概述 二、升压斩波电路的基本工作原理 5.完整工程文件 1.课题概述 升压斩波电路的simulink建模与仿真&#xff0c;通过双闭环结构实现电池&#xff0c;点击的控制。 2.系统仿真结果 …

复试情报准备

英语自我介绍&#xff0c;介绍完老师会根据你的回答用英语问你问题&#xff0c;比如介绍一下你的本科学校&#xff0c;或者家乡什么的。计网过一遍&#xff0c;会问两道题。接下来是重点&#xff0c;我当时是根据我成绩单&#xff0c;问了我本科学过的科目&#xff0c;比如pyth…

PPT中加入页码

PPT中加入页码 文章目录 简单版本样式更改 简单版本 PPT中插入页码&#xff0c;基础的就是在“插入”选项卡中单机“幻灯片编号”即可 样式更改 然而&#xff0c;就像我们做幻灯片不满足于白底黑字一样&#xff0c;页码也总不能是默认的样式。 比如&#xff0c;在页码下面…

Spring Cloud Gateway 网关整合 Knife4j 4.3 实现微服务接口文档聚合

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

QT小技巧 - 使用QMovie进行gif切帧

简介 使用QMovie 将 gif 进行切帧&#xff0c; magick 进行合并代码 QString gifPath "E:\\workspace\\qt\\gif2imgs\\203526qre64haq3ccoobqi.gif"; // 你的图片QMovie movie(gifPath); movie.setCacheMode(QMovie::CacheNone);qDebug() << movie.frameCou…

31. Ajax

简介 AJAX 是 Asynchronous JavaScript And XML 的简称。直译为&#xff0c;异步的JS和XML。AJAX的实际意义是&#xff0c;不发生页面跳转、异步载入内容并改写页面内容的技术。AJAX也可以简单的理解为通过JS向服务器发送请求。 AJAX这门技术很早就被发明&#xff0c;但是直到…

基于AR+地图导航的景区智慧导览设计

随着科技的飞速发展&#xff0c;智慧旅游已经成为现代旅游业的一个重要趋势。在这个背景下&#xff0c;景区智慧导览作为智慧旅游的核心组成部分&#xff0c;正逐渐受到越来越多游客的青睐。本文将深入探讨地图导航软件在景区智慧导览中的应用&#xff0c;并分析其为游客和景区…

C++中的存储类及其实例

文章目录 0. 语法1. 自动存储类自动存储类对象的属性自动存储类的例子 2. 外部存储类extern存储类对象的属性extern存储类的例子 3. 静态存储类静态存储类的属性静态存储类的例子 4. 寄存器存储类寄存器存储类对象的属性寄存器存储类例子 5. 可变&#xff08;mutable&#xff0…

iMazing2024免费版iOS移动设备管理软件

以自己的方式管理iPhone&#xff0c;让备受信赖的软件为您传输和保存音乐、消息、文件和数据。安全备份任何 iPhone、iPad 或 iPod touch。iMazing 功能强大、易于使用&#xff0c;称得上是 Mac 和 PC 上最好的 iOS 设备管理器。 正在为iTunes繁琐的操作发愁&#xff1f;设备数…

86% 的网络攻击是通过加密渠道进行

自 2022 年以来&#xff0c;HTTPS 威胁增长了 24%&#xff0c;凸显了针对加密通道的网络犯罪策略的复杂性。 制造业连续第二年成为最常受到攻击的行业&#xff0c;教育和政府组织的攻击同比增幅最高。此外&#xff0c;包括恶意 Web 内容和恶意软件负载在内的恶意软件继续主导其…