MYSQL基本命令和操作

news2024/9/25 23:11:47

🖊作者 : D. Star.
📘专栏 : JAVA
😆今日提问 : 你好,我的朋友,在你的人生途中,会面临很多选择,不管选什么样的结果,我们都多少会有些后悔。如果是你,你会选择爱你的,还是懂你的?
在这里插入图片描述

MYSQL

  • 一、数据库分类(了解):
    • 1. 关系型数据库:
    • 2. 非关系型数据库:
  • 二、数据库中的基本概念:
    • 1. 数据库:
    • 2. 数据表:
    • 3. 列、行:
    • 4. 主键:
    • 5. 外键:
  • 三、对于数据==库==的基本操作:
    • 1. 创建数据库(create)
    • 2. 删除数据库 (drop)
    • 3. 查看所有的数据库(已有)(show):
  • 四、对于数据==表==的基本操作:
    • 1. 增(create)
    • 2. 删 (drop)
    • 3. 查看表名(show/desc)
    • 4. 改(alter)
      • 4.1. 删除列
      • 4.2. 增加列
  • 五、对数据表数据的基本操作:
    • 1. ==首先==要对该数据表的数据库进行==选中==操作(use)
    • 2. 增(insert)
    • 3. 删(delete)
    • 4. 查(select)
    • 5. 改(update)
  • 六、字符集
  • 七、对表数据的进阶操作
    • 1. as的使用方法
    • 2. distinct的使用方法
    • 3. order by 的使用方法
    • 4. where 的使用方法
      • 4.1. like 模糊匹配
      • 4.2. between ... and ...
      • 4.3. and / or
      • 4.4. in ( ... )
      • 4.5. <==> 的使用方法
    • 5. limit 的使用方法
    • 5.1. group by(where和having)
  • 八、数据库约束
    • 1. not null
    • 2. unique
    • 3. default
    • 4. primary key
    • 5. foreign key
  • 九、聚合函数
    • 1. count(...)
    • 2. sum(...)
    • 3. avg(...)
  • 十、 联合查询
    • 1. 多表查询
    • 2. 内外连接
      • 2.1. 内连接(用的最多)
      • 2.2. 左外连接
      • 2.3. 右外连接
    • 3. 自连接
    • 4. 子查询
    • 5. 合并查询
      • 5.1. union
    • 6. 索引
      • 6.1. 查看索引
      • 6.2. 创建索引
      • 6.3. 删除索引

一、数据库分类(了解):

1. 关系型数据库:

Oracle(最好),Mysql(最广泛–免费),SQL Server(好用不火),SQLite(轻量级)

2. 非关系型数据库:

MongoDB,Redis,HBase

二、数据库中的基本概念:

1. 数据库:

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

2. 数据表:

表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。

3. 列、行:

一列(数据元素) :包含了相同的数据。
一行(元组/记录):是一组相关的数据。

4. 主键:

主键是唯一的。一个数据表中只能包含一个主键。

5. 外键:

外键用于关联两个表。

三、对于数据的基本操作:

1. 创建数据库(create)

create database 表名(列名 类型,…);

例如:创建一个名为student的数据库

//eg:创建一个名为student的数据库
create database student;

2. 删除数据库 (drop)

drop database 表名;

例如:删除一个名为student的数据库

//eg:删除一个名为student的数据库
drop database student;

3. 查看所有的数据库(已有)(show):

show databases;

show databases;//显示所有数据库

四、对于数据的基本操作:

1. 增(create)

create table 表名(列名 类型,…);

例如:创建一个名为stu的数据表(id,姓名,成绩);

//eg:创建一个名为student的数据表(id,姓名,成绩)
create table student(id int,name varchar(20),grade decimal(3,1));

2. 删 (drop)

drop table 表名;

例如:删除一个名为student的数据表;

//eg:删除一个名为student的数据表
drop table stu;

3. 查看表名(show/desc)

show tables;
desc 【表名】;

例如:展示stu数据库里的所有表名:

//eg:展示stu数据库里的所有表名:
show tables;

例如:查看books表的结构

desc books;

4. 改(alter)

4.1. 删除列

alter table 【表名】 drop【列名】;

例如:删除student表中的grade列

//eg:删除student表中的grade列
alter table student drop grade;

4.2. 增加列

alter table 【表名】 add【列名】 【类型】;

例如:增加student表中的grade列

//eg:增加student表中的grade列
alter table student add grade decimal(3,1);

  • 修改列的名字
    alter table【表名】 change【列名】【新名】 ;

例如:将student表中的grade改为成绩

//eg:将student表中的grade改为成绩
alter table student change grade '成绩';

  • 创建索引
    alter table 【表名】 add index 索引名(列名);

例如:创建student表中的名字为索引

//eg:创建student表中的名字为索引
alter table student add index index_name(name);
  • 删除索引

alter table 【表名】 drop index 索引名(列名);

例如:删除student表中的名字为索引

//eg:删除student表中的名字为索引
alter table student drop index index_name(name);
  • 修改表名

alter table 【表名】 rename 【新表名】;

例如:将student表的表名改成students

//eg:将student表的表名改成students
alter table student rename students;

五、对数据表数据的基本操作:

1. 首先要对该数据表的数据库进行选中操作(use)

(否则无法进行该数据库的操作)

use 数据库名;

例如:假设这里的数据库名位stu;

//eg:假设这里的数据库名位stu;
use stu;

2. 增(insert)

  • 直接增加一条/多条记录 。
    insert into 【表名】 values(…);
    insert into 【表名】 values(…),(…),(…);

例如:在students表中插入(1,‘王五’,85.5);
注 : varchar类型可以是单引号/双引号

//eg:在students表中插入(1,'王五',85.5);
//法一:
insert into students values(1,'王五',85.5);
insert into students values(1,"王五",85.5);
//法二:
insert into students(name,id,grade) values('王五',1,85.5);

  • 插入特定数据(select挑选出来的)。
    insert into stutends(name,grade) (select name,grade from students where id = 1);

例如:将students表中id为1的(姓名,成绩)插入到students表中新的(姓名成绩)

eg:将students表中id为1(姓名,成绩)插入到students表中新的(姓名成绩)
insert into stutends(name,grade) (select name,grade from students where id = 1);

3. 删(delete)

  • 删除表中的一条或者多条记录。
    delete from 【表名】 where 【条件】;
    delete from 【表名】;
//(删除的是符合该条件的一条条记录)
//eg:删除成绩为0的记录
delete from students where grade = 0;
//(删除全部数据)
delete from students;

4. 查(select)

  • 查询全部列。
    select * from 【表名】 where 【条件】;

例如:查询students中成绩大于50的全部学生信息

//eg:查询students中成绩大于50的全部学生信息
select * from  students where grade>50;

  • 查询个别列。
    select 【列名】 from 【表名】where 【条件】;

例如:查询students中成绩大于50的学生姓名

//eg:查询students中成绩大于50的学生姓名
select name from students where grade>50;

5. 改(update)

  • 根据筛选条件,将原字段改为新内容。
    update 【表名】set 【字段名】=【新内容】 where 【条件】;

例如:将students表中序号为1的学生的成绩改为97;

//eg:将students表中序号为1的学生的成绩改为97;
update students set grade = 97 where id = 1;

六、字符集

提问:一个汉字在JAVA(utf8)中占几个字节?
答:3bit/字。

七、对表数据的进阶操作

(提前)结论:所有的查询条件产生的只是一个结果集,不会影响内存里的数据

1. as的使用方法

含义 : 重命名(表面的,不影响内存里的数据)[下面有证明图片]
注意:只针对一个字段重命名
公式①:select 【字段 as 【重命名】,…】 from 【表名】
公式② select 【… , 字段】 as 【重命名】 from 【表名】

例如:将books中的id显示为序号

//eg:将books中的id显示为序号
//法一:
select id as '序号',name,author,price,kinds,year from books;
//法二:
select name,author,price,kinds,year,id as '序号' from books;

图片展示
在这里插入图片描述

验证: 内存里的数据没变(即id没变)
在这里插入图片描述

2. distinct的使用方法

含义 : 去重(将字段中重复的部分去掉)
并且只能放在字段前面

例如 : 显示books中的year(去重)

//eg : 显示books中的year(去重)
select distinct year from books;

图示:
在这里插入图片描述

如果distinct后面接了很多的字段,那就将这些字段作为一组字段,并且显示不重复的组字段.

3. order by 的使用方法

根据特定条件/字段排序
默认是升序[asc]
也可以在后面加上desc(降序)
注意!!!可识别别名

例如 : 在books表中,按照price的高低排序

//eg: 在books表中,按照price的高低排序
select * from books order by price;

[默认升序]
在这里插入图片描述
[降序]
在这里插入图片描述

4. where 的使用方法

4.1. like 模糊匹配

% : 代表0个字符或者N个字符
格式: like ‘%xxx’
_ : 代表一个字符
格式: like ‘_xxx’

注意: like前面可以加not 表示否定.

注意: like 后面一定要加 ’ ’ 或者 " " ;

例如:在books表中,找到唐xxx的author名在这里插入图片描述

4.2. between … and …

表示的是一个范围区间,前闭后闭
between前面可以加not

例如: 在books表中,找出价格在[50,500]之间的书

//eg: 在books表中,找出价格在[50,500]之间的书
select * from books where price between 50 and 500;

在这里插入图片描述

4.3. and / or

作为条件: 且,或

例如: 在books表中,找出价格大于100并且(可换成或者)在2000以后发行的书

//eg:在books表中,找出价格大于100并且在2000以后发行的书
select * from books where price > 100 and year > 2000;

在这里插入图片描述

4.4. in ( … )

作为数值挑选项

例如: 在books表中,找出价格是50或者500之间的书

//eg:在books表中,找出价格是50或者500之间的书
select * from books where price in(50,500);

在这里插入图片描述

4.5. <==> 的使用方法

<==> : 严格比较两个NULL值是否相等

例如: 找出books表中,author为NULL的信息;

select * from books where author <=> null;

在这里插入图片描述

5. limit 的使用方法

limit + 数字 : 分页查询(默认从下表为0的数据开始展示)
offset + 数字 : 声明从哪一条开始查询(默认从0开始)

例如: 显示books表中的3条数据;

//eg:显示books表中的3条数据;
select * from books limit 3;

在这里插入图片描述
例如: 显示books表中的3条数据并从第二条数据开始(即下表为1的数据);

//eg:显示books表中的3条数据并从第二条数据开始(即下表为1的数据);
select * from books limit 3 offset 1;

在这里插入图片描述

5.1. group by(where和having)

作用 : 分组,将列值相同的分到一组
注意 : 分组后 , 取(显示)的是第一行数据

例如:显示出一班和二班的总成绩是多少?

select class,sum(score) from student group by class;

在这里插入图片描述

分组前筛选用where
例如 : 通过班级分组显示分数>60的数据
select * from student where score>60 group by class;
注意!!!where无法识别select 到 from 之间的别名,但是可以识别from后的
!(https://img-blog.csdnimg.cn/9ebe8e67460248769d80d6dcb00702d0.png)

分组后筛选用having
例如 : 通过班级分组显示班级出现超过2次的数据.
select * from student group by class having count(class)>2;
注意!!!having前后最好字段一致
在这里插入图片描述

八、数据库约束

目的: 为了提高效率和准确性
适用于在创建表的时候进行添加约束条件

1. not null

意思: 不为空
数据库含义: 必填

例如: 创建一个book表,设置其中的书名(name)字段为不为空

create table book(
id int,
name varchar(20) not null,
author varchar(20));

已创建好的表添加 not null约束条件
alter table 表名 modify 字段 类型
例如:alter table student modify age int not null;
已创建好的表删除 not null约束条件
alter table 表名 modify 字段 类型
例如:alter table student modify age int null;

2. unique

意思: 唯一的
数据库含义: 唯一的,不可重复

例如: 创建一个book表,设置其中的id字段为唯一

create table book(
id int unique,
name varchar(20) ,
author varchar(20) );

已创建好的表添加unique约束条件
alter table 表名 add unique(字段) ;
已创建好的表删除unique约束条件
alter table 表名 drop index 字段;

3. default

意思: 默认
数据库含义: 如果表中未填写,系统将会把默认值填入

例如: 创建一个book表,设置其中的作者字段为默认"未知"

create table book(
id int,
name varchar(20) ,
author varchar(20) default "未知");

已创建好的表修改default约束
alter table 【表名】alter 【字段】set default ‘xxx’ ;
已创建好的表删除default约束
alter table 【表名】alter 【字段】drop default ;

4. primary key

意思: 主码
数据库含义: 唯一标识关系
是not null 和 unique 的总和

create table student(
sid int not null primary key,
gid int not null ,
name varchar(20),
age int,
grade int);

已创建好的表修改 primary key约束
alter table 表名 add primary key(字段);
已创建好的表删除 primary key约束
alter table 表名 dop primary key;

5. foreign key

意思: 外码
数据库含义: 唯一标识关系

create table student(
sid int not null primary key,
gid int not null foreign key references 表名(字段),
name varchar(20),
age int,
grade int);

已创建好的表修改 foreign key约束
alter able 表名1 add foreign key(字段) references 表名2(字段名);
已创建好的表删除 foreign key约束
alter table 表名 drop foreign key 外键名;

注意!!!查看外键名: show create table 表名 ;
在这里插入图片描述

九、聚合函数

1. count(…)

计算()出现的次数

例如:计算student表中,班级2的同学有几个

//eg::计算student表中,班级2的同学有几个
select class, count(class) from student group by class;

在这里插入图片描述

2. sum(…)

求和

例如: 求各班同学的总成绩

//例如: 求各班同学的总成绩
select class,sum(score) as sum from student group by class;

在这里插入图片描述

3. avg(…)

求平均数

例如 : 求各班同学成绩的平均分

//例如 : 求各班同学成绩的平均分
select class,avg(score) as sum from student group by class;

在这里插入图片描述

十、 联合查询

两表或者多表联合查询

1. 多表查询

//格式1:(两/多表连接',')
select 列名 from 表名1,表名2 where (将表1的字段与表2的相连接)
//格式2:(两表连接join)
select 列名 from 表名1 join2 on (字段连接)
//格式3:(多表连接join)
select 列名 from 表名1 join2 on (字段连接) join3 on 条件

2. 内外连接

2.1. 内连接(用的最多)

只显示共有部分
公式 : 就是上面的两表连接操作
select 列名 from 表名1 join 表2 on (字段连接)
在这里插入图片描述

2.2. 左外连接

以左侧表为主,左侧表的内容全部显示,如果右侧没有对应的,补null
格式 : select 列名 from 表名1 left join 表2 on (字段连接)
在这里插入图片描述

2.3. 右外连接

以右侧表为主,右侧表的内容全部显示,如果左侧没有对应的,补null
格式 : select 列名 from 表名1 right join 表2 on (字段连接)
在这里插入图片描述

3. 自连接

同一张表
例如:查询同一张表里同时选修了课程1和课程2的学生信息

select * from stu_class as s1,stu_class as s2 where s1.id = s2.id and s1.class = s2.class ;

4. 子查询

//格式:
select * from1 where id = (select id from2 where 条件);

5. 合并查询

5.1. union

可用于多个表的查询结果合并
注意 : union all 不会自动去重
== union 会自动去重==

//格式:
select * fromwhere 条件 union select * fromwhere 条件;

6. 索引

目的: 提高查找速度
消耗 : 需要额外的空间代价来保存索引数据, 若数据过于庞大,存在危险

6.1. 查看索引

show index from 表名;

6.2. 创建索引

create index 索引名 on 表名(列名);
若后建索引存在危险,最好是建表时就设计好表的结构
做法 : 加上主键或者unique,这些都是自带索引的约束条件

6.3. 删除索引

drop index 索引名 on 表名;
注意 : 所有的删除都存在风险


感谢家人的阅读,若有不准确的地方 欢迎在评论区指正!

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

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

相关文章

win10系统docker创建ubuntu容器解决开发环境问题

一、win10系统使用docker的原因 最近啊&#xff0c;在学习人工智能-深度学习&#xff0c;用的win10系统进行开发&#xff0c;老是出现一些莫名其妙的问题&#xff0c;无法解决&#xff0c;每天都在为环境问题搞得伤透了脑筋。 说到底还是要使用Linux系统进行开发比较合适。 …

无涯教程-Perl - time函数

描述 此函数返回自纪元以来的秒数(对于大多数系统,是1970年1月1日UTC,00:00:00&#xff1b;对于Mac OS,是1904年1月1日,00:00:00)。适用于gmtime和本地时间。 语法 以下是此函数的简单语法- time返回值 此函数返回自纪元后数秒的整数。 例 以下是显示其基本用法的示例代…

软件项目验收测试:验证软件功能与性能的有效手段

软件验收测试是软件产品周期中的最后一个测试活动&#xff0c;因此也叫交付测试。目的是确保软件准备就绪&#xff0c;并且可以让最终用户将其用于执行软件的既定功能和任务。 一、软件项目验收测试的重要性 1、软件项目验收测试是确保软件交付前质量的重要环节。在软件项目开…

小程序-基于vant的Picker组件实现省市区选择

一、原因 因vant/area-data部分的市/区数据跟后台使用的高德/腾讯省市区有所出入&#xff0c;故须保持跟后台用同一份数据&#xff0c;所以考虑以下几个组件 1、Area 2、Cascader 3、Picker 因为使用的是高德地图的省市区json文件&#xff0c;用area的话修改结构代价太大&…

netstat -ano|findstr 使用方法

一、查看占用端口 &#xff0c;得到进程id netstat -ano|findstr “8080” 1&#xff1a;协议 2&#xff1a;本地地址 3&#xff1a; 外部地址 4&#xff1a; 状态 5&#xff1a; PID 二、查询进程ID对应的进程名称 tasklist|findstr “12448” 三、关闭单个进程 taskkill /…

Matlab 在一张图中画多个机械臂

在matlab中第一次画机械臂时&#xff0c;可能会出现的问题是Link函数不识别&#xff08;如出现Link输入参数不对等) 这大概率是因为缺少matlab工具箱&#xff0c;如图 需要下载该软件包&#xff0c;然后用Matlab打开&#xff0c;就能自动安装到matlab中。下载地址在这个超链接…

【Harbor】使用手册

一、Harbor使用方式 Harbor 作为镜像仓库&#xff0c;主要的交互方式就是 将镜像上传到Harbor上&#xff0c;以及从Harbor上下载指定镜像 在传输镜像前&#xff0c;可以先使用 Harbor 提供的权限管理&#xff0c;将项目设置为私有项目&#xff0c;并对不同用户设置不同角色&…

最详细修改antd组件select的滚动条样式

自带的select的滚动条样式又黑又粗,丑陋.接下来我们改造他 初始代码 .contain {.btn {margin-top: 60px;margin-left: 60px;:global {.ant-btn {width: 200px;height: 100px;border-radius: 6px;}}} } <div className{styles.contain}><Selectmode"tags"p…

KMPBC:KMP算法及其改进(kmp with bad character)

前言 最近在看字符串匹配算法&#xff0c;突然灵光一闪有了想法&#xff0c;可以把kmp算法时间效率提高&#xff0c;同时保持最坏时间复杂度O(nm)不变。其中n为主串长度&#xff0c;m为模式串长度&#xff0c;经测试可以块3-10倍&#xff0c;以为发现了新大陆&#xff0c;但是…

Deep Automatic Natural Image Matting

https://github.com/JizhiziLi/AIM 工程地址 抠图的传统方法通常是基于 trimap&#xff08;三值图&#xff09;对前景、背景和 alpha 进行估计&#xff0c;但当图像中的前景和背景颜色相似或有着比较复杂的纹理时&#xff0c;传统算法很难取得比较好的效果。 自动图像抠图(A…

《华为认证》双机热备份简介

定义 双机热备份&#xff08;Hot-Standby Backup&#xff09;是指&#xff0c;当两台设备在确定主用&#xff08;Master&#xff09;设备和备用&#xff08;Backup&#xff09;设备后&#xff0c;由主用设备进行业务的转发&#xff0c;而备用设备处于监控状态&#xff0c;同时…

windows C++python编译配置

python官网下载windows下的installer安装包&#xff0c;添加到命令行when installing download mingw&#xff0c;选seh&#xff0c;把g的所在目录添加到环境变量 stdc.h 添加到 xxx\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include\bits&#xff0c;gcc的include目录下 …

23款奔驰GLS400升级原厂几何多光束大灯,让智能照亮您前行的路

奔驰几何多光束大灯核心特点就是通过内部的84颗可独立控制的LED光源&#xff0c;行车远光灯会甄别对向驶来的车辆或者行人&#xff0c;并且动态的跟随目标&#xff0c;之后阴影话该区域&#xff0c;避免晃到车辆和行人。

Spring项目使用Redis限制用户登录失败的次数以及暂时锁定用户登录权限

文章目录 背景环境代码实现0. 项目结构图&#xff08;供参考&#xff09;1. 数据库中的表&#xff08;供参考&#xff09;2. 依赖&#xff08;pom.xml&#xff09;3. 配置文件&#xff08;application.yml&#xff09;4. 配置文件&#xff08;application-dev.yml&#xff09;5…

【仿写框架之仿写Tomact】四、封装HttpRequest对象(属性映射http请求报文)、HttpResponse对象(属性映射http响应报文)

文章目录 1、创建HttpRequest对象2、创建HttpResponse对象 1、创建HttpRequest对象 HttpRequest对象中的属性与HTTP协议中的内容对应&#xff0c;用于后序servlet从request中获取请求中的参数。 参照http请求报文&#xff1a; import java.io.BufferedReader; import java…

Spring-Bean的生命周期

目录 生命周期汇总 细分生命周期 1.实例化 2.属性赋值&#xff08;依赖注入&#xff09; 3.Aware接口 4.BeanPostProcessor接口 5.初始化 6.销毁 测试验证 类结构 业务类 测试类 生命周期汇总 Spring Bean 的生命周期见下图 &#xff08;一定记忆好下图&#x…

java Graphics 图片叠放在另一张图片上,生成文字图片(可设置多图一起放到底图上)

直接上代码&#xff1a; public static void createGTImage(GtInfo resultObj) {String backPath resultObj.getBackPath();String enterpriseName resultObj.getEnterpriseName();String gtResultPath resultObj.getGtResultPath();int gtResultPathX resultObj.getGtResu…

具身智能:人工智能的下一个浪潮

原创 | 文 BFT机器人 特斯拉 2023 年股东会上&#xff0c;马斯克强调了人形机器人对特斯拉未来的重要性&#xff0c;并预测其将成为公司的主要长期价值来源。他进一步表示&#xff1a;“如果人形机器人和人的比例大致为2比1&#xff0c;那么人们对机器人的需求可能达到100亿乃…

用二进制来输出一个数

用二进制来输出一个数 1&#xff0c;一个数 #include <stdio.h> #include <stdlib.h> #include <stdint.h>int main() {uint32_t m 0x00C00000;printf("m%o,m%d,m0x%x\n",m,m,m);binary(m);return 0; }2&#xff0c;方法 void binary(uint32_t…

Springboot 实践(7)springboot添加html页面,实现数据库数据的访问

前文讲解&#xff0c;项目已经实现了数据库Dao数据接口&#xff0c;并通过spring security数据实现了对系统资源的保护。本文重点讲解Dao数据接口页面的实现&#xff0c;其中涉及页面导航栏、菜单栏及页面信息栏3各部分。 1、创建html页面 前文讲解中&#xff0c;资源目录已经…