【SQL】基础增删改查

目录

前言

关键字

1. 增

1.1 代码格式

1.2 全字段插入

1.3 指定字段插入

2. 查

2.1 代码格式

2.2 查询表中所有数据

2.3 查询表中某个或某些字段

2.4 带表达式的查询

2.5 别名

2.6 distinct(去重)

2.7 SQL 中的函数调用

2.8 order by

2.9 分页查询

2.10 where

2.11 模糊匹配

3. 改

4. 删

 4.1 delete

 4.2 truncate


前言

增删改查是 SQL 中最基本也是最重要的操作,基本上所有的 SQL 代码都离不开增删改查

关键字

增:insert

删:delete

改:update

查:select

SQL 代码中是不区分大小写的,大写或小写都一样

提前建表以供插入

CREATE TABLE student (
    id INT,
    sn INT comment '学号',
    name VARCHAR(20) comment '姓名',
    qq_mail VARCHAR(20) comment 'QQ邮箱'
);

代码格式

insert into 表名(字段名) values 
    (插入的值);

全字段插入

全字段插入分为全字段单行插入和全字段批量插入,单行插入一次插入一行,批量插入一次插入多行

 单行插入

INSERT INTO student VALUES (99, 9999, '猪八戒', NULL);

 

批量插入

INSERT INTO student VALUES
	(101, 10001, "孙悟空", '11111'),
    (101, 10002, '沙悟净', 'hello');

【SQL】基础增删改查_第1张图片

指定字段插入

指定字段同样有指定字段单行插入和指定字段批量插入

 单行插入

INSERT INTO student (sn, id, name, qq_mail) VALUES 
	(102, 20001, '曹孟德', null);

 【SQL】基础增删改查_第2张图片

批量插入 

INSERT INTO student (sn, id, name, qq_mail) VALUES 
	(104, 200011, '123', null),
    (103, 2001, 'sss', 'nnn');

 【SQL】基础增删改查_第3张图片

 需要注意的是:指定字段插入时,缺少的字段会填入默认值,如果该字段没有默认值则会报错

 【SQL】基础增删改查_第4张图片

提前建表并且插入测试数据以供查询,

CREATE TABLE exam_result (
	id INT,
	name VARCHAR(20),
	chinese DECIMAL(3,1),
	math DECIMAL(3,1),
	english DECIMAL(3,1)
);

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

代码格式

select 字段名 from 表名; 

查询表中所有数据

select * from exam_result;

查询表中某个或某些字段

select id, name, english from exam_result;

【SQL】基础增删改查_第5张图片

带表达式的查询

常数

select 之后直接跟常数在某个表中查询,查询到的结果就是一列这个常数,表中原本有多少行数据,就会查询到多少行这个常数

select 后也可跟常数的运算表达式,查询到的结果就是常数的运算结果

-- 带常数的select
select 103 from exam_result;

-- 带常数运算的select
SELECT 1 + 1 FROM exam_result;

                                               

有字段参与计算的表达式

有字段参与计算的 select 查询后的结果就是表中字段数值的运算结果

SELECT id, name, id * 10 FROM exam_result;

SELECT id, name, chinese + math + english from exam_result;

 【SQL】基础增删改查_第6张图片   【SQL】基础增删改查_第7张图片

 带 bool 表达式的 select

带 bool 表达式的 select 查询到的结果是 bool 表达式为 true 时的结果

SQL 中 1 为 true ,0 为 false

select id, id > 5 from exam_result;


select id, id != 2 from exam_result;

 【SQL】基础增删改查_第8张图片  【SQL】基础增删改查_第9张图片

 与、或、非        and、or、not

select id, id > 1 and id < 5 from exam_result;


select id, id > 1 or id < 5 from exam_result;


select id, not id = 1 from exam_result;

 【SQL】基础增删改查_第10张图片  【SQL】基础增删改查_第11张图片 【SQL】基础增删改查_第12张图片

 关于 null

SQL 中只要有 null 参与的表达式,此表达式的结果仍为 null

select 1 + null from exam_result;

 【SQL】基础增删改查_第13张图片

别名

别名就是在一个表达式后面用 as 加上一个赋给该表达式的名字,as 可省略,并且别名会替换查询结果的名字

-- 以下两条是一样的
SELECT id, name, chinese + math + english AS total from exam_result;


SELECT id, name, chinese + math + english total from exam_result;

【SQL】基础增删改查_第14张图片

distinct(去重)

distinct 在代码中位于字段之前,表示对该字段进行去重,即将所有重复的字段值合并

select distinct math from exam_result;

SQL 中的函数调用

SQL 中的函数有很多,此处演示几个常用的函数

count() 

count 函数是用来统计该字段中数值的个数,即该字段在表中有多少行数据此函数返回的值就是几

select count(math) from exam_result;

avg() 

该函数返回一个字段中所有数值的平均值,该字段中的元素必须是数值元素

select avg(math) from exam_result;

min() 

该函数返回一个字段中所有数值中的最小值,该字段中的元素必须是数值元素

select min(math) from exam_result;

 其他函数可以去MySQL 函数看看

order by

order by 表示查询到的结果以某个字段为依据排序

-- 以 id 升序排序,asc 可省略
select * from exam_result order by id asc;

-- 以 id 降序排序
select * from exam_result order by id desc;

分页查询

用到的关键字:offset、limit

        offset:本页从哪一条开始

        limit:本页限制显示多少条

这两个关键字搭配 order by 来使用

-- 第一页从 第 0 个 id 开始,显示两条
select * from exam_result order by id limit 2 offset 0;

-- 第二页从 第 2 个 id 开始,显示两条
select * from exam_result order by id limit 2 offset 2;

 

where

where 后跟条件表达式,用于筛选查询后的结果

如果 where 后跟的表达式为永真的,那么将会查询到表中所有结果

-- 查询 chinese < 60 的所有结果
select * from exam_result where chinese < 60;

模糊匹配

 关键字:like                只能用于字符串类型

%:表示任意字符

-- 查询 name = 孙某
select * from exam_result where name like '孙%';

-- 查询 name = 某孙
select * from exam_result where name like '%孙';

-- 查询name = 某孙某
select * from exam_result where name like '%孙%';

代码格式

update 表明 set 字段名 = '修改的值' where 条件

 演示

 更新前

 

update exam_result set name = 123 where id = 1;

更新后

代码格式

delete from 表名 where 条件;

 delete

-- 删除 id = 1 在表中的那一行
delete from exam_result where id = 1;

truncate

代码格式

-- 清空表中的数据
truncate 表名;

你可能感兴趣的:(MySQL,mysql)