✨✨hello,愿意点进来的小伙伴们,你们好呐!
????????系列专栏:【MySQL初阶】
????????本篇内容:详解MySQL增删查改
????????作者简介:一名现大二的三非编程小白,日复一日,仍需努力。
前言
在MySQL的基础操作中增删查改是很常用的一种语句,在网络上也有人调侃自己为增删查改程序员,那么增删查改的语句与细节你是否清楚呢,增删查改中的增删改的语句很简单,然后查的数据很复杂,这一章我们就把重点放在查上面。
INSERE 语句:
基本语句: INSERT INTO table_name VALUES(…)
往table_name的表中添加数据。
下面的代码简单的演示了insert的使用,
- 先创建一个goods表,然后在该表中添加数据。
很简单的一个操作,好像也没有什么的,接下来我们来看看INSERT语句的细节。
#演示insert
CREATE TABLE goods(
id INT,
goods_name VARCHAR(8),
price DOUBLE);
INSERT INTO goods
VALUES(1,'华为手机',2550);
细节:
????????????1. 在插入的数据应该与对于的字段的数据类型相同
比如说把 ‘abc’ 的数据存放到 INT 的类型的话是不可行的
但是也会有一中例外,我们会发现往 INT 类型的数据存入 ‘123’ 好像就没有问题,可以成功存入,这个是为什么呢?
这个其实也是很容易理解的,我们可以记得在Java中有一中方法可以将字符串类型的数据转为int类型,但是要求是可以转的类型,所以abc的字符串其实是没办法转为int类型的,而2的字符串是可以转成功的,
????????在MySQL的存放中它会尝试进行转化,看是否能成功。
????????????2.数据存储的长度应该在创建表时规定的范围内。
你不可以将一个长度为80的字符串存到长度为40的列中。
????????????3.在values中将要存入的数据位置必须与被加入的列的排列顺序相对应
像这样子的话就是没办法通过的,因为表名后面括号内的数据要与存进去的数据一一对应,这样子的话会导致类型不符合。
当然我们也可以往列中存进两个数据,然后另一个字段不存数据,
这样子没有存入数据的话,因为我们在创建的时候没有指定 not null 不为空值,那么就会默认给null值。
怎么现在有引出了一个默认值的概念,在我们创建表的时候其实是可以指定默认值的,因为我们没有指定且没有指定不为null,所以,默认值就为null。
4.在往表中添加列的时候也可以同时添加多列。
OUPDATE 语句:
基本语句:
UPDATE table_name SET 【…】 WHERE 【…】
接下来看看UPDATE语句的基本使用:
我们想修改goods表中的所有手机的价格改为5000
我们想将小米手机的价格改为4000
我们要将苹果手机在原有的价格上调2000
细节:
????????????1.UPDATE语句使用WHERE语句的话,指定可以更新哪些行,如果没有该语句则更新的是全部行。
????????????2.如果需要修改多个字段,可以在SET后面多指定字段。
UPDATE goods
SET price = 5000,id = 80
WHERE goods_name = '小米手机';
DELETE
基本语法:
DELETE FROM table_name WHERE【…】删除表中名称为小米手机的一列
细节:
1.如果不使用where子句,将表中的所有数据删除。
2. delect语句中不能删除记录,不删除表本身。如果要删除表,使用drop
3 .DELECT 语句不能删除某一列的值,我们可以使用update改变使其为 null 和 ’ ’
SELECT 语句:
在学习SELECT语句之前我们必须先创建一张表,用来SELECT。— 创建一张学生表
#select 单表
#select 关键字
CREATE TABLE students(
id INT NOT NULL DEFAULT 1,
`name` VARCHAR(20) NOT NULL DEFAULT 0.0,
chinese FLOAT NOT NULL DEFAULT 0.0,
english FLOAT NOT NULL DEFAULT 0.0,
math FLOAT NOT NULL DEFAULT 0.0
);
INSERT INTO students
VALUES(1,'韩顺平',89,78,90);
INSERT INTO students
VALUES(2,'张飞',67,98,56);
INSERT INTO students
VALUES(3,'宋江',87,78,77);
INSERT INTO students
VALUES(4,'关羽',88,98,90);
INSERT INTO students
VALUES(5,'赵云',82,84,67);
INSERT INTO students
VALUES(6,'欧阳锋',55,85,45);
INSERT INTO students
VALUES(7,'黄蓉',75,65,30);
INSERT INTO students
VALUES(8,'韩sp',85,65,30);
基本用法:
1.
#演示select
#查询所有学生的信息
SELECT * FROM students;
# * 代表所有没有特别指定
2.
#演示select
#查询表中所有学生的姓名和英语成绩
SELECT `name` , english FROM students;
# `name` , english 代表 查询name 与英语成绩
3.
我们要注意,只有查询的记录每个字段都相同,才会去重。
#演示select
#查询表中所有学生的英语成绩,过滤掉一样的数据
SELECT DISTINCT english FROM students;
# DISTINCT 过滤掉相同的成绩。
4.在查询过程中我们可以对查询的列进行运算:
#演示select
SELECT `name` ,(english + chinese + math) FROM students;
然后我们会发现,就是分数的总和的列表示很难看,有一种语法可以修改这种情况----使用别名
5.别名的使用
#演示select
SELECT `name` ,(english + chinese + math) AS score FROM students;
6.统计每个学生的总分加10分的情况:
#演示select
SELECT `name` ,(english + chinese + math + 10) AS score FROM students;
在SELECT中也有运算符---- 逻辑运算符与比较运算符
7.查询id为5的学生的成绩。
#演示select
SELECT * FROM students
WHERE id = 5;
8.查询英语成绩大于90的同学的成绩。
#演示select
SELECT * FROM students
WHERE english > 90;
9.查询英语分数在70 - 80之间的同学,这时候我们可以使用运算符 BETWEEN AND
#演示select
SELECT * FROM students
WHERE english BETWEEN 80 AND 90;
10 .查询总分为179,180,181的同学 ,可以使用IN 运算符
SELECT `name` , (english + math + chinese ) AS score FROM students
WHERE (english + math + chinese ) IN(179,180,181);
11.查询所有姓李的学生的成绩:
LIKE关键字可以来查询首字符是什么。
SELECT * FROM students
WHERE `name` LIKE '赵%';