MySQL - 数据库基础操作

SQL语句

结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。

分类

  • DDL
    • 数据定义语言(Data Definition Language),定义对数据库对象(库、表、列、索引)的操作。
  • DML
    • 数据操作语言(Data Manipulation Language),定义对数据库记录的操作。
  • DQL
    • 数据查询语言(Data Query Language)。
  • DCL
    • 数据控制语言(Data Control Language),定义对数据库、表、字段、用户的访问权限和安全级别。

书写规范

  • 在数据库系统中,SQL语句不区分大小写(关键字建议用大写) 。
  • 字符串常量区分大小写。
  • SQL语句可单行或多行书写,以分号“;”结尾。
  • 关键词不能跨多行或简写。
  • 用空格和缩进来提高语句的可读性。
  • 子句通常位于独立行,便于编辑,提高可读性。
  • 注释
    • SQL标准:多行注释使用”/**/“;单行使用“-- ”。
    • MySQL:“#”。

数据库操作

编码问题

  • 早期MySQL为了兼容像中文这种符号,提供了utf8编码。
  • 现在因为表情包已经需要使用第四个字节存储,所以,utf8不建议使用了,建议使用另一种真正的Unicode编码 — utf8mb4。

MySQL自带的数据库

  • Information_schema

    • 主要存储了系统中的一些数据库对象信息,如用户表信息、列信息、权限信
      息、字符集信息、分区信息等。(数据字典表)
  • performance_schema

    • 主要存储数据库服务器的性能参数。
  • mysql

    • 存储了系统的用户权限信息及帮助信息。
  • sys

    • MySQL5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema和performance_schema结合起来,查询出更加令人容易理解的数据。
  • test

    • 系统自动创建的测试数据库,任何用户都可以使用。

创建数据库

  • -- 创建数据库。
    CREATE DATABASE 数据库名称;
    
  • -- 创建数据库,同时指定编码。
    CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET 编码;
    
  • -- 创建数据库,同时指定编码和排序规则。
    CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET 编码 COLLATE 排序规则;
    

查询当前处于哪一个数据库

SELECT DATABASE();

查看数据库版本

SELECT VERSION();

查看当前用户

SELECT USER();

以查询SQL语句的方式查看数据库

SHOW CREATE DATABASE 数据库名;

删除数据库

DROP DATABASE 数据库名;-- 一般加上if exists语句,意为如果存在才删除,可以防止报错。
DROP DATABASE IF EXISTS 数据库名;

数据库表操作

创建表

-- 语法。
CREATE TABLE 表名 (字段1 数据类型 [约束条件],字段2  数据类型 [约束条件],……字段n 数据类型 [约束条件]
);-- 同样可以添加判断语句。
CREATE TABLE IF NOT EXISTS 表名 (字段1 数据类型 [约束条件],字段2  数据类型 [约束条件],……字段n 数据类型 [约束条件]
);

查询表中的所有数据

SELECT * FROM 表名;

向表中插入数据

INSERT INTO 表名 VALUES(字段1数据, 字段2数据,  ……,  字段n数据);
-- 这种数据添加方式具有一定缺点,数据的顺序和数量要和字段一样。
INSERT INTO 表名(字段1, 字段n) VALUES(字段1数据, 字段n数据);
-- 这样可以只用输入前面写了字段的数据,没写的其他字段有默认值的取默认值,没有的默认为NULL。

查看表结构

DESC 表名;
-- 此处desc是describe的缩写。
-- 故可以这样写:
DESCRIBE 表名;

以查询SQL语句的方式查看表结构

SHOW CREATE TABLE 表名;

在查询语句后面以 “\G” 结尾,表示纵向显示每行记录。但如果以\G结尾,就不必在语句后加分号了。

删除数据库表

DROP TABLE 表名;
-- 仍然可以加上判断语句
DROP TABLE IF EXISTS 表名;

数据类型

数据库用来存储数据的,而数据存在很多类型,因此MySQL数据提供了很多类型,供开发者使用。

MySQL中的主要数据类型

  • 文本(Text)

    • 数据类型描述
      CHAR(size)保存固定长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的长度。最多 255 个字符。
      VARCHAR(size)保存可变长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的最大长度。最多 255 个字 符。 如果值的长度大于 255,则被转换为 TEXT 类型。
      TINYTEXT存放最大长度为 255 个字符的字符串。
      TEXT存放最大长度为 65535 个字符的字符串。
      BLOB用于 BLOBs (Binary Large OBjects)。存放最多 65535 字节的数据。
      MEDIUMTEXT存放最大长度为 16777215 个字符的字符串。
      MEDIUMBLOB用于 BLOBs (Binary Large OBjects)。存放最多 16777215 字节的数据。
      LONGTEXT存放最大长度为 4294967295 个字符的字符串。
      LONGBLOB用于 BLOBs (Binary Large OBjects)。存放最多 4294967295 字节的数据。
      ENUM(x,y,z,etc.)允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。 这些值是按照输入的顺序存储的。
      SET与 ENUM 类似, SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。
  • 数字(Number)

    • 数据类型描述
      TINYINT(size)-128 到 127 常规。 0 到 255 无符号。在括号中规定最大位数。
      SMALLINT(size)-32768 到 32767 常规。 0 到 65535 无符号。在括号中规定最大位数。
      MEDIUMINT(size)-8388608 到 8388607 普通。 0 到 16777215 无符号。在括号中规定最大位数。
      INT(size)-2147483648 到 2147483647 常规。 0 到 4294967295 无符号。在括号中规定最大位数。
      BIGINT(size)-9223372036854775808 到 9223372036854775807 常规。 0 到18446744073709551615 无符号。在括号中规定最大位数。
      FLOAT(size,d)带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
      DOUBLE(size,d)带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
      DECIMAL(size,d)作为字符串存储的 DOUBLE 类型,允许固定的小数点。
  • 日期/时间(Date)

    • 数据类型描述
      DATE()日期。格式: YYYY-MM-DD 注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’
      DATETIME()日期和时间的组合。格式: YYYY-MM-DD HH:MM:SS 注释:支持的范围是’1000-01-01 00:00:00’ 到 ‘9999-12- 31 23:59:59’
      TIMESTAMP()时间戳。 TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的描述来存储。格式: YYYY-MM-DD HH:MM:SS
      注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC
      TIME()时间。格式: HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’
      YEAR()2 位或 4 位格式的年。
      注释: 4 位格式所允许的值: 1901 到 2155。 2 位格式所允许 的值: 70 到69,表示从 1970 到 2069

数据库约束

约束是在表上强制执行的数据校验规则。

大部分数据库支持下面五类完整性约束:

  • 主键约束

    • 从功能上看相当于非空且唯一,一个表中只允许一个主键,主键是表中唯一确定一行数据的字段。常在表中添加id字段作为主键。

    • 一般建议主键采用“int类型”(id),一般建议由数据库自身维护这个字段的值。

    • 当建立主键约束时,MySQL为主键创建对应的索引,称为主键索引,主键约束名总为PRIMARY。

    • 创建方式

      • CREATE TABLE 表名 (id int PRIMARY KEY
        );
        -- 创建后id字段的值强制非空且唯一,不满足条件的数据插入行为将会报错。
        
      • -- 我们一般将id作为主键,赋予自增的能力。
        CREATE TABLE 表名 (id int PRIMARY KEY AUTO_INCREMENT
        );
        -- 这样写,表示插入一条数据,该数据的id字段默认为上一条数据的id值加1。需要注意的是,既使数据添加失败,id字段也会自增。
        -- 自增情况下,存在自增的字段在添加数据时可以直接写DEFAULT或者NULL。
        
      • -- 除上述主键约束写法外,还存在一种写法。
        CREATE TABLE 表名 (id int AUTO_INCREMENT,PRIMARY KEY(id)
        );
        
  • 唯一约束

    • 唯一约束的作用,是保证该字段的值是唯一的。

    • 唯一性约束条件的字段允许出现一个NULL。

    • 同一张表内可建多个唯一约束。

    • 唯一约束可由多列组合而成。

    • 建唯一约束时MySQL会为之建立对应的索引,称为唯一索引。

    • 如果不给唯一约束起名,该唯一约束默认与列名相同。

    • 两种创建方式

      • CREATE TABLE 表名 (字段 数据类型 UNIQUE
        );
        
      • CREATE TABLE 表名 (字段 数据类型,UNIQUE(字段)
        );
        
  • 默认值约束

    • 给予给定的字段默认值。

    • 创建方式

      • CREATE TABLE 表名 (字段 数据类型 DEFAULT 默认值
        );
        
  • 非空约束

    • 不允许字段的值为空。

    • 创建方式

      • CREATE TABLE 表名 (字段 数据类型 NOT NULL
        );
        
  • 外键约束

    • 用于确保数据完整性和实现表之间关系的一种数据库对象。

MySQL8以后支持检查约束,之前的版本不生效,写了也不报错。

  • 检查约束

    • 添加数据时检查添加数据是否符合给定条件,不符合不允许添加。

    • 两种创建方式

      • CREATE TABLE 表名 (字段 数据类型 CHECK(字段 IN (数据1, 数据2, ……))
        );
        
      • CREATE TABLE 表名 (字段 数据类型,字段 ENUM(数据1, 数据2, ……)
        );
        

修改表的结构

修改字段(列)数据类型

ALTER TABLE 表名 MODIFY 字段 数据类型;
-- 注意存在数据的情况下,修改不一定能成功,因为存在修改的数据类型与表中该字段中存在的数据的数据类型不符等情况。

在表中增加字段(列)

ALTER TABLE 表名 ADD 字段 数据类型;

删除字段(列)

ALTER TABLE 表名 DROP 字段;

修改字段(列)名

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;

更改表名(两种方案)

ALTER TABLE 旧表名 RENAME 新表名;
RENAME TABLE 旧表名 TO 新表名;

复制表结构和内容

复制表结构(两种方法)

-- 在create table语句的末尾添加like子句,可以将源表的表结构复制到新表中。
CREATE TABLE 新表 LIKE 源表;
-- 在create table语句的末尾添加一个select语句,可以实现将想要的源表的表记录及其字段结构拷贝到新表中。
CREATE TABLE 新表 SELECT */关键字 FROM 源表;

复制表内容

-- 已经存在一张机构一致的表,复制数据。
INSERT INTO 新表 SELECT * FROM 原表;

注意

  • 如果直接复制表结构,则会默认将约束也一起复制。
  • 如果复制表结构的同时,复制数据,则不会复制约束。

数据库字典

由information_schema数据库负责维护。

  • tables
    • 存放数据库里所有的数据表、以及每个表所在数据库。
  • schemata
    • 存放数据库里所有的数据库信息。
  • views
    • 存放数据库里所有的视图信息。
  • columns
    • 存放数据库里所有的列信息。
  • triggers
    • 存放数据库里所有的触发器。
  • routines
    • 存放数据库里所有存储过程和函数。
  • key_column_usage
    • 存放数据库所有的主外键。
  • table_constraints
    • 存放数据库全部约束。
  • statistics
    • 存放了数据表的索引。

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

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

相关文章

JVM类加载过程详解

文章目录 前言1.加载2.链接验证文件格式验证元数据验证字节码验证符号引用验证 准备解析 3.初始化4.类卸载 前言 类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:加载(Loading)、验证&a…

python之并发编程

并发编程介绍 串行、并行与并发的区别 进程、线程、协程的区别 1. 进程 (Process) 定义:进程是操作系统为运行中的程序分配的基本单位。每个进程都有独立的地址空间和资源(如内存、文件句柄等)。特点: 进程是资源分配的基本单位…

批量优化与压缩 PPT,减少 PPT 文件的大小

我们经常能够看到有些 PPT 文档明明没有多少内容,但是却占用了很大的空间,存储和传输非常的不方便,这时候通常是因为我们插入了一些图片/字体等资源文件,这些都可能会导致我们的 PPT 文档变得非常的庞大,今天就给大家介…

centos 7 LVM管理命令

物理卷(PV)管理命令 pvcreate:用于将物理磁盘分区或整个磁盘创建为物理卷。 示例:sudo pvcreate /dev/sdb1 解释:将 /dev/sdb1 分区创建为物理卷。 pvdisplay:显示物理卷的详细信息,如大小、所属…

b站视频提取mp4方案

引言 对于b站视频,有些视频是不能提取字幕的,所以我们想把对应的视频下载下来,然后进行对应的本地处理,获得所需的自由处理,吞食视频。 整体思路 下载b站客户端 ----> 把缓存路径修改------> 下载所需视频---…

springboot在feign和线程池中使用TraceId日志链路追踪(最终版)-2

文章目录 简述问题feign调用时给head加入traceIdFeignConfig配置FeignConfig 局部生效feign拦截器和配置合并为一个文件(最终版)feign异步调用拦截器配置[不常用] 使用TTL自定义线程池为什么需要TransmittableThreadLocal? 总结参考和拓展阅读…

MySQL数据库单表与多表查询

一.单表查询 1.创建用于数据查询的数据库表 CREATE TABLE worker (部门号 int(11) NOT NULL,职工号 int(11) NOT NULL,工作时间 date NOT NULL,工资 float(8,2) NOT NULL,政治面貌 varchar(10) NOT NULL DEFAULT 群众,姓名 varchar(20) NOT NULL,出生日期 date NOT NULL,PRIM…

海外紧固件市场格局与发展趋势研究报

一、引言 紧固件作为各类机械装备、建筑结构以及电子设备中不可或缺的基础性零部件,在国民经济的各个领域都有着广泛应用。其市场动态与全球经济发展态势以及各行业的兴衰紧密相连。在全球化进程不断加速、产业分工日益精细的大背景下,深入研究海外紧固…

【多学科稳定EI会议大合集】计算机应用、通信信号、电气能源工程、社科经管教育、光学光电、遥感测绘、生物医学等多学科征稿!

在当今科技高速发展的时代,多学科领域的学术交流与融合显得尤为重要。以下是稳定EI会议合集,涵盖计算机、信息通信、电气能源、社科经管教育、光学遥感、生物医学等多个学科领域。 会议皆已通过国际知名出版社出版审核,EI检索稳定&#xff0…

【深度学习新浪潮】展平RVQ技术详解

展平 RVQ(Flattened Residual Vector Quantization)是一种基于矢量量化(Vector Quantization, VQ)的技术,主要用于高效地表示和压缩数据(例如图像、音频或文本嵌入)。它结合了**残差矢量量化(Residual Vector Quantization, RVQ)**的思想与“展平”操作,从而进一步优…

【第23节】windows网络编程模型(WSAEventSelect模型)

目录 引言 一、WSAEventSelect模型概述 二、 WSAEventSelect模型的实现流程 2.1 创建一个事件对象,注册网络事件 2.2 等待网络事件发生 2.3 获取网络事件 2.4 手动设置信号量和释放资源 三、 WSAEventSelect模型伪代码示例 四、完整实践示例代码 引言 在网…

LlamaFactory部署及模型微调【win10环境】

1.Llama-Factory简介 LLaMA-Factory,全称 Large Language Model Factory,旨在简化大模型的微调过程,帮助开发者快速适应特定任务需求,提升模型表现。它支持多种预训练模型和微调算法,适用于智能客服、语音识别、机器翻…

Jmeter简介、学习目标及安装启动

1. 简介 JMeter 是 Apache 组织使用 Java 开发的一款测试工具:可以用于对服务器、网络或对象模拟巨大的负载;通过创建带有断言的脚本来验证程序是否能返回期望的结果。 1)优点:开源、免费;跨平台;支持多协…

无参数读文件和RCE

什么是无参数? 无参数(No-Argument)的概念,顾名思义,就是在PHP中调用函数时,不传递任何参数。我们需要利用仅靠函数本身的返回值或嵌套无参数函数的方式,达到读取文件或远程命令执行&#xff0…

细胞内与细胞间网络整合分析!神经网络+细胞通讯,这个单细胞分析工具一箭双雕了(scTenifoldXct)

生信碱移 细胞间-细胞内通讯网络分析 scTenifoldXct,一种结合了细胞内和细胞间基因网络的计算工具,利用 scRNA-seq 数据检测细胞间相互作用。 单细胞 RNA 测序(scRNA-seq)能够以稳健且可重复的方式同时收集数万个细胞的转录组信息…

怎么处理 Vue 项目中的错误的?

一、错误类型 任何一个框架,对于错误的处理都是一种必备的能力 在Vue 中,则是定义了一套对应的错误处理规则给到使用者,且在源代码级别,对部分必要的过程做了一定的错误处理。 主要的错误来源包括: 后端接口错误代码中本身逻辑错误二、如何处理 后端接口错误 通过axi…

05.AI搭建preparationの(transformers01)BertTokenizer实现分词编码

一、下载 bert-base-chinese镜像下载 二、简介作用: 模型每个参数占用的字节大小模型大小模型大小层数头数GPT-14 个字节的 FP32 精度浮点数117M446MB1212GPT-22 个字节的 FP161.5亿到1.75亿0.5GB到1.5GB4816GPT-32 个字节的 FP161.75万亿(17500亿&a…

工业4G路由器赋能智慧停车场高效管理

工业4G路由器作为智慧停车场管理系统通信核心,将停车场内的各个子系统连接起来,包括车牌识别系统、道闸控制系统、车位检测系统、收费系统以及监控系统等。通过4G网络,将这些系统采集到的数据传输到云端服务器或管理中心,实现信息…

git 基础操作

1. git 的安装 与 卸载 1.1. git 的安装 判断是否安装 git git --version 安装 git: centos: sudo yum -y install git ubuntu: sudo apt-get install git -y windows: 3.安装git和图形化界面工具_哔哩哔哩_bilibili 1.2. git 的卸载 判断是否安装 git git --version…

【计算机网络】计算机网络协议、接口与服务全面解析——结合生活化案例与图文详解

协议、接口与服务 导读一、协议1.1 定义1.2 组成 二、接口三、服务3.1 定义3.2 服务与协议的区别3.3 分类3.3.1 面向连接服务于无连接服务3.3.2 可靠服务和不可靠服务3.3.3 有应答服务和无应答服务 结语 导读 大家好,很高兴又和大家见面啦!!…