Mysql数据库操作总结

news2024/12/28 18:41:55

文章目录

    • 1. DDL(Data Definition Language - 数据定义语言)
      • 1.1 数据库
      • 1.2 数据表(创建+查询+删除)
      • 1.3 数据表(修改)
    • 2. 数据类型
      • 2.1 数值
      • 2.2 字符
      • 2.3 日期
    • 3. 字段约束
      • 3.1 约束
      • 3.2 主键约束修改
      • 3.3 主键自增 + 联合主键
    • 4. DML(Data Manipulation Language - 数据操作语言)
      • 4.1 添加数据
      • 4.2 删除数据
      • 4.3 修改数据
    • 5. DQL(Data Query Language - 数据查询语言)
      • 5.1 查询 + 限制条件(where + and/or)
      • 5.2 结果处理(+/-, as, distinct)
      • 5.3 模糊查询(like)
      • 5.4 结果排序(order by)
      • 5.5 聚合函数(count, max, min, sum, avg)
      • 5.6 日期与字符串函数[now(), sysdate(), concat(), upper()...... ]
      • 5.7 分组(group by) + 分页查询(limit)
    • 6. 数据表关联关系(一对一, 一对多, 多对多)
      • 6.1 关联关系
      • 6.2 外键约束(创建\修改)
      • 6.3 外键约束 ------ 级联
    • 7. 连接查询
      • 7.1 联合查询(join)
      • 7.2 嵌套查询

1. DDL(Data Definition Language - 数据定义语言)

1.1 数据库

## 显示数据库
show databases
## 显示指定数据库创建信息
show create database <database_name>
## 数据库创建
create database <database_name>
## 判断数据库是否存在
create database (if not exists) <database_name>
## 创建数据库同时指定数据库字符集(数据存储编码格式 utf8, gbk)
create database <database_name> character set utf8
## 修改数据库字符集
alter database <database_name> character set utf8
## 删除数据库
drop database (if exists) <database_name>
## 使用/切换数据库
use <database_name>
## 注销数据库
exit

1.2 数据表(创建+查询+删除)

## 创建数据库表
create table <table_name>(
id int unique not null,
name varchar(8) unique
);
## 显示数据表
show tables
## 查询数据表
desc <table_name>
## 删除数据表
drop table [if exists] <table_name>

1.3 数据表(修改)

## 修改表名
alter table <table_name> rename to <new_table_name>
## 修改表的字符集
alter table <table_name> character set utf8
## 添加字段(列)
alter table <table_name> add <column_name> <type>
## 修改字段名和类型
alter table <table_name> change <old_column_name> <new_column_name> <type>
## 修改字段类型
alter table <table_name> modify <column_name> <type>
## 删除字段
alter table <table_name> drop <column_name>

2. 数据类型

2.1 数值

在这里插入图片描述

2.2 字符

在这里插入图片描述

2.3 日期

在这里插入图片描述

3. 字段约束

3.1 约束

## 约束
非空约束(not null) : 值不能为 null, 通常默认为可以非空
唯一约束(unique) : 此列的值不能重复
主键约束(primary key) : 非空 + 唯一, 唯一标识数据表中一条数据
外键约束(foreign key) : 建立不同表间联系

3.2 主键约束修改

———— 主键约束修改
## 创建表时添加主键约束
create table t5(
id int primary key,
name varchar(10)
);
create table t(
id int,
name varchar(10),
primary key(id)
);
## 删除数据表主键约束
alter table <table_name> drop primary key
## 创建表之后添加主键约束
alter table <table_name> modify <column_name> <type> primary key

3.3 主键自增 + 联合主键

## 主键自增(保证唯一性, 不保证连续性)
## 定义 int 类型字段自动增长
id int primary key auto_increment;
## 联合主键(将数据表当中多列组合在一起设置为表的主键)
## 定义联合主键(默认全部为 not null)
create table t(
stu_id int,
cou_id int,
primary key(stu_id, cou_id)
);

4. DML(Data Manipulation Language - 数据操作语言)

4.1 添加数据

## 添加数据 (column_name 顺序可以改变, 对应values位置不能改变)
insert into <table_name>(column_name, column_name, .....) values(?, ?, .....)
## 若添加所有字段, 可以省略column_name, 但是values值与表字段顺序必须对应(通常建议全写)
insert into <table_name> values(?, ?, ?, ......)

4.2 删除数据

## 删除数据
delete from <table_name> where <conditions>
## 删除所有数据
delete from <table_name>

4.3 修改数据

## 修改单行数据, 若无[where condition], 直接修改所有行
update <table_name> set column_name = value [where condition]
## 修改多行数据, 若无[where condition], 直接修改所有行
update <table_name> set column_name = value, column_name = value, ....... [where condition]

5. DQL(Data Query Language - 数据查询语言)

5.1 查询 + 限制条件(where + and/or)

## 基本查询语句
select column_name1, column_name2, ..... from <table_name> [where condition]
select * from <table_name> (开发时不建议使用)
## where条件: 在删除,修改及查询语句之后都可以添加 where 子句(条件), 用于筛选满足特定的数据进行删除,修改,查询操作
-- 等于判断: = 
-- 不等于判断: != / <>
-- 大于判断: >
-- 小于判断: <
-- 大于等于判断: >=
-- 小于等于判断: <=
-- 区间查询, [a, b]区间内: between a and b 
## 多条件查询: 在 where 子句当中通过多个条件通过逻辑运算符(and or)进行连接,通过多个条件筛选要操作的数据
and条件(同时满足): where x and y
or条件(满足其一): where x or y
not取反(范围取反): not between x and y 

5.2 结果处理(+/-, as, distinct)

## 查询指定列
- select <column_name1, column_name2> from <table_name> <where condition>
## 计算列
- select name, id - 1 from <table_name>
## 字段取别名 —— as
select <column_name> as <other_name> from <table_name>
## 将查询结果当中重复记录删除 —— distinct
select distinct <column_name, column_name, ....> from <table_name>

5.3 模糊查询(like)

## LIKE子句 -- where子句条件中, 使用like关键字完成模糊查询
% : 表示任意多个字符
_ : 表示一个字符
## 名字当中含有h : select * from stu where name like ‘%h%' (字母不区分大小写)

5.4 结果排序(order by)

## order by 排序
## 默认 asc 升序排序, desc 按照指定列降序排序
## 按照指定列升序 
select * from <table_name> [where condition] order by column_name asc
## 按照列1升序,再按照列2降序
select * from <table_name> [where condition] order by column_name1 asc, column_name2 desc

5.5 聚合函数(count, max, min, sum, avg)

## SQL中提供了一些可以对查询的记录的列进行计算的函数 —— 聚合函数
## count()函数: 统计满足满足条件指定字段个数
select count(<column_name>) from <table_name> [where condition]
## max()函数: 统计满足满足条件指定字段值的最大值
select max(<column_name>) from <table_name> [where condition]
## min()函数: 统计满足满足条件指定字段值的最小值
select min(<column_name>) from <table_name> [where condition]
## sum()函数; 统计满足满足条件指定字段值的总和
select sum(<column_name>) from <table_name> [where condition]
## avg()函数: 统计满足满足条件指定字段值的平均值
select avg(<column_name>) from <table_name> [where condition]

5.6 日期与字符串函数[now(), sysdate(), concat(), upper()… ]

## 日期函数和字符串函数
## 日期类型(datetime)
## 1. 可以使用字符串赋值,注意格式(yyyy-MM-dd hh:mm:ss)
insert into t(id, name, time) values(2,"hh", "2021-5-21 09:6:21");
## 2. 获取当前系统时间可以使用 now() 或者 sysdate()
insert into t(id, name, time) values(2,"hh", now());
insert into t(id, name, time) values(2,"hh", sysdate());
## 字符串函数:
## 1. concat(column1, column2)函数: 将多列进行连接
select concat(id, '-', name) from t;
## 2. upper(column)函数: 将字符串中字母全部设置为大写
select upper(name) from t;
## 3. lower(column)函数: 将字符串中字母全部设置为小写
select lower(name) from t;
## 4. substring(column, start, len)函数: 指定列当中截取部分长度
select substring(name, 1, 2) from t;

5.7 分组(group by) + 分页查询(limit)

## 分组查询(默认只显示分组后的第一个元素 - 重复元素不再显示)
## select 分组字段/聚合函数 from 表名 [where 条件] group by 分组列名 [having 条件] [order by]
- 1. 先按照 where 条件进行查询记录
- 2. 对查询记录进行分组
- 3. 执行 having 对分组后的数据再进行筛选
- 4. 执行 order by 排序
- select * 通常显示分组后的第一条记录(通常无意义)
- select * from t group by id;
- select 通常用分组字段和对分组字段进行聚合函数(进行相关计算)
- select id, count(id) from t group by id having id >= 3 order by id desc
## 分页查询(limit x, y)
## 查询[x + 1, x + y + 1]
select * from <table_name> [where condition] limit (pagenum - 1)*pagesize, pagesize
select * from <table_name> limit 0, 5;

6. 数据表关联关系(一对一, 一对多, 多对多)

6.1 关联关系

## 一对一关联
-- 1. 两张数据表主键相同的数据相互对应
-- 2. 唯一外键: 任意一张表添加外键约束与另一张表主键关联,并且将外键添加唯一约束(存在且唯一)

在这里插入图片描述

## 一对多关联
-- 1. 在多的一方添加外键,与另一方的主键进行关联

在这里插入图片描述

## 多对多关联
-- 1. 额外创建一张关系表,定义两个外键分别与两个数据表中的主键进行关联

在这里插入图片描述

6.2 外键约束(创建\修改)

## 外键约束
-- 创建表时定义 cid 字段,并添加外键约束
-- cid列要和 course(课程)表当中的 course_id 进行关联,cid字段类型和长度要和course_id保持一致

constraint <外键名> foreign key(列名) references <主表名>(<列名>)

create table <table_name>(
	cid int,
	constraint fk_students_classes foreign key(cid) references courses(course_id)
);
ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);

## 外键约束修改
-- 创建表之后, 为cid字段添加外键约束
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id)
-- 删除外键约束
alter table students drop foreign key fk_students_classes

6.3 外键约束 ------ 级联

## 外键约束-级联

-- 被关联的表当中的主键不能修改和删除(若没有关联信息则可直接修改)

-- 如果一定需要修改班级的id信息(3)
1. 将需要修改class_id对应对应学生记录的cid设置为null
2. 修改想要修改的class_id
3. 将学生表当中cid设置为null的记录重新设置为这个新的class_id
update students set cid = 4 where cid is null;
## 添加外键时同步设置 级联修改 和 级联删除 (修改主表[course]会同步影响副表[students])

-- 去除原有的外键约束
alter table students drop foreign key fk_students_classes
-- 级联修改
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id) on update cascade
-- 级联删除
alter table students add constraint fk_students_classes foreign key(cid) references course(course_id) on delete cascade

7. 连接查询

7.1 联合查询(join)

## join实现多表的联合查询 —— 连接查询
## inner join 内连接(两张数据表的笛卡尔集)
select * from <table_name1> inner join <table_name2> [on condition];

## leftr join 左连接(左表完全显示,若右表有匹配则显示)
select * from <table_name1> left join <table_name2> [on condition];

## right join 右连接(右表完全显示,左表匹配则显示)
select * from <table_name1> right join <table_name2> [on condition];
## where 和 on 设置查询条件

## where过滤: 先生成笛卡尔积再过滤(效率低)
select * from <table_name1> inner join <table_name2> where condition;

## on设置连接查询条件: 先判断是否成立,成立则连接为一条记录
select * from <table_name1> inner join <table_name2> on condition;

7.2 嵌套查询

## 子查询/嵌套查询

## 查询结果(单行单列), 从则可以直接使用关系运算符(=, !=, ...)连接
select * from <table_name> where <column_name> = (select <column_name2> from <table_name2> where ...)

## 查询结果(多行单列)
- 传统方式: 
select * from students where id = 1 union 
select * from students where id = 2 .....
- 子查询方式: in / not in
select * from students where id in (select class_id from classes where ...)

## 查询结果(多行多列): 取别名作为新的表继续使用
select * from (select * from students where cid = 1) <table_别名-t> where t.name = "学生1"

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

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

相关文章

本地搭建svn仓库 + 调试svn hooks

本地搭建SVN仓库 调试svn hooks : 文章目录 本地搭建SVN仓库 调试svn hooks :1. 环境准备&#xff1a;2. 搭建本地仓库的过程&#xff1a;3. 将写好的svn hooks pre-commit.bat放到hooks目录内。4. 创建仓库的本地working copy: 1. 环境准备&#xff1a; 需要安装TortoiseSV…

APP专项测试之——网络测试

软件网络测试考虑四种状态下的测试 1、正常网络 wifi&#xff1a;无线网络情况下&#xff0c;软件可正常使用 流量&#xff1a;手机数据情况下&#xff0c;软件可正常使用 2、弱网 概念&#xff1a;在厕所&#xff0c;电梯&#xff0c;停车场&#xff0c;地下商场等封闭性的…

python 包(模块)制作

文档&#xff1a;Quickstart - setuptools 68.0.0.post20230619 documentation 目录结构 sdk目录里面存放源码 在setup.py所在层级目录下执行如下命令既可生成wheel文件 python setup.py sdist bdist_wheel 上传: 需要把生成的.wheel文件上传到 pypi上&#xff0c;才能使用pi…

优秀的测试用例是如何设计的?

这篇文章我们主要聊一下测试工程师最通用的也是最根本的技能&#xff0c;测试用例的设计能力。 测试用例 测试用例是通过使用在测试计划中确定的测试技术&#xff0c;对于已确定的测试条件进行逐步推敲&#xff0c;精炼而设计出来的重点说明如何具体操作产生何种结果的文档。…

Linux自主学习 - 2

一、gcc编译器 第一个HelloWorld 1、查看当前工作目录/home/yang/coding下为空 2、使用vim写一个C源程序hello.c 进入vim界面后&#xff0c;按下i键进入编辑模式&#xff0c;vim窗口下方出现“INSERT”字样 编辑完成后&#xff0c;先按ESC键退出编辑模式&#xff0c;然后输入:…

onnxruntime推理

pytorch模型训练 这里以pytorch平台和mobilenet v2网络为例&#xff0c;给出模型的训练过程。具体代码如下所示&#xff1a; import os import torchvision.transforms as transforms from torchvision import datasets import torch.utils.data as data import torch import…

Java面试题Class类的理解?创建类的对象的方式?

1.Class类的理解 1.类的加载过程&#xff1a; 程序经过javac.exe命令以后&#xff0c;会生成一个或多个字节码文件(.class结尾)。 接着我们使用java.exe命令对某个字节码文件进行解释运行。相当于将某个字节码文件 加载到内存中。此过程就称为类的加载。加载到内存中的类&…

一起来了解多领域自动采样器的功能特点

多领域自动采样器体积小&#xff0c;便携式设计&#xff0c;功能丰富&#xff0c;操作简便可用于海洋、河流、船舶、沟渠、深井、排污口等多种场景的水样采集&#xff0c;尤其适用于窨井、下水道、沟渠 等空间狭小、现场条件恶劣的工作场合&#xff0c;可以在环保、科研、污水验…

【计算机组成原理】辅助存储器

目录 一、磁盘存储器 二、固态硬盘SSD 三、虚拟存储系统 一、磁盘存储器 大多数计算机外存储器采用磁盘记录&#xff0c;如今正在逐渐被SSD固态硬盘取代 磁表面存储&#xff1a;磁性材料薄层涂在金属或塑料表面做磁载体存储信息 硬磁盘存储器&#xff1a;基底&#xff08;磁…

【深度学习】近万字解读深度学习领域有哪些瓶颈?

文章目录 一、导读二、深度学习缺乏理论支撑三、领域内越来越工程师化思维四、对抗样本是深度学习的问题&#xff0c;但不是深度学习的瓶颈五、知乎网友的回答5.1 作者&#xff1a;Giant5.2 作者&#xff1a;知乎用户5.3 作者&#xff1a;何之源 一、导读 虽然深度学习在图像、…

Java去掉 txt 文件中的空格空行【代码记录】

文章目录 1、需求2、代码3、结果 1、需求 2、代码 package com.zibo.main;import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern;public cla…

外卖商城平台微信小程序 后端ssm

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 外卖商城平台微信小程序 前言一、组织结构二、使用步骤1.后端登录代码2.运行截图 源代码 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 本外卖商城…

windows 快速删除node_modules文件夹

rmdir /Q /S 目录 删除文件夹&#xff08;非空&#xff09; /S 除目录本身外&#xff0c;还将删除指定目录下的所有子目录 /Q 安静模式&#xff0c;带 /S 删除目录树时不要求确认

救援模式 单用户模式

救援模式 救援模式是一种在 Linux 操作系统中用于故障排除和修复的特殊启动模式。它可以提供一些基本的系统功能&#xff0c;以便在出现问题时可以对系统进行诊断和修复。 救援模式通常会加载最小的系统资源和驱动程序&#xff0c;以确保在系统出现故障的情况下仍然可以正常启…

异常—javaSE

文章目录 1.概念和结构体系1.1概念1.2结构体系 2.常见异常类型2.1空指针异常2.2数组越界异常2.3算数异常 3.异常的分类3.1编译时异常3.2运行时异常 4.异常的处理4.1防御式编程4.2异常的抛出4.3异常的捕获4.3.1异常申明throws4.3.2try-catch捕获并处理异常4.3.3finally 4.4异常的…

【ubuntu】【vmware tools】设置共享目录

1、现象 ubuntu 22 vmware 16&#xff0c;安装后会发现 “Reinstall VMware Tools…” 灰色不可用。如图&#xff1a; 2、原因分析 ubuntu 22 ISO 内不再提供 VMware Tools 的安装包&#xff0c;未检测到所以灰色不可用 在 Ubuntu 22 上挂载 Windows HGFS 共享目录&#xff…

Linux系统之部署Teleport堡垒机系统

Linux系统之部署Teleport堡垒机系统 一、Teleport介绍1.1 Teleport简介1.2 Teleport特点1.3 支持操作系统 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署teleport服务端4.1 创建部署目录4.2 下载t…

Sqoop初认识及安装

Sqoop初认识及安装 文章目录 Sqoop初认识及安装Sqoop简介Sqoop原理安装前置条件镜像地址上传安装包解压修改配置文件重命名配置文件 拷贝JDBC驱动验证Sqoop测试Sqoop是否能够成功连接数据库 Sqoop简介 Sqoop是一款开源的工具&#xff0c;主要用于在Hadoop(Hive)与传统的数据库…

redis高可用集群搭建

redis高可用集群搭建 redis的安装配置允许远程访问重启服务检查服务是否启动架构图开始搭建集群安装ruby创建集群高可用测试redis集群的扩展将7号机添加为新的master节点添加从节点删掉一个slave节点删除master节点 redis的安装 sudo apt-get install redis-server配置允许远程…

引进吸收再消化,可借鉴的产业超车模式探索

近期&#xff0c;C919大型客机顺利开启商业首航&#xff0c;这也标志着坐国产大飞机出行的时代来了&#xff01;C919是我国首次按照国际适航标准自行研制、具有自主知识产权的喷气式干线客机&#xff0c;它的商用飞行也象征着我国对波音、空中客车等大型客机企业垄断地位的一次…