数据库的增删改查功能详解(初阶)


一、SQL注意事项

1.在命令行工具写sql时,最后用“;”表示结束整个语句;本质是输入“;”+回车,客户换才会发送sql语句到服务端,由服务端执行这条语句
2.sql的注释:- - 注释内容(- -后面要有一个空格)
创建表时使用comment,可以加在表、字段上,可以在表结构中看到
3.写sql时,表名和字段名尽量避免使用关键字,如果是关键字,在前后加`,如表名为desc,创建时就应该写为 create table `desc`
4.字符串都需要使用单引号 ‘字符串内容’

二、新增(Create)

先创建一个表:
在这里插入图片描述

1.单行数据+全列插入

在这里插入图片描述

value_list数量必须和定义表的列的数量及顺序一致

2.多行数据+指定列输入

在这里插入图片描述

三、查询(Retrieve)

语法:
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1.创建一个案例

-- 创建考试成绩表
mysql> create table score (
    -> id int,
    -> name varchar(20),
    -> math decimal(3,1),
    -> english decimal(3,1)
    -> );
    
-- 插入测试数据
mysql> insert into score (id,name,math,english) values
    -> (1,'图图',68,76),
    -> (2,'小美',90,95),
    -> (3,'壮壮',34,45),
    -> (4,'王子',99,98.5);

2.全列查询

select * from table_name;

在这里插入图片描述

通常情况下不建议使用*进行全列查询
1.查询的列越多,意味着需要传输的数据量越大
2.可能会影响到索引的使用。(索引后面讲)

3.指定列查询

在这里插入图片描述

指定列的顺序不需要按照定义表的顺序来

4.查询字段为表达式

查询字段可以是:
1.表达式
2.常量值
3.加减乘除表达式

1.表达式不包含字段:
在这里插入图片描述
2.表达式中包含一个字段:
在这里插入图片描述
3.表达式中包含多个字段:
在这里插入图片描述
但是我们会发现:如下图这样显示在表头十分不美观,于是乎,我们可以为它指定别名
在这里插入图片描述

5.别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该类的名称

mysql> select id,name,math+english sum from score;

这里的sum就是我为总分起的别名。
在这里插入图片描述

别名可以使用在字段上,作为最终显示给客户端看的表头字段
客户端看的表头字段:
可能与数据库表字段一样,也可能不一样
但是客户端(特别是以后Java程序连接MySQL作为客户端)来说,只能看到返回的表头字段

6.去重:DISTINCT

使用DISTINCT关键字对某列数据进行去重:
(由于我这里没有重复的,我这里再插入一个)
在这里插入图片描述

-- 数学的90重复了
select id,name,math from score;
+------+--------+------+
| id   | name   | math |
+------+--------+------+
|    1 | 图图   | 68.0 |
|    2 | 小美   | 90.0 |
|    3 | 壮壮   | 34.0 |
|    4 | 王子   | 99.0 |
|    5 | 小丽   | 90.0 |
+------+--------+------+
5 rows in set (0.00 sec)

-- 去重结果
select distinct math from score;
+------+
| math |
+------+
| 68.0 |
| 90.0 |
| 34.0 |
| 99.0 |
+------+
4 rows in set (0.00 sec)

可以跟多个字段
必须每个字段都相同,才能去重
和Java中根据多个属性重写hashcode和equals类似,必须重写的所有属性都一样,才表示是同样的对象

在这里插入图片描述

7.排序:ORDER BY

ASC 为升序(从小到大)
DECS为降序(从大到小)
– 默认为ASC

1.没有ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2.NULL数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
(查询同学姓名和数学成绩,按照数学成绩排序)
在这里插入图片描述
3.使用表达式及别名排序:
(查询同学名字及总分,由高到低)
在这里插入图片描述
4.可以对多个字段进行排序,排序优先级随书写顺序(先按照第一个字段排序,如果第一个字段相同,再使用第二个字段排序,以此类推)
(查询同学名字,以及各门成绩,依次按数学降序,英语升序的方式显示)
在这里插入图片描述

Java中list<自定义类型>来排序,类似于mysql的order by排序
Java中实现方式:

1.自定义类型实现comparable接口,使用Collection.sort(list)
2.Collection.sort(list,new Comparator<>(){})

其中,第一种写法耦合性更高(代码侵入性)
不修改原有的代码(自定义类型)就没有侵入性,耦合性低

8.条件查询:WHERE

比较运算符:

运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=等于,NULL不安全,例如NULL=NULL的结果是NULL
<=>等于,NULL安全,例如NULL<=>NULL的结果是TRUE(1)
!=,<>不等于
BETWEEN a0 AND a1范围匹配,[a0,a1],如果a0<=value<=a1,返回TRUE(1)
IN(option,…)如果是option中的任意一个,返回TRUE(1)
IS NULL是NULL
IS NOT NULL不是NULL
LIKE模糊匹配,%表示任意多个()包括0个任意字符,_表示任意一个字符

逻辑运算符:

运算符说明
AND多个条件都为TRUE(1),结果才是TRUE(1)
OR任意一个条件为TRUE(1),结果为TRUE(1)
NOT条件为TRUE(1),结果为FALSE(0)

注意:
1.WHERE条件可以使用表达式,但不能使用别名
2.AND的优先级高于OR,在同时使用时,需要使用小括号包裹优先执行的部分

基本查询:
在这里插入图片描述在这里插入图片描述
AND和OR:
在这里插入图片描述
在这里插入图片描述
范围查询:

1.BETWEEN…AND…
在这里插入图片描述
这种使用and也可以实现:
在这里插入图片描述
2.IN
在这里插入图片描述
使用OR也可以实现
在这里插入图片描述
模糊查询:LIKE
在这里插入图片描述

常见的方式:
包含:%模糊匹配的内容%
以XXX开头:模糊匹配的内容%
以XXX结尾:%模糊匹配的内容

NULL的查询:IS [NOT] NULL
在这里插入图片描述
在这里插入图片描述

9.分页查询:LIMIT

-- 起始下标为0

--0开始,筛选n条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从s开始,筛选n条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s,n;
-- 从s开始,筛选n条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

将表格分为三页,前两页2条记录,后一页3条记录:
在这里插入图片描述

四、修改(Update)

在这里插入图片描述

五、删除(DELETE)

在这里插入图片描述
在这里插入图片描述
注意:修改和删除操作都是要非常谨慎的,特别是在公司生产环境建议把修改和删除sql转换成查询sql,看看是否事项修改或者想删除的,再执行修改和删除.

  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dhdhdhdhg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值