MySQL表的增删改查基础教程

1. 新增(Create)

insert into [表名] (字段1, 字段2,....) value (value1, value2, ...);

insert into [表名] (字段1, 字段2, ....) values
(value1, ...),
(value2, ...),
(value3, ...);

实例:

创建一个学生成绩表

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

1.1 单行数据 + 全列插入

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
insert into exam_result value ( 1, 'tom', 68, 98, 56);
insert into exam_result value ( 2, 'jum', 87.5, 78, 77);

每次插入数据, 为一条记录, 包含了若干个列~~

列的数目和数据类型要和表的结构对应~

value 前省略指定列默认为全列插入

1.2 多行数据 + 指定列

- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
 (1,'tom', 67, 98, 56),
 (2,'jum', 87.5, 78, 77),
 (3,'lim', 88, 98.5, 90),
 (4,'tim', 82, 84, 67),
 (5,'huy', 55.5, 85, 45),
 (6,'sun', 70, 73, 78.5),
 (7,'ming', 75, 65, 30);

2. 查询(Retrieve)

2.1 全列查询

select * from [表名];

*表示通配符, 意思就是查找所有的列

2.2 指定列查询

select [指定查询列] from [表名];

2.3 查询字段为表达式

select [字段表达式] from [表名];

2.4 别名

select colum [as] [列名] from [表名];

2.5 去重: DISTINCT

使用 distinct 关键字对某列数据去重

--98 分重复了
select math from exam_result;
+------+
| math |
+------+
| 98.0 |
| 78.0 |
| 98.0 |
| 84.0 |
| 85.0 |
| 73.0 |
| 65.0 |
+------+

-- 去重结果
select distinct math from exam_result;
+------+
| math |
+------+
| 98.0 |
| 78.0 |
| 84.0 |
| 85.0 |
| 73.0 |
| 65.0 |
+------+

2.6 排序: ORDER BY

select * from [表名] order by [排序字段];

用 order by 指定某一列进行排序, 默认按照升序排序.

显式加上 desc , 就是降序排序. 使用 asc 也是升序

select name, math from exam_result order by math desc;
+------+------+
| name | math |
+------+------+
| tom | 98.0 |
| lim | 98.0 |
| huy | 85.0 |
| tim | 84.0 |
| jum | 78.0 |
| sun | 73.0 |
| ming | 65.0 |
+------+------+

NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

排序也可以指定多个列执行

select * from exam_result order by math desc, chinese desc;
+------+------+---------+------+---------+
| id | name | chinese | math | english |
+------+------+---------+------+---------+
| 3 | lim | 88.0 | 98.0 | 90.0 |
| 1 | tom | 67.0 | 98.0 | 56.0 |
| 5 | huy | 55.5 | 85.0 | 45.0 |
| 4 | tim | 82.0 | 84.0 | 67.0 |
| 2 | jum | 87.5 | 78.0 | 77.0 |
| 6 | sun | 70.0 | 73.0 | 78.5 |
| 7 | ming | 75.0 | 65.0 | 30.0 |
+------+------+---------+------+---------+

多列排序时, 是在第一列区分不出来大小的时候, 再按第二列排序.

2.7 条件查询: 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)

注意:

  • 列的别名不能再 where 中使用~~
  • AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

实例:

基本查询:

-- 查询英语不及格的同学及英语成绩 ( < 60 )
select name, english from exam_result where english < 60;

-- 查询语文成绩好于英语成绩的同学
select name, chinese, english from exam_result where chinese > english;

-- 查询总分在 200 分以下的同学
select name, chinese + math + english as total from exam_result where chinese + math + english < 200;

AND 与 OR:

-- 查询语文成绩大于80分,且英语成绩大于80分的同学
select * from exam_result where chinese > 80 and english > 80;

-- 查询语文成绩大于80分,或英语成绩大于80分的同学
select * from exam_result where chinese > 80 or english > 80;

关于优先级问题, and 比 or 更优先,

范围查询:

1.BETWEEN … AND …

-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
select name, chinese from exam_result where chinese BETWEEN 80 AND 90;

select name, chinese, from exam_result where chinese >= 80 and chinese <= 90;

IN

 -- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
select name, math from exam_result where math in (58, 59, 98, 99);

模糊查询: LIKE

select name from exam_result where name like 't%';
+------+
| name |
+------+
| tom |
| tim |
+------+

% 是一个通配符, 可以用来代替任意多个字符

t% 找出以 t 开头的字符串

%t 找出以 t 结尾的字符串

%t% 找出包含 t 的

除了 % 之外, 还有 _ ,(_ 只能代表一个字符~)

select name from exam_result where name like 't__';
+------+
| name |
+------+
| tom |
| tim |
+------+

通配符也能针对数字进行模糊查询

select name, chinese from exam_result where chinese like '%8%';
+------+---------+
| name | chinese |
+------+---------+
| jum |  87.5 |
| lim |  88.0 |
| tim |  82.0 |
+------+---------+

注意:

模糊查询看起来比较好用, 实际执行效率低下

NULL 的查询: IS [NOT] NULL

 select name from exam_result where id id not null;

2.8 分页查询: LIMIT

-- 最初数据表
select * from exam_result;
+------+------+---------+------+---------+
| id  | name | chinese | math | english |
+------+------+---------+------+---------+
|  1 | tom |  67.0 | 98.0 |  56.0 |
|  2 | jum |  87.5 | 78.0 |  77.0 |
|  3 | lim |  88.0 | 98.0 |  90.0 |
|  4 | tim |  82.0 | 84.0 |  67.0 |
|  5 | huy |  55.5 | 85.0 |  45.0 |
|  6 | sun |  70.0 | 73.0 |  78.5 |
|  7 | ming |  75.0 | 65.0 |  30.0 |
+------+------+---------+------+---------+

-- 前三条记录
select * from exam_result limit 3;
+------+------+---------+------+---------+
| id  | name | chinese | math | english |
+------+------+---------+------+---------+
|  1 | tom |  67.0 | 98.0 |  56.0 |
|  2 | jum |  87.5 | 78.0 |  77.0 |
|  3 | lim |  88.0 | 98.0 |  90.0 |
+------+------+---------+------+---------+

-- 从第三条开始的三条记录
select * from exam_result limit 3 offset 3;
+------+------+---------+------+---------+
| id  | name | chinese | math | english |
+------+------+---------+------+---------+
|  4 | tim |  82.0 | 84.0 |  67.0 |
|  5 | huy |  55.5 | 85.0 |  45.0 |
|  6 | sun |  70.0 | 73.0 |  78.5 |
+------+------+---------+------+---------+

offset 表示从第几条开始查找, offset 可以省略

select * from exam_result limit 3 , 4;
+------+------+---------+------+---------+
| id  | name | chinese | math | english |
+------+------+---------+------+---------+
|  4 | tim |  82.0 | 84.0 |  67.0 |
|  5 | huy |  55.5 | 85.0 |  45.0 |
|  6 | sun |  70.0 | 73.0 |  78.5 |
|  7 | ming |  75.0 | 65.0 |  30.0 |
+------+------+---------+------+---------+

3. 修改(Update)

– 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

update exam_result set math = math + 30 order by chinese + math + english limit 3;

update 不加条件, 就可以针对所有

4. 删除(Delete)

delete from [表名];
-- 删除 ming 同学的考试成绩
delete from exam_result where name = 'ming';

-- 删除整张表
delete from exam_result;

如果不指定条件, 此时就把整个表删除掉了, (与 drop 删除表还有不同)

delete 删除后表为 null, drop 删除后表就不存在了

5. 常用 新增

-- 单行插入
insert into [表名] (字段1, ..., 字段N) values (value1, ...,value N);
-- 多行插入
insert into [表名](字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);

查询

--全表查询
select * from [表名];
--指定列查询
select [列名1, 列名2,...] from [表名];
--查询表达式字段
select [表达式1, 表达式2,...] from [表名];
--别名
select
--去重 DISTINCT
select distinct [字段] from [表名];
-- 排序ORDER BY
select * from [表名] order by [排序字段];
-- 条件查询WHERE
-- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR
(8)NOT
select * from [表名] where [条件];

修改

update [表] set [修改内容1, 修改内容2, ....] where [条件];

删除

delete from [表名] where [条件];

总结

到此这篇关于MySQL表增删改查的文章就介绍到这了,更多相关MySQL表增删改查内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql触发器之触发器的增删改查操作示例

    本文实例讲述了mysql触发器之触发器的增删改查操作.分享给大家供大家参考,具体如下: 我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义.触发器作为纯文本文件存储在以下数据库文件夹中: /data_folder/database_name/table_name.trg 我们还可通过查询information_schema数据库中的triggers表来显示触发器,如下所示: SELECT * FROM information_schema.triggers WHERE trig

  • Mysql的增删改查语句简单实现

    Mysql的增删改查语句简单实现 增加记录: insert into tablename(...) values(...) //如果增加的记录包括所有的列,则不需要写数据列表 insert into tablename values(...) 删除记录: delete from tablename where condition ; 修改记录: update tablename set xx=xx , xx=xx... where condition ; alter table tablenam

  • mysql视图之管理视图实例详解【增删改查操作】

    本文实例讲述了mysql视图之管理视图操作.分享给大家供大家参考,具体如下: mysql提供了用于显示视图定义的SHOW CREATE VIEW语句,我们来看下语法结构: SHOW CREATE VIEW [database_name].[view_ name]; 要显示视图的定义,需要在SHOW CREATE VIEW子句之后指定视图的名称,我们先来根据employees表创建一个简单的视图用来显示公司组织结构,完事在进行演示: CREATE VIEW organization AS SELE

  • Mysql表,列,库增删改查问题小结

    下面是我总结的一些基础的sql知识,主要是为了以后更好的查阅和帮助其他初学的人,同时记录自己的成长,还写了一点稍有 难度的sql面试题级别的题目,好了废话不多说,见真题... #创建数据库 CREATE DATABASE mytest CHARACTER SET gbk #删除数据库 DROP DATABASE mytest 表的操作 #创建表(create table 表名(columns)) CREATE TABLE students( id INT PRIMARY KEY, NAME CH

  • MySQL 详细单表增删改查crud语句

    MySQL 增删改查语句 1.创建练习表 这里练习表没有满足三范式 第一范式(又称 1NF):保证每列的原子性 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性.满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了. 第二范式(又称 2NF):保证一张表只描述一件事情 满足1NF后要求表中的所有列,每一行的数据只能与其中一列相关,即一行数据只做一件事.只要数据列中出现数据重复,就要把表拆分开来. 第三范式(又称 3NF):保证每列都

  • mysql增删改查基础语句

    语法 这里是INSERT INTO命令将数据插入到MySQL表的通用SQL语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 要插入字符串类型数据,则需要双或单引号保留到所有的值,例如: "value". 1.从命令提示符插入数据 这将使用SQL 的INSERT INTO命令将数据插入到MySQL表:tutorials_tbl 示例 root@host#

  • MySQL表的增删改查基础教程

    1. 新增(Create) insert into [表名] (字段1, 字段2,....) value (value1, value2, ...); insert into [表名] (字段1, 字段2, ....) values (value1, ...), (value2, ...), (value3, ...); 实例: 创建一个学生成绩表 CREATE TABLE exam_result ( id INT, name VARCHAR(20), chinese DECIMAL(3,1),

  • java jdbc连接mysql数据库实现增删改查操作

    jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查

  • JDBC 实现通用的增删改查基础类方法

    java中关于数据的管理有很多的框架,如hibernate.mybatis等,但我最开始学习的就是JDBC,我觉得JDBC还是很不错的,它让我更深层次的了解了数据的操作,今天我将我写过的JDBC基础类再写一遍!加深下记忆!!! 先将通用的增查实现类BaseDAO贴上 package com.shude.DAO; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Par

  • Mybatis基于xml配置实现单表的增删改查功能

    Mybatis入门-基于配置实现单表的增删改查 Mybatis简介 官网链接:https://mybatis.org/mybatis-3/zh/index.html.更加详细的信息可以去官网查看. MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作.MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型.接口和 Java POJO(Plain Old Java Object

  • Python实现连接MySql数据库及增删改查操作详解

    本文实例讲述了Python实现连接MySql数据库及增删改查操作.分享给大家供大家参考,具体如下: 在本文中介绍 Python3 使用PyMySQL连接数据库,并实现简单的增删改查.(注意是python3) 1.安装PyMySQL PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb.PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库.在使用 PyMySQ

  • python3.6连接mysql数据库及增删改查操作详解

    折腾好半天的数据库连接,由于之前未安装 pip ,而且自己用的python 版本为3.6. 只能用 pymysql 来连接数据库,下边 简单介绍一下 连接的过程,以及简单的增删改查操作. 1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import pymysql #导入 pymysql 如果编译未出错,即表示 pymysql 安装成功 简单的增删改查操作 示

  • python对 MySQL 数据库进行增删改查的脚本

    # -*- coding: utf-8 -*- import pymysql import xlrd # import codecs #连接数据库 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='test_hvr', charset='utf8') cursor = conn.cursor() # 查询数据库 effect_row = cursor.execute("select *

  • 教你用springboot连接mysql并实现增删改查

    1.数据库与数据表的创建 创建名为mybatis的数据库: create database mybatis; 创建名为user2的数据表: use mybatis; create table user2( id integer not null primary key, name varchar(20) not null, pwd varchar(10) not null, perms varchar(100) null) 生成如下表结构: (已经插入了两行数据的) 2.数据库的连接 注意点:u

  • Node.js对MySQL数据库的增删改查实战记录

    目录 在项目中操作数据库的三大步骤 操作数据库的具体步骤 一:安装MySQL模块及express模块 二:通过express创建一个服务器 三:配置MySQL模块 四:测试 mysql 模块能否正常工作 SELECT:查询one数据表中所有的数据: INSERT INTO:向数据库中添加数据: UPADTE:修改数据库中的数据: DELETE:删除数据库中的数据: 总结 在项目中操作数据库的三大步骤 安装操作 MySQL 数据库的第三方模块(mysql) 通过 mysql 模块连接到 MySQL

随机推荐