mysql简单入门常见的语句使用

news2025/1/27 13:03:39

一、安装mysql

二、数据库操作

1、进入本地数据库

win + r  运行cmd.exe 输入命令  mysql -uroot -p  敲回车;随后输入密码;

 -u用户名 -p密码;

1.1 连接远程数据库:mysql -h ip地址 -u 用户名 -p

mysql -h  10.10.25.159  -u   root   -p root

 -h主机名 -u用户名 -p密码;

 2、创建数据库

mysql>  create database hh_test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected, 2 warnings (0.01 sec)

create database hh_test  代表的是创建数据库 hh_test

DEFAULT CHARTERSET utf8  代表的是将该库的默认编码格式设置为utf8格式。

COLLATE utf8_general_ci :代表的是数据库校对规则:utf8_bin 将字符串中的每一个字符用二进制数据存储,区分大小写。utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。

3、查询数据库

show databases;

 显示出当前PC中有哪些数据库,上图就是我PC中的数据库,因为我之前创建过数据库;

 4、删除数据库

drop database **(数据库名);

5、选择数据库

use **(数据库名);

6、在当前数据库中创建一张表

create table movie(
id varchar(10),
title varchar(20),
subjects text,
ank int,
gender enum('man','woman'),
dtime timestamp
);

 desc + 表名 显示表结构

 6.1 数据类型

数值类型-整数型

 在计算机中,可以区分正负的类型,称为有符号类型。无正负的类型,称为无符号类型。即:有符号值可以表示负数,0以及正数;无符号值只能为0或正数。

M表示整数类型的最大显示宽度。M表示整数类型的最大显示宽度。对于浮点和定点类型, M是可以存储的总位数(精度)。对于字符串类型, M是最大长度。允许的最大值M取决于数据类型。

数值类型-浮点型

 D适用于浮点和定点类型,并指示小数点后面的位数。最大可能值为30,但不应大于 M-2。

 数据类型-定点型

DECIMAL[(M[,D])]  常用于存储精确的小数,M是总位数,D是小数点后的位数。小数点和(负数) -符号不计入 M。如果 D为0,则值没有小数点或小数部分。最大位数(M)为 65. 最大支持小数(D)为30.如果D省略,则默认值为0.如果M省略,则默认值为10。M的范围是1到65。D范围为0到30,且不得大于M。

6.2 字符串类型

 TEXT系列的存储范围比VARCHAR要大,当VARCHAR不满足时可以用TEXT系列中的类型。需要注意的是TEXT系列类型的字段不能有默认值,在检索的时候不存在大小写转换,没有CHAR和VARCHAR的效率高;

在ENUM中我们只能从允许值列表中给字段插入一个值,而在SET类型中可以给字段插入多个值。

6.3 日期时间类型

TIME我们可以看到TIME的存储范围是’-838:59:59’到 ‘838:59:59’,因为TIME类型不仅可以用于表示一天中的时间(,还可以用于表示两个事件之间的经过时间或时间间隔

TIME的完整的显示为 D HH:MM:SS
D:表示天数,当指定该值时,存储时小时会先乘以该值
HH:表示小时
MM:表示分钟
SS:表示秒

7、删除该数据库中的某一张表

drop table **(表名);
drop table **,**,**...; 

 第一条是删除一个表格,第二条是删除多个表格;

8、表的基本操作

8.1向表中增加数据

insert into **(表名) (字段1,字段2,字段3......) values (值1,值2,值3.......);

例如向 movie 中插入:

insert into movie(id,title,subjects,ank,gender,dtime) values('1','章鱼团长','长长的触手很长很长','10','man','2022-01-01 00:00:01.000000');

 8.2查询数据

select * from **(表名);

select * from movie       这条命令是查询 movie 表格中的所有信息,*就代表所有。

查询该表内某字段的所有数据

select 字段1,字段2,字段3......(或用*代替所有字段) from **(表名);

例如:查询movie 表中的 title 字段:select title from movie;

 查询某条件的所有数据

select * from **(表名)where 字段1 = 值1 and 字段2 = 值2 and ......;

select * from movie where ank="10";   查询movie 表格中所有 ank 字段都为 10 的项;

模糊查询某条件数据

通配符说明
%与包含0个或多个字符串匹配
_与任意单个字符匹配
[ ]与特定范围(例如[a-d]或特定集例如[abcdef])中的任意字符串匹配
[^]与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。
select * from 表名 where 字段 like '%值%';

select * from movie where title like '_团长';  查询movie 表格中所有title字以团长结尾的项(_下划线个数表示匹配字符个数) 

 select * from movie where title like '%团长%';  查询movie 表格中所有title字段包含团长的项

 select * from movie where title like '团长%';  查询movie 表格中所有title字段以团长开头的项

 select * from movie where title like '%团长';  查询movie 表格中所有title字段以团长结尾的项

 

 升(降)排序

select * from **(表名) order by 字段x asc;(默认就是升序)
select * from **(表名) order by 字段x desc;(降序)

 例如:movie 表格中按 ank 字段升序

 按某条件排序

select * from **(表名) where 字段x = 值x oreder by 字段x asc(desc);

例如:movie 表格中 字段 gender 的值为 woman 按照升序排序

select * from movie where gender="woman" order by ank asc;  

分组查询(group by)

1、分组查询是对数据按照某个或多个字段进行分组,在MYSQL中使用GROUP BY关键字对数据进行分组

2、GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组
    ⑴分组的核心是:在查询SQL中指定分组的列名,然后根据该列的值进行分组,值相等的为一组

3、分组查询的基本的语法格式如下:

 GROUP BY 字段名 [HAVING 条件表达式]
参数:
1、字段名:是指按照该字段的值进行分组(分组是所依据的列名称)
2、HAVING条件表达式:用来限制分组后的显示,符合条件表达式的结果将被显示

1、对数据进行分组,一般有两种使用场景:
    ⑴单独使用GROUP BY关键字,

例如 movie 表格中按照性别分组 select * from movie group by gender;


 如果直接查询某个列时:只会返回该分组内第一个值

⑵将GROUP BY关键字与聚合函数一起使用(常用)

例如 查询movie 表格中所有的数据,按照 gender 字段值进行分组,然后计算每组的记录条数   select gender, count(*) from movie group by gender;

 2、GROUP BY关键字可以和GROUP_CONCAT()函数一起使用。GROUP_CONCAT()函数会把每个分组的字段值都显示出来。

 select gender,count(*),group_concat(gender) as sex from movie group by gender;

 使用GROUP_CONCAT()函数,就会返回该分组内所有的值

3、若用于分组的列中包含有NULL值,则NULL将作为一个单独的分组返回;若该列中存在多个NULL值,则将这些NULL值所在的行分为一组

多字段分组

1、使用GROUP BY可以对多个字段进行分组,GROUP BY关键字后面跟需要分组的字段

HAVING过滤分组

1、GROUP BY可以和HAVING一起限定显示记录所需满足的条件:只有满足条件的分组才会被显示

2、HAVING关键字是对分组结果进行过滤。WHERE关键字是对表数据进行过滤
    ⑴两者同时存在时:肯定是先计算WHERE,WHERE排除的记录肯定是不会出现在分组内的

 上面例子:先按照 ank 进行分组,统计的列数;接着筛选 ank 小于 60;最后过滤 gender > 1

分组排序

某些情况下需要对分组进行排序
    ⑴一般情况下ORDER BY是用来对查询结果进行排序的。当其与GROUP BY一起使用时,可以对分组结果进行排序 

select gender,ank,count(*) from movie group by ank order by ank desc;

 连表查询(join)

数据查询时很多时候需要连表,查询出来的内容则包含2个表中的列内容,这个时候就需要用到连表,连表又分为左连接、右连接、内连接;

左查询是以左表为准(对应图中的article表),逐行在右表中进行筛选,如果有匹配到的值则正常显示,如果没有则用null填充;同理,右查询也是同样的道理;

内连

inner join会提取出2张表的共同交集

select * from 表名1 inner join 表名2 on 条件;

 现有如下两张表 movie 与 copy_movie 如下所示

 例如查询两张表 title 字段相等的 address 与 subjects ank 字段的值

select subjects,address,ank from copy_movie inner join movie on copy_movie.title = movie.title;

 

 左外连

左外连接是以左表为基准,左表的所有数据都会显示,对于右表匹配到的就显示匹配的数据,没有匹配的就显示null.也可以把outer省略

select 字段 from 左表名 left outer join 右表名 on 条件;

例如:以copy_movie 为左表

select subjects,address,ank from movie left outer join copy_movie on copy_movie.title = movie.title;

 

 右外连接

select 字段 from 左表名 right outer join 右表名 on 条件;

右外连接是以右表为基准,右表的所有数据都会显示,对于左表匹配到的就显示匹配的数据,没有匹配的就显示null.
 

数据合并(union)

取前n条数据

select * from **(表名) limit n;

 例如取 movie 表格中的前3条数据  select * from movie limit 3;

 从第n条开始(起始位置是0)取m条

select * from **(表名) limit n,m;

 例如: movie 表格中从第二条开始取两条数据  select * from movie limit 2,2;

 查询某排序下的前n条数据

select * from **(表名) order by 字段x asc(desc) limit n;

例如:查询 movie 表格中 ank 字段升序排列的前两条数据  select * from movie order by ank asc limit 2; 

8.3 删除数据 

delete from **(表名) where 字段x = 值x;

先增加一条数据:

insert into movie(id,title,subjects,ank,gender,dtime) values('5','章鱼团长爸爸','长长的触手又粗又长孔武有力','60','man','2022-01-01 00:00:05.000000');

 再将该数据删除

delete from movie where ank = "60";

 8.4 修改数据

update **(表名) set 字段1 = 值1,字段2 = 值2 where 条件;
update **(表名) set 字段1 = 值1; (修改某一字段下的所有值)

例如:将 movie 表中 字段 gender 的值为 woman 的 字段 ank 与 title 分别修改为 40 与 小乌龟

update movie set title = "小乌龟",ank = 40 where gender="woman";

 8.5 常用数据处理函数

sum(); 求和 select sum(字段x) from **(表名);
avg(); 求平均值 select avg(字段x) from **(表名);
max(); 求最大值 select max(字段x) from **(表名);
min(); 求最小值 select min(字段x) from **(表名);
count(字段x) ------统计该字段x的行数,如果该列的值是null,不统计在内
count(*) 统计所有的列,相当于统计行数,不会忽略null
在某字段条件下使用函数 select 函数名() from **(表名) where 字段x = 值x;

例如 :

id 字段求和

 id 字段求平均值

保留小数位数(round)

空置判断(ifnull)

条件判断(if)

分类查询(case when)

字符截取(substring、left、right)

9、操作表

9.1新增字段

alter table 表名 add 字段名 字段数据类型(长度) [character set 字段编码 collate 字段排序编码] [NOT NULL] [DEFAULT 0] [COMMENT ‘备注’] [(FIRST)|(AFTER 表中已存在字段)]

CHARACTER SET 字段编码 COLLATE 字段排序编码:用于设置特殊字段的编码值。例如:表字段中如果要存储包含表情的字符串,但是数据库的编码是utf-8,那么表情会乱码。这时候就需要将字段的编码修改成utf8mb4。(alter table 表名 add 字段名 字段数据类型(长度) character set utf8mb4 collate utf8mb4_general_ci)

NOT NULL:代表该字段不允许为空。

EFAULT 值:设置默认值。可为数字也可为字符串。

COMMENT ‘备注’:该字段的备注信息。

(FIRST)|(AFTER 表中字段):在第一列创建该字段或者在表中字段之后创建该字段。

在字段 title 后新增字段 nickname

 alter table movie add column nickname varchar(10) default null comment '昵称' after title;

 

 新增表非空字段

alter table movie add phone varchar(11) not null;

 

新增表默认值字段 

alter table movie add phone varchar(11) not null default '13228257753';

 9.2删除字段

alter table 表名 drop column 字段名;

例如删除 copy_movie 表中的 phone 字段   alter table copy_movie drop column phone;

9.3修改字段

修改字段名称

change常用于修改字段名称,但与modify一样。同样可以修改字段类型和长度。且修改后的字段,alter table语句中没有设置默认值等限制,原字段的限制将会被重置。如下例name1字段不会继承name字段的备注、默认值等信息。

alter table [表名] change [字段名] [字段新名称] [字段的类型]

 修改字段类型与长度

modify常用于修改表中字段的类型和长度。

alter table [表名] modify column [字段名] [新数据类型(修改后的长度)]

例如修改 movie 表中 titile 字段长度为 20 

alter table movie modify column title varchar(20);

9.4 复制表 

复制表结构及数据到新表

CREATE TABLE 新表SELECT * FROM 旧表   会将oldtable中所有的内容都拷贝过来

例如复制 movie 表: create table copy_movie select * from movie;

 只复制表结构到新表

CREATE TABLE 新表LIKE 旧表

例如: create table copy_movie like movie;

 复制旧表的数据到新表(假设两个表结构一样)

INSERT INTO 新表 SELECT * FROM 旧表

复制旧表的数据到新表(假设两个表结构不一样)

INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表

可以将表1结构复制到表2

SELECT * INTO 表2 FROM 表1 WHERE 1=2

可以将表1内容全部复制到表2

SELECT * INTO 表2 FROM 表1

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

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

相关文章

git push 报错 error: src refspec master does not match any 解决

真是TN的邪了门了,今天在Gitee上创建了一个新项目,然后要把本地的代码push上去时,报了如下错误: ➜ *** git:(main) git push -u origin "master" error: src refspec master does not match any error: failed to pu…

Windows上通过CMake编译COLMAP源码操作步骤

COLMAP源码:https://github.com/colmap/colmap ,最新的稳定版本位于master分支,最新的开发版本位于dev分支,这里使用master分支进行编译,commit id为1555ff0。官方推荐使用vs2019,使用vs2022有一些已知bugs…

Metasploit介绍

Metasploit介绍 我们经常在电影里看到有关黑客的镜头,他们通常在几个屏幕上一顿操作就能轻松“黑“进各种系统。这样的场景是不是很熟悉,是不是很羡慕? 今天我来介绍一下Metasploit Framework,简称MSF。这个工具就可以做到“Hacki…

Qt5.12.6配置Android Arm开发环境(windows)

1. 安装jdk1.8 2.安装Android Studio 并安装 SDK 与NDK SDK Tools 选择 26.0.3 SDK Platform 选择 Android SDK Platform 26 NDK选择19版本 安卓ARM环境配置成功如下: JDK1.8 , SDK 26 , NDK 19 在安装QT时要选择 ARMv7(32位CPU)与ARM64-v8a(64位CPU) 选择支持android平台…

全国各个省份市区县明细数据

全国总共有23个省、5个自治区、4个直辖市、2个特别行政区。 此数据包含省、市、区、县数据,共2886个。——更新于2023年6月10日 费了不少时间,暂时应该没有比我更全的了~~~细致到区县了 包括台湾省:台北市,新北市,桃园市,台中市,台南市,高…

计算机网络-子网划分

计算机网络-子网划分与CRC差错校验 文章目录 计算机网络-子网划分与CRC差错校验IP地址的分类A类地址B类地址C类地址D类地址和E类地址和特殊IP地址子网掩码实战💪 IP协议是 TCP/IP体系中最主要的协议之一,也是最重要的互联网协议之一。 IP协议是32位&am…

ubuntu22.04.2安装onlyoffice(不更改默认端口版)

目录 一、配置阿里源 二、postgresql数据库 (一)安装postgresql (二)创建postgresql数据库和用户 三、安装 rabbitmq 四、安装nginx-extras 五、安装ONLYOFFICE Docs (一)Add GPG key &#xff08…

【html总结--详细版】

目录 一、html 常用的标签 二、列表分为有序列表、无序列表、自定义列表 有序列表: 无序列表: 自定义列表: 三、hr 四、特殊符号 五、div和span 六、图片的属性 七、超链接 八、table表格的基本结构 table的属性 tr的属性 td的属性…

(七)CSharp-刘铁锰版-事件

一、初步了解事件 定义:单词 Event ,译为“事件” 《牛津词典》中的解释是“a thing that happens,especially something important”通顺的解释就是“能够发生的什么事情” 角色: 使对象或类具备通知能力的成员 (中译&#x…

数据可视化大屏人员停留系统的开发实录(默认加载条件筛选、单击加载、自动刷新加载、异步加载数据)

项目需求 录入进入房间的相关数据;从进入时间开始计时,计算滞留房间的时间;定时刷新数据,超过30分钟的人数,进行红色告警; 实现流程 为了完整地实现上述需求,我们可以按照以下步骤开发&#…

Log4j2漏洞复现补丁绕过

漏洞复现 这里我一共使用了两个jdk版本 8u202的情况比较特殊,其实我今天凌晨在家里用的也是8u202的版本,失败了。今天来公司也是用的8u202版本的jdk,成功了。我仔细研究了两者的不同,我发现唯一不同的就是我公司这个idea启的proie…

NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec

文章目录 传统语义数据集的缺点分布式语义Word Vectors 词向量Count-based 基于统计的方法Document 作为上下文 —— 向量空间模型(VSM)TF-IDF 更加有效的编码方式降维Singular Value Decomposition neighbor words 作为上下文 基于深度学习的方法Word2V…

highlight clock tree 高亮时钟树的方法

当分析clock tree需要在图形界面highlight clock tree时,最朴实无华的方法就是贴报告,除此之外这里也分享一下用命令的方法。 1.Imported Path Pins 1)Highlight > Color By > Imported Path Pins 2)report_timing icc2…

【MySQL 数据库】9、存储过程

目录 一、存储过程是什么二、存储过程的基本语法三、MySQL 中的变量(1) 系统变量(2) 用户自定义变量(3) 局部变量 四、if 判断五、参数传递和返回值六、case 语句七、while 循环八、repeat 循环九、loop 循环十、游标十一、条件处理程序 一、存储过程是什么 🌱 存储…

Linux进程间通信【消息队列、信号量】

✨个人主页: 北 海 🎉所属专栏: Linux学习之旅 🎃操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌇前言🏙️正文1、消息队列1.1、什么是消息队列?1.2、消息队列的数据结构1.3、消…

交通物流模型 | Python实现基于张量分解的交通流量时空模式挖掘(出租车车载GPS数据、公交卡刷卡数据、POI的分布数据)

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 一般出行行程通常都由某种明确目的驱使,例如上班、购物或娱乐,出行的起始区域因其承担功能的不同,通常能够反映出用户的出行目的,于此同时,从宏观来看,区域之间的交通流量在一天内的变化规律也能够反…

【数据结构与算法】03 队列(顺序队列--循环队列--优先级队列--链队列)

一、概念1.1 队列的基本概念1.2 队列的顺序存储结构1.21 顺序队列(静态队列)1.22 循环队列1.23 优先级队列 1.3 队列的链式存储结构 二、C语言实现2.1 顺序存储2.11 顺序队列2.12 循环队列2.13 优先级队列 2.2 链式存储 一、概念 1.1 队列的基本概念 队…

【python】—— python的基本介绍并附安装教程

前言: 今天,我将给大家讲解关于python的基本知识,让大家对其有个基本的认识并且附上相应的安装教程以供大家参考。接下来,我们正式进入今天的文章!!! 目录 前言 (一)P…

【Linux】互斥量原理的实现

深刻理解互斥锁 文章目录 前言一、demo版的线程封装二、demo版的锁封装总结 前言 为了实现互斥锁操作 , 大多数体系结构都提供了 swap 或 exchange 指令 , 该指令的作用是把寄存器和内存单元的数据相交换, 由于只有一条指令 , 保证了原子性 , 即使是多处理器平台 , 访问内存的总…

第10讲:深入剖析 Agent 插件原理,无侵入性埋点

AbstractClassEnhancePluginDefine 核心实现 在开始之前,先简单回顾上一课时中关于 AbstractClassEnhancePluginDefine 的一个核心知识点:AbstractClassEnhancePluginDefine 是所有插件的父类,SkywalkingAgent.Transformer 会通过其 enhance…