MySQL数据库精研之旅第五期:CRUD的趣味探索(上)

专栏:MySQL数据库成长记

个人主页:手握风云

目录

一、CRUD简介

二、Create新增

[2.1. 语法](#2.1. 语法)

[2.2. 示例](#2.2. 示例)

三、Retrieve检索

[3.1. 语法](#3.1. 语法)

[3.2. 示例](#3.2. 示例)


一、CRUD简介

CURD是对数据库中的记录进行基本的增删改查操作:Create(创建)、Retrieve(检索)、Update(更新)、Delete(删除)。

二、Create新增

2.1. 语法

sql 复制代码
INSERT [INTO] 表名 [(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...

value_list: value, [, value] ...

定义表列名时,可以是一个也可以是多个;VALUES表示当前要插入的值,可以是多个,值的个数要与列的个数对应;多个值之间要用逗号隔开。

2.2. 示例

sql 复制代码
-- 设计一张商品表
/*
 商品名称
 商品价格
 商品库存
 商品描述
*/

create table if not exists goods(
  `name` varchar(30) comment '商品名称',
  price bigint comment '商品价格',
  inventory bigint comment '商品库存',
  description varchar(100) comment '商品描述'
);
  • 单行数据全列插入与指定列插入
sql 复制代码
-- value_list 中值的数量必须和定义表的列的数量及顺序⼀致
insert into goods values('可乐',3,100,'瓶装');

-- 指定列插入
-- value_list 中值的数量必须和定义表的列的数量及顺序⼀致
insert into goods values('可乐',3,100,'瓶装');
insert into goods(price,`name`,description,inventory) values(4,'面包','吐司',50);

运行与查询结果:

  • 多行数据指定列插⼊
sql 复制代码
insert into goods(`name`,price,inventory,description) values('方便面',5,60,'红烧牛肉味'),('铅笔',2,40,'HD');

在我们平时使用SQL语句去操作数据库的时候,每一个SQL语句都会和服务器建立联系,一次性插入多行数据就可以减少客户端服务器与数据库之间的连接次数。

如果说某个字段没有写入数据,那就会默认为空。

sql 复制代码
insert into goods (name,price,inventory) values ('鸡蛋',1,75);

| 鸡蛋   |     1 |        75 | NULL        |
+--------+-------+-----------+-------------+

三、Retrieve检索

3.1. 语法

sql 复制代码
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}]

3.2. 示例

  • 全列查询
sql 复制代码
-- 构造数据
create table exam (
  id bigint,
  `name` varchar(30) comment '姓名',
  chinese float comment '语文成绩',
  math float comment '数学成绩',
  English float comment '英语成绩'
);

-- 插入数据
insert into exam (id,`name`,chinese,math,English) values
(1,'张三',68,84,79),
(2,'李四',76,81,80),
(3,'王五',89,66,73),
(4,'赵六',74,85,86);

select * from exam;
  • 指定列查询
sql 复制代码
-- 查询所有人的学号、姓名、语文成绩
select id,`name`,chinese from exam;

在select后⾯的查询列表中指定希望查询的列,可以是⼀个也可以是多个,中间⽤逗号隔开指定列的顺序与表结构中的列的顺序无关。

  • 查询字段为表达式
sql 复制代码
-- 表达式为一个常量
select id,`name`,10,'查看详情' from exam;

查询列表中的表达式可以是表中不存在的值或列,如果时字符串常量要用单引号引起。返回的结果集是一个临时表中的数据,并不一定数据表中的数据相同。只是列中的值从物理表中获取,结果集放在临时表中。

sql 复制代码
-- 把所有学⽣的语⽂成绩加10分
select `name`,chinese,chinese + 10 from exam;

"chinese + 10"表示对"chinese"这个列进行加10的计算,最终返回一个运算结果。

sql 复制代码
-- 计算总分
select `name`,chinese + math + English from exam;
  • 为查询结果指定别名

返回结果中的表头不太符合我们的要求,我们也是可以进行修改的。

sql 复制代码
select `name`,chinese + math + English as '总分' from exam;

别名中的引号可以省略,但如果别名中有空格则单引号不能省略。

  • 结果去重查询
sql 复制代码
-- 去重查询
insert into exam (id,`name`,chinese,math,English) values(5,'钱七',71,84,66);
select distinct math from exam;

去重时,要求所有列的值都必须相同,MySQL才会判定为重复记录。

注意:查询时不加限制条件会返回表中所有结果,如果表中的数据量过大,会把服务器的资源消耗殆尽;在生产环境不要使不加限制条件的查询。

相关推荐
IT成长日记3 小时前
【MySQL基础】聚合函数从基础使用到高级分组过滤
数据库·mysql·聚合函数
Guarding and trust5 小时前
python系统之综合案例:用python打造智能诗词生成助手
服务器·数据库·python
夜间出没的AGUI5 小时前
SQLiteBrowser 的详细说明,内容结构清晰,涵盖核心功能、使用场景及实用技巧
数据库
不再幻想,脚踏实地6 小时前
MySQL(一)
java·数据库·mysql
Tyler先森7 小时前
Oracle数据库数据编程SQL<3.5 PL/SQL 存储过程(Procedure)>
数据库·sql·oracle
KevinRay_8 小时前
从零开始学习SQL
数据库·学习·mysql
Json_181790144808 小时前
python采集淘宝拍立淘按图搜索API接口,json数据示例参考
服务器·前端·数据库
Albert Tan8 小时前
Oracle 10G DG 修复从库-磁盘空间爆满导致从库无法工作
数据库·oracle
好记忆不如烂笔头abc8 小时前
oracle-blob导出,在ob导入失败
大数据·数据库·python