【MySQL笔记】MySQL表的增删改查(CRUD)


复习MySQL | MySQL库、表的基本操作

前言:什么是 CRUD ?

CRUD 其实就是对数据库中的记录进行增删改查的操作,每个字母都是 “增删改查” 的首字母:

  • C : Creat(创建)
  • R : Retrieve (读取)
  • U : Update (更新)
  • D : Delete (删除)

注: 增删改查操作的是表中的数据行!

一、Creat 新增

1.1 语法

INSERT  [INTO] 表名
	[(列名 [,列名]...)]
VALUES
	(value_list)[, (value_list)]...

//值列表	
value_list: value, [, value]...

简单来说就是:

insert into 表名 [列名...] values (...);

1.2 示例

首先创建一张表,见下图:

在这里插入图片描述

1.2.1 单行数据全列插入

在这里插入图片描述

插入成功!
所插入的值的数量必须和定义表的列的数量和顺序一致!

1.2.2 单行数据指定列插入

这里指定在 id 列和 name 列插入 “2 ,李四”
在这里插入图片描述

1.2.3 多行数据指定列插入

这里指定在 id 列和 name 列插入 “3 ,王五” ,“4 ,赵六”
在这里插入图片描述

二、Retrieve 检索

2.1 语法

SELECT
[DISTINCT]    -- 去重
select_expr [, select_expr] ...
[FROM table_references]    -- 从哪个表
[WHERE where_condition]    -- 查询条件
[GROUP BY {col_name | expr}, ...]    -- 根据什么分组
[HAVING where_condition]   -- 对分组的结果进⾏过滤
[ORDER BY {col_name | expr } [ASC | DESC], ... ]   -- 排序
[LIMIT {[offset,] row_count | row_count OFFSET offset}]  -- 限制

在exam表中插入以下数据:

-- 插入测试数据
INSERT INTO exam (id, name, chinese, math, english) VALUES
(1, '唐三藏', 67, 98, 56),
(2, '孙悟空', 87, 78, 77),
(3, '猪悟能', 88, 98, 90),
(4, '曹孟德', 82, 84, 67),
(5, '刘⽞德', 55, 85, 45),
(6, '孙权', 70, 73, 78),
(7, '宋公明', 75, 65, 30);

2.2 示例

2.2.1 全列查询

select * from 表名;
// *表示所有列   返回表中所有信息

注意: 在工作中,select * from 表名; 是个非常危险的操作,为在生产环境中,一个表中的数据量非常大,有可能是TB级,每一个查询执行的时候会有磁盘开销和网络开销,如果不加限制会把服务器的资源吃完!!!

在这里插入图片描述

2.2.2 指定列查询

select 列名、列名... from 表名;

在这里插入图片描述

要查询的列只要在表中即可,与顺序无关。

2.2.3 查询字段为表达式

例子:

select id, name, chinese, 10 from exam; -- 可以是一个常量
select id, name, chinese, 10 + 1 from exam; -- 可以是一个表达式
select id, name, chinese + math + english from exam; -- 可以是一个表达式 
select id, name, chinese + math + english (as) total from exam;-- 可以为列重命名,直接在列明后边写,可以加as也可以不加

以上四个代码示例的执行结果如下:

在这里插入图片描述

2.2.4 结果去重查询

select math from exam;
select distinct math from exam;  -- 加distinct关键字对查询结果去重

结果1中的两个98变成了一个98

在这里插入图片描述

2.2.5 where条件查询

用法:直接在 where 后边加查询条件
示例:

select id, name, math from exam;
select id, name, math from exam where math > 90;  -- 查询数学成绩大于90分的同学

查询结果:

在这里插入图片描述

2.2.6 order by排序

示例:
将数学成绩大于80分的同学按 升序(asc) / 降序(desc) 排序;

select id, name, math from exam where math > 80 order by math asc;-- 升序
select id, name, math from exam where math > 80 order by math desc;-- 降序

查询结果:

在这里插入图片描述

注意:
• 查询中没有ORDER BY 子句,返回的顺序是未定义的,永远不要依赖这个顺序
• ORDER BY 子句中可以使用列的别名进行排序
• NULL 进行排序时,视为比任何值都小,升序出现在最上面,降序出现在最下面

2.2.7 分页查询

-- 起始下标为 0
-- 从 0 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
-- 从 start 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start, num;
-- 从 start 开始,筛选 num 条结果,⽐第⼆种⽤法更明确,建议使⽤
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;

示例:

select id, name, chinese + english + math total from exam;
select id, name, chinese + english + math total from exam limit 2;-- 从0开始往后查询两条
select id, name, chinese + english + math total from exam limit 1,2;-- 从1开始向后查询两条,不包括1
select id, name, chinese + english + math total from exam limit 2 offset 1;
-- 从记录为1的位置开始向后读取两条记录,不包括1

查询结果:

在这里插入图片描述

三、Update 修改

语法:

UPDATE table_reference -- 表名
SET assignment [, assignment] ...  --哪个列,什么值
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

简单来说就是:

update 表名 set 列名 =...;

示例:将孙悟空的数学成绩修改为80分
代码:

update exam set math = 80 where name = '孙悟空';

执行结果:

在这里插入图片描述

update 注意事项:

  1. 在原值的基础上做变更时,不能使用math+=30这样的语法,要使用math = math + 30
  2. 不加where条件时,会导致全表数据被更新,必须谨慎操作!!!

四、Delete 删除

语法:

DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

示例1:删除孙悟空同学的考试成绩

delete from exam where name = '孙悟空';

在这里插入图片描述
示例2:删除整张表的数据
语法:

delete from exam;

在这里插入图片描述

注意:
执行 delete 时不加条件会删除整张表的数据,谨慎操作

C# VS2012 86系统 mysql-5.5.27-win32 功能:利用动软代码生成器 从 数据库或者视图中生成 的三层结构代码 实现 数据增删改查。 如果可以,请下载资源中 修改 的动软代码生成器 C#模板生成 1、由于之前使用 动软生成 java 网页源码,比较成功,此处编写C#程序时沿用,感觉更加适合。 2、直接调用动软的相关dll和生成的三层代码,可以较快的实现增删改查操作。 3、由于一些dll版本的问题及动软生成器自身的一些不完善,产生了一些问题并查找了挺久,所以把可以实现的版本发布出来共享。 前提: 使用的是 mysql数据库时才可能会出现以下问题 问题: 1、MySql.Data.dll 必须是5.6.1以上版本,否则会出现 “向信号量添加给定计数将导致其超出它的最大计数” 的问题。 2、动软代码生成时,必须增加该命名空间 using MySql.Data.MySqlClient; 3、动软代码必须修改 “工具”-“选项”弹出窗 后,点击 ”代码生成设置“-”字段类型映射“-”参数符号“中删除 mysql @,添加mysql ? 4、如果不修改3的设置,在增删改时 参数设置会失败。 5、mysql保存或者修改时,中文会出现乱码,这时必须 在DbHelperMySQL类的 连接字中增加Charset=utf8;即 protected static string connectionString = "Server=localhost;User Id=root;Password=root;Persist Security Info=True;Database=mnzfz;Charset=utf8;"; 6、如果要在局域网中远程访问,请 修改 mysql 权限:grant select,update,insert,delete on *.* to 'root'@'192.168.0.1' identified by "123456";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值