javaweb01--mysql的介绍和增删改查操作

news2024/11/15 23:59:13

文章目录

    • Mysql的介绍和增删改查
      • 说明
      • 1. mysql的登陆和退出
        • 11 登陆
        • 1.2 退出
      • 2. SQL语法的简单介绍
        • 2.1 语法
        • 2.2 SQL分类
      • 3. SQL主要操作语句
        • 3.1 DDL:操作数据库
          • 3.1.1 查询
          • 3.1.2 创建数据库
          • 3.1.3 删除数据库
          • 3.1.4 使用数据库
        • 3.2 DDL:操作表
          • 3.2.1 查询表
          • 3.2.2 创建表
          • 3.2.3 数据类型
          • 3.2.4 删除表
          • 3.2.5 修改表
        • 3.3 DML
          • 3.3.1 添加数据
          • 3.3.2 修改数据
          • 3.3.3 删除数据
        • 3.4 DQL
          • 3.4.1 语法
          • 3.4.2 条件查询(用的最多哦)
          • 3.4.3 模糊查询
          • 3.4.4 排序查询
          • 3.4.5聚合函数
          • 3.4.6分组查询
          • 3.4.7 分页查询

Mysql的介绍和增删改查

说明

hello 各位小伙伴大家好呀!

新的一年啦, 博主羊羊在这里给各位拜年啦

祝各位小伙伴们,新的一年里,活得自在潇洒,钱包鼓鼓,身体健康。

开始上班啦😭!

简单的介绍一下,博主写这个教程(哈哈 往自己脸上又贴金了 嘿嘿😁,这个最多只能算一个博主的个人学习笔记吧)的目的哈。

博主之所以写这个一个呢,主要是为了巩固和加强博主学的javaweb的相关知识,不然老忘记感觉学历和没学 没啥差别(各位小伙伴们也可以这样,通过一种 教的方法来巩固自己的所学)。

这些主要的素材来自与B站的黑马程序员视频。

1. mysql的登陆和退出

11 登陆

右键开始菜单,选择命令提示符,打开黑框。
在黑框中输入,mysql -u root -p1234,回车,出现下图且左下角为mysql>,则登录成功。

mysql -u root -p1234
-- root是用户名,因为-h 和 -p都是默认所以可以省略不写

到这里你就可以开始你的MySQL之旅了!

登陆参数:

mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -p端口号(默认3306)

1.2 退出

退出mysql:

exit
quit

2. SQL语法的简单介绍

2.1 语法

  • SQL 语句可以单行或多行书写,但是需要以分号结尾。

  • MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。

  • 注释

    • 单行注释: – 注释内容 或 #注释内容(MySQL 特有)

      注意:使用-- 添加单行注释时,–后面一定要加空格,而#没有要求。

    • 多行注释: /* 注释 */

2.2 SQL分类

  • DDL: 数据定义语言,用来定义数据库对象:数据库,表,列等

    DDL简单理解就是用来操作数据库,表等(主要是针对数据库的)

  • DML: 数据操作语言,用来对数据库中表的数据进行增删改。(经常使用

  • DQL:数据查询语言,用来查询数据库中表的记录(数据)进行查询操作。(经常使用

  • DCL:数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户。

下面来简单和小伙伴们介绍一下这几个操作。

3. SQL主要操作语句

3.1 DDL:操作数据库

3.1.1 查询

查询所有的数据库

SHOW DATABASES;

上述查询到的是的这些数据库是mysql安装好自带的数据库,以后不要操作这些数据库(自己创建数据库然后操作着玩)。

3.1.2 创建数据库
  • 创建数据库
CREATE DATABASE 数据库名称;

而在创建数据库的时候,我并不知道数据库有没有创建,直接再次创建名为已存在的数据库时就会出现错误。

为了避免上面的错误,在创建数据库的时候先做判断,如果不存在再创建。

  • 创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS 数据库名称;
3.1.3 删除数据库
  • 删除数据库
DROP DATABASE 数据库名称;
  • 删除数据库(判断,如果存在则删除)
DROP DATABASE IF EXISTS 数据库名称;
3.1.4 使用数据库

数据库创建好了,要在数据库中创建表,得先明确在哪儿个数据库中操作,此时就需要使用数据库。

  • 使用数据库
USE 数据库名称;
  • 查看当前使用的数据库
SELECT DATABASE();

运行语句效果如下:

image-20210721224720841

3.2 DDL:操作表

操作表也就是对表进行增(Create)删(Retrieve)改(Update)查(Delete)。

3.2.1 查询表
  • 查询当前数据库下所有表的名称
SHOW TABLES;
  • 查询表结构
DESC 表名称;

查看mysql数据库中func表的结构。

use mysql;
desc func;
3.2.2 创建表
  • 创建表
CREATE TABLE 表名 (
	字段名1  数据类型1,
	字段名2  数据类型2,
	…
	字段名n  数据类型n
);

注意:最后一行末尾,不能加逗号

知道了创建表的语句,那么我们创建创建如下结构的表

create table tb_user (
	id int,
    username varchar(20),
    password varchar(32)
);
3.2.3 数据类型

MySQL 支持多种类型,可以分为三类:

  • 数值

    tinyint : 小整数型,占一个字节
    int	: 大整数类型,占四个字节
    	eg : age int
    double : 浮点类型
    	使用格式: 字段名 double(总长度,小数点后保留的位数)
    	eg : score double(5,2)   
    
  • 日期

    date : 日期值。只包含年月日
    	eg :birthday datedatetime : 混合日期和时间值。包含年月日时分秒
    
  • 字符串

    char : 定长字符串。
    	优点:存储性能高
    	缺点:浪费空间
    	eg : name char(10)  如果存储的数据字符个数不足10个,也会占10个的空间
    varchar : 变长字符串。
    	优点:节约空间
    	缺点:存储性能底
    	eg : name varchar(10) 如果存储的数据字符个数不足10个,那就数据字符个数是几就占几个的空间	
    

注意:其他类型参考资料中的《MySQL数据类型].xlsx》

案例:

需求:设计一张学生表,请注重数据类型、长度的合理性
	1. 编号
	2. 姓名,姓名最长不超过10个汉字
	3. 性别,因为取值只有两种可能,因此最多一个汉字
	4. 生日,取值为年月日
	5. 入学成绩,小数点后保留两位
	6. 邮件地址,最大长度不超过 64
	7. 家庭联系电话,不一定是手机号码,可能会出现 - 等字符
	8. 学生状态(用数字表示,正常、休学、毕业...)

语句设计如下:

create table student (
	id int,
    name varchar(10),
    gender char(1),
    birthday date,
    score double(5,2),
    email varchar(15),
    tel varchar(15),
    status tinyint
);
3.2.4 删除表
  • 删除表
DROP TABLE 表名;
  • 删除表时判断表是否存在
DROP TABLE IF EXISTS 表名;
3.2.5 修改表
  • 修改表名
ALTER TABLE 表名 RENAME TO 新的表名;
-- 将表名student修改为stu
alter table student rename to stu;
  • 添加一列
ALTER TABLE 表名 ADD 列名 数据类型;

-- 给stu表添加一列address,该字段类型是varchar(50)
alter table stu add address varchar(50);
  • 修改数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;

-- 将stu表中的address字段的类型改为 char(50)
alter table stu modify address char(50);
  • 修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

-- 将stu表中的address字段名改为 addr,类型改为varchar(50)
alter table stu change address addr varchar(50);
  • 删除列
ALTER TABLE 表名 DROP 列名;

-- 将stu表中的addr字段 删除
alter table stu drop addr;

3.3 DML

DML主要是对数据进行增(insert)删(delete)改(update)操作。

3.3.1 添加数据
  • 给指定列添加数据
INSERT INTO 表名(列名1,列名2,) VALUES(1,2,);
  • 给全部列添加数据
INSERT INTO 表名 VALUES(1,2,);
  • 批量添加数据
INSERT INTO 表名(列名1,列名2,) VALUES(1,2,),(1,2,),(1,2,);
INSERT INTO 表名 VALUES(1,2,),(1,2,),(1,2,);
  • 练习

为了演示以下的增删改操作是否操作成功,故先将查询所有数据的语句介绍给大家:

select * from stu;
-- 给指定列添加数据
INSERT INTO stu (id, NAME) VALUES (1, '张三');
-- 给所有列添加数据,列名的列表可以省略的
INSERT INTO stu (id,NAME,sex,birthday,score,email,tel,STATUS) VALUES (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);

INSERT INTO stu VALUES (1,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);

-- 批量添加数据
INSERT INTO stu VALUES 
	(2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1),
	(2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1),
	(2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);
3.3.2 修改数据
  • 修改表数据
UPDATE 表名 SET 列名1=1,列名2=2,[WHERE 条件] ;

注意:

  1. 修改语句中如果不加条件,则将所有数据都修改!
  2. 像上面的语句中的中括号,表示在写sql语句中可以省略这部分
  • 练习

    • 将张三的性别改为女

      update stu set sex = '女' where name = '张三';
      
    • 将张三的生日改为 1999-12-12 分数改为99.99

      update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';
      
    • 注意:如果update语句没有加where条件,则会将表中所有数据全部修改!

      update stu set sex = '女';
      
3.3.3 删除数据
  • 删除数据
DELETE FROM 表名 [WHERE 条件] ;
  • 练习
-- 删除张三记录
delete from stu where name = '张三';

-- 删除stu表中所有的数据
delete from stu;

3.4 DQL

查询的全部语法。

SELECT 
    字段列表
FROM 
    表名列表 
WHERE 
    条件列表
GROUP BY
    分组字段
HAVING
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定

为了给大家演示查询的语句,我们需要先准备表及一些数据:

-- 删除stu表
drop table if exists stu;


-- 创建stu表
CREATE TABLE stu (
 id int, -- 编号
 name varchar(20), -- 姓名
 age int, -- 年龄
 sex varchar(5), -- 性别
 address varchar(100), -- 地址
 math double(5,2), -- 数学成绩
 english double(5,2), -- 英语成绩
 hire_date date -- 入学时间
);

-- 添加数据
INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date) 
VALUES 
(1,'马运',55,'男','杭州',66,78,'1995-09-01'),
(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张学右',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');
3.4.1 语法
  • 查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; -- 查询所有数据
  • 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
  • 起别名
AS: AS 也可以省略
3.4.2 条件查询(用的最多哦)
SELECT 字段列表 FROM 表名 WHERE 条件列表;
  • 条件

条件列表可以使用以下运算符

运算符

null值的比较不能使用 = 或者 != 。需要使用 is 或者 is not

3.4.3 模糊查询

模糊查询使用like关键字,可以使用通配符进行占位:

(1)_ : 代表单个任意字符

(2)% : 代表任意个数字符

  • 查询姓’马’的学员信息

    select * from stu where name like '马%';
    
  • 查询第二个字是’花’的学员信息

    select * from stu where name like '_花%';
    
  • 查询名字中包含 ‘德’ 的学员信息

    select * from stu where name like '%德%';
    
3.4.4 排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2];

上述语句中的排序方式有两种,分别是:

  • ASC : 升序排列 (默认值)
  • DESC : 降序排列

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

  • 查询学生信息,按照年龄升序排列

    select * from stu order by age ;
    
  • 查询学生信息,按照数学成绩降序排列

    select * from stu order by math desc ;
    
  • 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列

    select * from stu order by math desc , english asc ;
    
3.4.5聚合函数

聚合函数分类

函数名功能
count(列名)统计数量(一般选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值
SELECT 聚合函数名(列名) FROM;

注意:null 值不参与所有聚合函数运算

练习

  • 统计班级一共有多少个学生

    select count(id) from stu;
    select count(english) from stu;
    

    上面语句根据某个字段进行统计,如果该字段某一行的值为null的话,将不会被统计。所以可以在count(*) 来实现。* 表示所有字段数据,一行中也不可能所有的数据都为null,所以建议使用 count(*)

    select count(*) from stu;
    
  • 查询数学成绩的最高分

    select max(math) from stu;
    
  • 查询数学成绩的最低分

    select min(math) from stu;
    
  • 查询数学成绩的总分

    select sum(math) from stu;
    
  • 查询数学成绩的平均分

    select avg(math) from stu;
    
  • 查询英语成绩的最低分

    select min(english) from stu;
    
3.4.6分组查询
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

练习

  • 查询男同学和女同学各自的数学平均分

    select sex, avg(math) from stu group by sex;
    

    注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

    select name, sex, avg(math) from stu group by sex;  -- 这里查询name字段就没有任何意义
    
  • 查询男同学和女同学各自的数学平均分,以及各自人数

    select sex, avg(math),count(*) from stu group by sex;
    
  • 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组

    select sex, avg(math),count(*) from stu where math > 70 group by sex;
    
  • 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的

    select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*)  > 2;
    

where 和 having 区别:

  • 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。

  • 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。

3.4.7 分页查询

这个查询的方式在后面的后台数据用页数显示的时候经常可以见到。

SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数;

注意: 上述语句中的起始索引是从0开始

练习

  • 从0开始查询,查询3条数据

    select * from stu limit 0 , 3;
    
  • 每页显示3条数据,查询第1页数据

    select * from stu limit 0 , 3;
    
  • 每页显示3条数据,查询第2页数据

    select * from stu limit 3 , 3;
    
  • 每页显示3条数据,查询第3页数据

    select * from stu limit 6 , 3;
    

从上面的练习推导出起始索引计算公式:

起始索引 = (当前页码 - 1) * 每页显示的条数

这个 博主都是让大家快速入门,知道怎么使用他们,并不是那种可以应对面试,的非常详细的介绍哈。(想要详细的,博主建议还是买相关的技术书籍来看)。

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

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

相关文章

《梁启超家书》笔记二——一个人若是在舒服的环境中会消磨志气,那么在困苦懊丧的环境中也一定会消磨志气

目录 一、做事的态度 二、学习与未来 三、发挥其个性之特长,以靖献于社会 四、鼓励相信孩子 五、犯错 六、身体健康 七、做事 八、与费用相关 九、在困苦中求快活 十、让孩子自由决策与建议 十一、处事态度:不要悲观 十二、时事分析 一、做事…

在IDEA中获取文件绝对路径(通用方式)

package com.javase.reflect;/*** 关于文件路径问题* 以前我们都是在IDEA中,依据IDEA默认的当前路径:project的根来获取文件,但是这种方法有它的局限性,那就是当代码离开了IDEA* 换到了其他位置,我们就找不到文…

基于 Tensorflow 2.x 使用 MobileNetV2 微调模型优化训练花卉图像识别模型

一、模型微调 上篇文章我们通过搭建三层卷积模型,训练了花卉图像识别模型,最后经验证集验证后准确率大约为 75% ,本篇文章对该数据集进行优化,提高识别的准确度。本篇文章中对于数据集的读取强化不做过多的介绍了,大家…

免拆机,Kindle固件版本5.10.3~5.13.3如何越狱?简单、易操作版

前言 之前有出过Kindle的越狱教程: 无需拆机,Kindle 全系列 5.12.2.2 ~ 5.14.2版本如何越狱?如何安装第三方插件 确实可以越狱,使用的漏洞也是: KindleDrip — From Your Kindle’s Email Address to Using Your C…

ubuntu18.04下mysql数据库C语言API封装

mysql C语言API操作数据库比较繁琐,可以将其封装起来,这样使用比较方便,下面是一种封装方式。 目录 1.连接封装 2.连接池封装 3.测试代码 1.连接封装 将数据库连接进行封装,主要提供如下接口: (1&…

L2-030 冰岛人

2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下: 冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀&#x…

torchnet.meter使用教程

前言 最近项目开发过程中遇到了torchnet.metertorchnet.metertorchnet.meter来记录模型信息,搜了好多篇博客潦潦草草,没有一点干货,于是根据官方代码和官方文档,基于自己的理解,制定了使用教程: torchnet简介 torch…

一句话实现报表生成PDF同时通过outlook发送

元旦节快乐 哈喽,大家2023年好呀! 今天,元旦最后一天,给大家分享什么好玩的示例呢? 让我来想想,嗯?这样可以吗?一句话就实现将报表生成PDF,同时可以编辑一些信息并通过…

【源码分享】java多用户B2B2C商城源码带WAP手机端源码

分享一款非常不错的java多用户B2B2C商城源码,带WAP手机端源码,源码地址在文末。 需要源码学习,可私信我获取。 一、技术构架: 开发语言: Java1.7 数 据 库 : MySQL5.5 数据库持久层:阿里巴巴…

车载诊断协议UDS——会话模式状态机Session

UDS之Session服务 会话模式管控是汽车电子诊断范畴很重要的两个状态机之一(另一个是安全访问),不同的会话模式是用来区分诊断服务执行权限。 一位非常尊敬的业内前辈曾举如下例子来形容这个状态机:不同的场景,喝对应的酒! 公司商务场合下,对应的酒是红酒;长辈酒桌上,对…

Redis 哨兵模式

哨兵是一个分布式系统,你可以在一个架构中运行多个哨兵进程,这些进程使用流言协议来接收关于Master主服务器是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。 一、哨兵模式概述 1.1…

ubuntu做系统常见出错处理方法1

1.不能分区解决办法(安装ubuntu没有出现安装选项,也就是找不到硬盘分区怎么办?-爱码网) 解决办法是进入bios模式(一般都是重启时反复按f12,不同电脑型号可自行查阅)把硬盘模式从raid调整为ahci(System configuration–&#xff…

方差和标准差的意义

文章目录案例:箭靶案例:身高案例:身高体重在此前一篇文章 《算法效果评估:均方根误差(RMSE)/ 标准误差》中,我们介绍了方差/标准差的计算方法,也点出了它们是用来“度量数据离散程度…

linux系统中wifi驱动的配置与编译实现方法

大家好,今天主要和大家聊一聊,如何使用linux系统中的WIFI驱动完成相应的实验。 目录 第一:WIFI驱动添加与编译方法 第二:将驱动代码添加到linux内核中 第三:配置Linux内核 第四:编译WIFI驱动 第一&…

YOLOv5更换骨干网络之 MobileNetV3

论文地址:https://arxiv.org/abs/1905.02244 代码地址:https://github.com/xiaolai-sqlai/mobilenetv3 我们展示了基于互补搜索技术和新颖架构设计相结合的下一代 MobileNets。MobileNetV3通过结合硬件感知网络架构搜索(NAS)和 N…

MySQL基础篇

MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以“…

网络类型实验

1.先配ip [Huawei]sysname R1 [R1]interface GigabitEthernet 0/0/1 [R1-GigabitEthernet0/0/1]ip add 192.168.1.1 24 [R1-GigabitEthernet0/0/1]int s 4/0/0 [R1-Serial4/0/0]ip add 12.1.1.1 24 其他同理 2.写三条缺省指向R2来使网络通 [R1]ip route-static 0.0.0.0 0 12…

【王道操作系统】3.1.1 什么是内存?进程的基本原理,深入指令理解其过程

什么是内存?进程的基本原理,深入指令理解其过程 文章目录什么是内存?进程的基本原理,深入指令理解其过程1.什么是内存?有何作用?2.进程运行的基本原理2.1 指令的工作原理---操作码若干参数2.2 逻辑地址(相对…

C++类和对象3:关于类内部的更多细节

目录 初始化列表: explicit关键字 ​编辑 static成员 友元 内部类 匿名对象 拷贝对象时的一些编译器优化 我们已经接触过了构造函数,其功能可以很方便的帮助我们为变量赋值,但是在这里并不是初始化,因为一个构造函数可以为几…

02 Hadoop概述

Hadoop概述1、Hadoop是什么2、Hadoop版本3、HDFS、YARN、MapReduce(1) HDFS(2)YARN(3)MapReduce(3)Hadoop模块之间的关系1、Hadoop是什么 是一个由Apache基金会开发的分布式系统基础…