数据库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、数值型
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
| TINYINT | 1byte | (-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) | 大整数值 |
| BIGINT | 8bytes | (-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元年开始的时间
相关文章:
数据库01_增删改查
1、什么是数据?什么是数据库? 数据:描述事物的符号记录称为数据。数据是数据库中存储的基本对象。数据库:存放数据的仓库,数据库中可以保存文本型数据、二进制数据、多媒体数据等数据 2、数据库的发展 第一阶段&…...
MySQL——进阶篇
二、进阶篇🚩 1. 存储引擎🍆 1.1 MSQL体系结构 连接层: 连接处理,连接认证,每个客户端的权限 服务层: 绝大部分核心功能,可跨存储引擎 可插拔存储引擎: 需要的时候可以添加或拔掉…...
Python 网络编程之搭建简易服务器和客户端
用Python搭建简易的CS架构并通信 文章目录 用Python搭建简易的CS架构并通信前言一、基本结构二、代码编写1.服务器端2.客户端 三、效果展示总结 前言 本文主要是用Python写一个CS架构的东西,包括服务器和客户端。程序运行后在客户端输入消息,服务器端会…...
往年面试精选题目(前50道)
常用的集合和区别,list和set区别 Map:key-value键值对,常见的有:HashMap、Hashtable、ConcurrentHashMap以及TreeMap等。Map不能包含重复的key,但是可以包含相同的value。 Set:不包含重复元素的集合&#…...
解决服务器Tab键不能补全问题
编辑~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml 命令:vim ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml替换:<property name“<Super>Tab” type“string” value“switch_window…...
人工智能 机器学习 深度学习:概念,关系,及区别说明
如果过去几年,您读过科技主题的文章,您可能会遇到一些新词汇,如人工智能(Artificial Intelligence)、机器学习(Machine Learning)和深度学习(Deep Learning)等。这三个词…...
数据库——LAMP的搭建及MySQL基操
1.实验内容及原理 1. 在 Windows 系统中安装 VMWare 虚拟机,在 VMWare 中安装 Ubuntu 系统,并在 Ubuntu 中搭建 LAMP 实验环境。 2. 使用 MySQL 进行一些基本操作: (1)登录 MySQL,在 MySQL 中创建用户,并对…...
抗原设计与兔单B细胞技术的结合-卡梅德生物
随着生物医学研究的不断深入,抗体疗法作为治疗疾病的有力工具逐渐成为研究的焦点。而兔单B细胞技术作为抗体研究的创新方法,其与抗原设计的有机结合为获取定制抗体打开了崭新的创新之路。本文将深入探讨抗原设计与兔单B细胞技术相互融合的原理、优势&…...
在uniapp中使用背景渐变色与背景图不生效问题
list上有文字详情以及背景图,从背景可以看出是渐变色和 背景图片的结合。 因为使用到渐变色,所以要结合 background-blend-mode 属性来实现与背景图片叠加显示,否则只通过 background: linear-gradient(); background-image: url(); 设置不会…...
Java中XML的解析
1.采用第三方开元工具dom4j完成 使用步骤 1.导包dom4j的jar包 2.add as lib.... 3.创建核心对象, 读取xml得到Document对象 SAXReader sr new SAXReader(); Document doc sr.read(String path); 4.根据Document获取根元素对象 Element root doc.getRootElement(); …...
React快速入门之交互性
响应事件 创建事件处理函数 处理函数名常以handle事件名命名 function handlePlayClick() {alert(Playing);}传递事件处理函数 函数名、匿名两种方式! function PlayButton() {function handlePlayClick() {alert(Playing);}return (<Button handleClick{handl…...
浅谈WPF之ToolTip工具提示
在日常应用中,当鼠标放置在某些控件上时,都会有相应的信息提示,从软件易用性上来说,这是一个非常友好的功能设计。那在WPF中,如何进行控件信息提示呢?这就是本文需要介绍的ToolTip【工具提示】内容…...
Android Studio 如何隐藏默认标题栏
目录 前言 一、修改清单文件 二、修改代码 三、更多资源 前言 在 Android 应用中,通常会有一个默认的标题栏,用于显示应用的名称和一些操作按钮。但是,在某些情况下,我们可能需要隐藏默认的标题栏,例如自定义标题栏…...
对于c++的总结与思考
笔者觉得好用的学习方法:模板法 1.采用原因:由于刚从c语言面向过程的学习中解脱出来,立即把思路从面向过程转到面向对象肯定不现实,加之全新的复杂语法与操作,着实给新手学习这门语言带来了不小的困难。所以ÿ…...
Flask 账号详情展示
Flask 账号详情展示 这段代码是一个基于Flask框架的Python应用程序。 它包含了两部分代码:Python代码和HTML代码。 web/templates/common/tab_account.html <div class"row border-bottom"><div class"col-lg-12"><div cla…...
软件测试/测试开发丨Pytest 参数化用例
参数化 通过参数的方式传递数据,从而实现数据和脚本分离。并且可以实现用例的重复生成与执行。 参数化应用场景 测试登录场景 测试登录成功,登录失败(账号错误,密码错误)创建多种账号: 中⽂文账号,英⽂文账号 普通测试用例方法 …...
MATLAB中./和/,.*和*,.^和^的区别
MATLAB中./和/,.*和*,.^ 和^ 的区别 MATLAB中./和/,.*和*,.^ 和^ 的区别./ 和 / 的区别.//实验实验结果 .* 和 * 的区别.**实验实验结果 .^ 和^ 的区别.^n^n实验运行结果 MATLAB中./和/,.和,.^ 和^ 的区别 …...
Flask 与微信小程序对接
Flask 与微信小程序的对接 在 web/controllers/api中增建py文件,主要是给微信小程序使用的。 web/controllers/init.py # -*- coding: utf-8 -*- from flask import Blueprint route_api Blueprint( api_page,__name__ )route_api.route("/") def ind…...
node.js express框架开发入门教程
文章目录 前言一、Express 生成器(express-generator)二、快速安装1.express框架express-generator生成器安装2.使用pug视图引擎创建项目,projectName 为项目名称自定义 三、安装热更新插件 nodemon四、目录结构1. public文件夹2.routes路由其他请求方式…...
Spring系列学习二、Spring框架的环境配置
Spring框架的环境配置 一、Java环境配置二、 Spring框架的安装与配置三、Maven与Gradle环境的配置四、IDE环境配置(Eclipse与IntelliJ IDEA)五、结语 一、Java环境配置 所有编程旅程总是得从基础开始,如同乐高积木大作的基座,首先…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

