mysql 增删改查 数据库基本操作

mysal 数据库基本操作

1,库相关

创建数据库

create database 库名;

查看有哪些数据库

show databases;

结构性删除数据库

drop database 库名;

查看数据库基本信息(字符集)

show create database 库名;

更改数据库字符集

alter database 库名 character set 字符集;

切换(进入)数据库

use 库名;

查看当前所在的数据库

select database();

2,表的基本命令

创建表

create table 表名 (字段 字段类型,字段 字段类型);
或
create table 表名 (字段 字段类型 表约束,字段 字段类型);
create table 表名 (字段 字段类型,字段 字段类型,表约束(指定字段));

查看有那些表

show tables;

查看表的基本信息

show create table 表名;

查看表的字段信息

desc 表名;

修改字段名

alter table 表名 change 旧字段名 新字段名 字段类型;
#修改之后可能会使表的某些字段信息发生改变 desc一下对比一下

修改字段数据类型

alter table 表名 modify 字段名 字段类型;

增加字段

alter table 表名 add 字段名 字段类型;

删除字段

alter table 表名 drop 字段名;

删除表

drop table 表名;

插入数据

insert into 表名 (字段,字段) values(值,值);
#注意字段类型

同时插入多条数据

insert into 表名 (字段,字段)values(值,值)(值,值);

更新数据

update 表名 set 字段名=值,字段名=值 wehere 字段=值;
# where 末尾 为指定条件 相当于指定修改哪一行的数据

更新全部数据

update 表名 set 字段=值;

查询表所有数据

select * from 表名;

查询指定字段

select 字段,字段 from 表名;
#必须以逗号分隔 否则只能查出最后一个字段
#select可以用于书写常数 用于标记 命令如下
#select 字段,'值' from 表名;

查询结果中过滤重复数据

select distinct 字段名 from 表名;

算数运算符查询

例句
select 字段,age+5 from 表名;
查询十年后的年龄

删除数据

delete from 表名 where 字段=值;
# where 末尾 相当于指定删除某一行
DROP TABLE IF EXISTS 表名;
#IF EXISTS 子句用于在尝试删除表之前检查表是否存在 表存在 则将执行删除操作 表不存在 则不会出现错误

删除全部数据

delete from 表名;

TRUNCATE和DETELE的区别 TRUNCATE和DETELE都能实现删除表中的所有数据的功能,但两者也是有区别的:

DELETE语句后可跟WHERE子句,可通过指定WHERE子句中的条件表达式只删除满足条件的部分记录;但是,TRUNCATE语句只能用于删除表中的所有记录。

使用TRUNCATE语句删除表中的数据后,再次向表中添加记录时自动增加字段的默认初始值重新由1开始;使用DELETE语句删除表中所有记录后,再次向表中添加记录时自动增加字段的值为删除时该字段的最大值加1

DELETE语句是DML语句,TRUNCATE语句通常被认为是DDL语句

3,表约束

PRIMARY KEY 主键约束用于唯一标识对应的记录

FOREIGN KEY 外键约束

NOT NULL 非空约束

UNIQUE 唯一性约束

DEFAULT 默认值约束,用于设置字段的默认值

设置主键

创建时设置 参考表创建

非空约束

创建时设置 参考表创建

默认值约束

创建时设置 参考表创建 约束后跟 默认值便可

唯一性约束

创建时设置 参考表创建

外键约束

ALTER TABLE 从表名
ADD CONSTRAINT 外键名
FOREIGN KEY (从表字段名)
REFERENCES 主表名 (字段名);

#外键约束字段类型必须一致否则无法成功

#注意主从两表数据一致性问题 通常从表外键为主表主键

删除外键

ALTER TABLE 表名 
DROP FOREIGN KEY 外键名;

4,函数

只有SELECT子句和HAVING子句 ORDER BY子句中能够使用聚合函数

在WHERE子句中使用聚合函数是错误的

统一语法 select 函数(字段) from 表名;

count()

统计表中数据的行数或者统计指定列其值不为空的数据个数

例句
select count() from 表名;

max()

计算指定列的最大值 指定列是字符串类型则会使用字符串拍寻运算

例句
select max(age) from 表名;
查询年纪最大的

min()

计算指定列最小值

sum()

计算指定列的数值和 指定列类型不是数值类型则计算结果会为零

select sum(字段) from 表名;

avg()

计算指定列的平均值

拓展

时间函数

SELECT NOW();查询会返回当前日期和时间
SELECT DAY (NOW());查询会返回当前日期是这个月的第几天
SELECT DATE (NOW());查询会返回当前日期,不包括时间部分
SELECT TIME (NOW());查询会返回当前时间,不包括日期部分
SELECT YEAR (NOW());查询会返回当前年份
SELECT MONTH (NOW());查询会返回当前月份
SELECT CURRENT_DATE();查询与 SELECT DATE(NOW()); 的效果是一样的,都是返回当前日期,不包括时间部分
SELECT CURRENT_TIME();查询与 SELECT TIME(NOW()); 的效果是一样的,都是返回当前时间,不包括日期部分
SELECT CURRENT_TIMESTAMP();查询与 SELECT NOW(); 的效果是一样的,都是返回当前日期和时间
SELECT ADDTIME('14:23:12','01:02:01');查询会将两个时间相加,返回一个时间值
SELECT DATE_ADD(NOW(),INTERVAL 1 DAY);查询会将当前日期加上一个指定的时间间隔(1 天),返回新的日期值
SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH);查询会将当前日期加上一个指定的时间间隔(1 个月),返回新的日期值
SELECT DATE_SUB(NOW(),INTERVAL 1 DAY);查询会将当前日期减去一个指定的时间间隔(1 天),返回新的日期值
SELECT DATE_SUB(NOW(),INTERVAL 1 MONTH);查询会将当前日期减去一个指定的时间间隔(1 个月),返回新的日期值
SELECT DATEDIFF('2019-07-22','2019-05-05');查询会计算两个日期之间的天数差

字符串函数

--连接函数 CONCAT 函数用于将两个或多个字符串连接在一起
SELECT CONCAT ()
--INSTR 函数用于返回子字符串在字符串中第一次出现的位置
SELECT INSTR ();    
例句select instr ('字段','值'); 查看该值在字符串中第一次出现的位置
--统计长度 LENGTH 函数用于返回字符串的长度
SELECT LENGTH();

数字函数

-- 绝对值
SELECT ABS(-136);
-- 向下取整
SELECT FLOOR(3.14);
-- 向上取整
SELECT CEILING(3.14);

#拓展 有些()内的值可以加上' '防止出错

5,条件查询

条件查询关系运算符

= 等于

<> 不等于

!= 不等于

< 小于

>大于

<= 小于等于

>=大于等于

 select * from  表名 where 字段>值;
​
•       查询表里所有大于指定值的值

IN关键字查询

select * from 表名 where 字段 in ('值','值');
•       查询表里所有指定的值
•       in前面加 not 为取反

BETWEEN AND 范围查询

select * from 表名 where 字段 between 值 and 值;
•       查询两值之间的信息
•       between前加not 为取反

STUDENT 空值查询

select * from 表名 where 字段 is null;
•       查询为空的值
•       null前加not 为取反

AND和 关键字查询

        多个条件之间加 and 可以多条件查询

OR或 关键字查询

        多个条件之间加 or 为或查询

LIKE匹配查询

select * from 表名 where 字段 like '值';
•       查询匹配该值的数据
通配符
%

%用于匹配任意长度的字符串 字符串“ab%”匹配以字符ab开始任意长度的字符串

'%值'匹配以值结尾的数据

_

_ 下划线通配符只匹配单个字符 如果要匹配多个字符 需要连续使用多个下划线通配符

LIMIT限制查询结果的数量

SELECT * FROM 表名 ORDER BY 字段 ASC LIMIT 3;
#以升序查询表中符合条件的三条数据
SELECT * FROM 表名 ORDER BY 字段 DESC LIMIT 5;
#以降序查询表中符合条件的五条数据

升降序

SELECT * FROM 表名 ORDER BY 字段 ASC; 升序
SELECT * FROM 表名 ORDER BY 字段 DESC; 降序

GEOUP BY 分组查询

select 函数,字段名 from 表名 group by 字段名;
#例
select count(*),gender from student group by gender; 统计各数值数量 结果如下

select 函数,字段名 from 表名 where 字段>数值 group by 字段;
#查询字段大于数值的记录 结果如下

拓展 having 后跟函数进行判断也可以进行筛选查询记录

6,别名设置

表的别名
select * from 表名 as 表的别名 where 条件;
字段别名
select 字段 as 字段别名,字段 as 字段别名 from 表名 where 条件;

7,表的关联关系

关联查询

数据必须具有关联性

select * from 表名a where 字段a=(select 字段b from 表名b where 条件);
#该命令查询  查询表a里所有符合条件的 字段a=(查询表b中符合条件的字段b)
关联删除数据
delete from 表名a where 字段a=(select 字段b from 表名b where 条件);

8,多表联查

表之间必须具有一定的关联性

交叉连接

select * from 表a CROSS JOIN 表b;

内连接查询

显示满足所有条件的记录

select 表1.字段1,表2.字段2,表2.字段3 from inner join 表2 on 表1.字段1=表2.字段3;
#以表1字段1和表2字段3作为连接 显示表1字段1 表2字段2 表2字段3 

外连接查询

显示一个表的所有数据和另一个表的符合条件的数据

SELECT 查询字段1,查询字段2, ... FROM 表1 LEFT | RIGHT [OUTER] JOIN 表2 ON 表1.关系字段=表2.关系字段 WHERE 条件

左连接(重在记录 而不只是字段)

LEFT [OUTER] JOIN 左(外)连接:返回包括左表中的所有记录和右表中符合连接条件的记录

select 表1.字段1,表2.字段2,表2,字段3 from 左表名 left outer join 表名 on 表1.字段1=表2.字段3;
#会显示左表的所有记录和符合条件的记录 无值会显示空
#select 后面跟的是显示字段 左右连接侧重的是记录 on 后面跟的是连接条件(表之间的共性)
右链接
select 表1.字段1,表2.字段2,表2.字段3 from 表名 right outer join 右表名 on 表1.字段1=表2.字段3;

9,子查询

在执行查询时,首先会执行子查询中的语句,再将返回的结果作为外层查询的过滤条件

select * from 表名a where 字段a=(select 字段b from 表名b where 条件);
#该命令查询  查询表a里所有符合条件的 字段a=(查询表b中符合条件的字段b)
带运算符的子查询
带exists关键字的子查询

exists关键字后面的参数可以是任意一个子查询 当返回结果为真时 才会执行

带any关键字的子查询

表示满足任意一个条件就返回一个结果作为外层查询条件

如 子查询中有一个满足的 就会返回所有需要显示的字段和记录

带all关键字的子查询

表示查询的结果需要满足所有内查询的条件才会返回结果

如 查询大于子查询结果的 会显示出所有大于的

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

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

相关文章

人工智能AI与3D视觉技术的结合正在引领新一代移动机器人的革新

随着科技的飞速发展&#xff0c;人工智能AI与3D视觉技术的结合正在引领新一代移动机器人的革新。富唯智能移动机器人&#xff0c;以其独特的3D视觉技术&#xff0c;赋予了移动机器人一双“智慧之眼”&#xff0c;从而为现代工业自动化带来了前所未有的突破。 富唯智能移动机器…

自制c++题目《模板综合》

1.输出结果&#xff1a; 2.主函数不允许改变 int arr[5] { 5,2,3,1,4}; char arr1[5] { a,c,b,e,d }; good <int>a(arr,5); good <char>b(arr1,5); bad<int>(1,2); bad<float>(1.1, 1.2); 自制c题目《模板综合》 王赫辰/c语言 - Gitee.com

【深度学习】各领域常用的损失函数汇总(2024最新版)

目录 1、L1 损失、平均绝对误差&#xff08;L1 Loss、Mean Absolute Error&#xff0c;MAE&#xff09; 2、L2 损失、均方误差&#xff08;L2 Loss、Mean Squared Error&#xff0c;MSE&#xff09; 3、交叉熵损失&#xff08;Cross-Entropy Loss&#xff09; 4、混合损失&…

Music!18+免费音乐搜索、音乐下载网站合集!

划到最后“阅读原文”——领取工具包&#xff08;超过1000工具&#xff0c;免费素材网站分享和行业报告&#xff09; Hi&#xff0c;我是胡猛夫~&#xff0c;专注于分享各类价值网站、高效工具&#xff01; 更多内容&#xff0c;更多资源&#xff0c;欢迎交流&#xff01;公 号…

深度学习课程实验一浅层神经网络的搭建

一、 实验目的 1、学习如何建立逻辑回归分类器用来识别猫。将引导你逐步了解神经网络的思维方式&#xff0c;同时磨练我们对深度学习的直觉。&#xff08;说明&#xff09;&#xff1a;除非指令中明确要求使用&#xff0c;否则请勿在代码中使用循环&#xff08;for / while&am…

使用Go语言实现RESTful API

RESTful架构是一种设计风格&#xff0c;用于构建网络应用程序的API。它基于HTTP协议&#xff0c;并使用不同的HTTP方法&#xff08;如GET、POST、PUT、DELETE等&#xff09;来处理不同的操作。在Go语言中&#xff0c;我们可以使用标准库中的net/http包来实现RESTful API。 下面…

申请域名SSL证书并自动推送至阿里云 CDN

近期国外SSL证书厂商调整了免费证书的续签规则&#xff0c;一年期的证书全部取消&#xff0c;现在只能申请90天有效期的免费证书。普通web站点可以通过宝塔面板或部署acme.sh等证书自动管理工具来实现自动化申请和部署&#xff0c;但是阿里云之类的CDN服务就只能通过手动或Open…

力扣刷题-二叉树-构建树

106.从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 中序遍历 inorder [9,3,15,20,7] 后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&#xff1a; 思路 参考&#xff1a;…

buuctf 逆向 findkey wp

首先看看怎么个事 点开也就这样了&#xff0c;没有输入的点&#xff0c;感觉和之前的 “刮开有奖” 有一点点相像 winmain长这个样子 看到消息循环了&#xff0c;下一步肯定就是找回调函数了 乍一看还没有&#xff0c;函数一个个点进去看发现sub_401023(hInstance&#xff09…

坚持减调,享受健康:让边调边减成为日常行为

引言&#xff1a; 在当前快节奏的现代社会中&#xff0c;随着生活水平的提高和健康意识的增强&#xff0c;越来越多的人开始关注自己的体态和健康状况。随着各种健身方式和调减方法的出现&#xff0c;人们的选择也越来越多样化&#xff0c;不仅包含节食、劳动和运动&#xff0…

深度优先搜索算法,图的深度优先搜索

深度优先搜索&#xff0c;其核心思想就是以一个点作为搜索的起始点&#xff0c;沿着这个点的分支路径不断地深入&#xff0c;直到没有满足条件的点则退回&#xff0c;并以新的起始点为搜索的点&#xff0c;重复以上的过程&#xff0c;图的遍历就是以深度优先搜索思想为解决问题…

改善 GitHub Pages 阅读体验:Quick Docs

一个不到 10MB 的小工具&#xff0c;来提供本地、快速的文档访问&#xff0c;来改善开发过程中&#xff0c;阅读在线文档体验糟糕的问题。 以及&#xff0c;介绍如何快速制作一个利于分发使用的&#xff0c;离线文档工具包。 写在前面 即使现在 AI 辅助编码和 Chat Bot 类的…

osg-材质 (osg::Material)

1.材质类 材质类 (osg::Material)继承自osg::StateAttribute 类。osg::Material 封装了 OpenGL的 glMaterial()和glColorMaterial()指令的函数功能&#xff0c;其继承关系图如图5-27 所示。 图 5-27 osg::Material 的继承关系图 在场景中设置节点的材质属性&#xff0c;首先要…

FLatten Transformer:聚焦式线性注意力模块

线性注意力将Softmax解耦为两个独立的函数&#xff0c;从而能够将注意力的计算顺序从(querykey)value调整为query(keyvalue)&#xff0c;使得总体的计算复杂度降低为线性。然而&#xff0c;目前的线性注意力方法要么性能明显不如Softmax注意力&#xff0c;并且可能涉及映射函数…

element-plus table表格cell-style的使用

在做项目的时候使用到了这个属性 需求是&#xff1a;表格里的两个值进行匹配&#xff0c;如果不相同则给那一列的字体颜色变为红色&#xff0c;方便一眼就能看到template: 先给表格绑定一下cell-style属性 <el-table:data"tableData.slice((currentPage - 1) * page…

某音关键词搜索商品接口,某音关键词搜索商品列表接口,宝贝详情页接口,某音商品比价接口接入方案

要接入API接口以采集电商平台上的商品数据&#xff0c;可以按照以下步骤进行&#xff1a; 1、找到可用的API接口&#xff1a;首先&#xff0c;需要找到支持查询商品信息的API接口。这些信息通常可以在电商平台的官方文档或开发者门户网站上找到。 2、注册并获取API密钥&#x…

广播及代码实现

广播&#xff08;Broadcast&#xff09;是一种网络通信方式&#xff0c;它允许一台设备向网络中的所有其他设备发送消息。广播通常用于在网络上传递一些信息&#xff0c;让所有设备都能接收并处理。在广播中&#xff0c;通信的目标是整个网络而不是特定的单个设备。 向子网中…

高效分割视频:批量剪辑,轻松提取m3u8视频技巧

在数字媒体时代&#xff0c;视频分割是一项常见的需求。无论是为了编辑、分享还是其他要求&#xff0c;经常要将长视频分割成多个短片。传统的视频分割方法往往需要手动操作&#xff0c;既耗时又容易出错。现在来看云炫AI智剪高效分割视频的方法&#xff0c;批量剪辑并轻松提取…

CodeWave智能开发平台--03--目标:应用创建--01模板创建依赖问题修改

摘要 本文是网易数帆CodeWave智能开发平台系列的第03篇&#xff0c;主要介绍了基于CodeWave平台文档的新手入门进行学习&#xff0c;实现一个完整的应用&#xff0c;本文主要完成模板创建时的依赖问题解决。 CodeWave智能开发平台的03次接触 CodeWave参考资源 网易数帆Code…

EFCore8泛化关系在数据库中的体现

如图&#xff0c;在关系数据库中&#xff0c;数据表达为一张表&#xff0c;用一个字段“Discriminator”来做区分&#xff1a; 要达到这样的效果&#xff08;数据库中的结构&#xff09;&#xff0c;需要在XXContext中将继承关系的三个类都加上&#xff1a; public DbSet<P…
最新文章