一、INSERT插入语句

语法:

INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1, 列值2, ...);
# 在表名后给出要插入的列名,其他没有指定的列等同与插入null值。在VALUES后给出列值,值的顺序和个数必须与前面指定的列对应
INTERT INTO 表名 VALUES(列值1, 列值2)
# 没有给出要插入的列,那么表示插入所有列。值的个数必须是该表列的个数。值的顺序,必须与表创建时给出的列的顺序相同。

示例:

# 查看表结构
mysql> desc t1;
+--------+---------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| NAME | char(16) | NO | | NULL | |
| age | tinyint(4) | YES | | NULL | |
| gender | enum('m','f') | NO | | m | |
| bir | datetime | YES | | CURRENT_TIMESTAMP | |
| telnum | varchar(12) | NO | UNI | NULL | |
+--------+---------------+------+-----+-------------------+----------------+ # 插入指定的值
mysql> insert into t1(id, NAME, gender, telnum) values(1,'tfj','f','');
Query OK, 1 row affected (0.00 sec) mysql> select * from t1;
+----+------+------+--------+---------------------+-------------+
| id | NAME | age | gender | bir | telnum |
+----+------+------+--------+---------------------+-------------+
| 1 | tfj | NULL | f | 2019-09-18 10:07:06 | 13666669999 |
+----+------+------+--------+---------------------+-------------+
1 row in set (0.00 sec) # 插入所有的值
mysql> insert into t1 values(2,'ella',30,'f',19990902,'');
Query OK, 1 row affected (0.01 sec) mysql> select * from t1;
+----+------+------+--------+---------------------+-------------+
| id | NAME | age | gender | bir | telnum |
+----+------+------+--------+---------------------+-------------+
| 1 | tfj | NULL | f | 2019-09-18 10:07:06 | 13666669999 |
| 2 | ella | 30 | f | 1999-09-02 00:00:00 | 13245678987 |
+----+------+------+--------+---------------------+-------------+
2 rows in set (0.00 sec) # 一次性插入多条记录
mysql> insert into t1 values(3,'jolin',32,'f',19850303,''),(4,'andy',8,'m',20121212,''),(5,'leon',34,'m',19861225,'');

二、UPDATE更新数据

语法:

UPDATE 表名 SET 列名1=列值1, 列名2=列值2, ... [WHERE 条件]
# WHERE 条件(条件可选的):
# 条件必须是一个boolean类型的值或表达式:UPDATE t1 SET gender='男', age=age+1 WHERE id='';
# 运算符:=、!=、<>、>、<、>=、<=、BETWEEN...AND、IN(...)、IS NULL、NOT、OR、AND

示例:

mysql> select * from t1;
+----+-------+------+--------+---------------------+-------------+
| id | NAME | age | gender | bir | telnum |
+----+-------+------+--------+---------------------+-------------+
| 1 | tfj | NULL | f | 2019-09-18 10:07:06 | 13666669999 |
| 2 | ella | 30 | f | 1999-09-02 00:00:00 | 13245678987 |
| 3 | jolin | 32 | f | 1985-03-03 00:00:00 | 18789989232 |
| 4 | andy | 8 | m | 2012-12-12 00:00:00 | 13721230990 |
| 5 | leon | 34 | m | 1986-12-25 00:00:00 | 19900009999 |
+----+-------+------+--------+---------------------+-------------+
5 rows in set (0.00 sec) mysql> update t1 set age=18 where id=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from t1;
+----+-------+------+--------+---------------------+-------------+
| id | NAME | age | gender | bir | telnum |
+----+-------+------+--------+---------------------+-------------+
| 1 | tfj | 18 | f | 2019-09-18 10:07:06 | 13666669999 |
| 2 | ella | 30 | f | 1999-09-02 00:00:00 | 13245678987 |
| 3 | jolin | 32 | f | 1985-03-03 00:00:00 | 18789989232 |
| 4 | andy | 8 | m | 2012-12-12 00:00:00 | 13721230990 |
| 5 | leon | 34 | m | 1986-12-25 00:00:00 | 19900009999 |
+----+-------+------+--------+---------------------+-------------+
5 rows in set (0.00 sec)

三、DELETE 删除数据

语法:

DELETE FROM 表名 [WHERE 条件];
# TRUNCATE TABLE 表名:TRUNCATE是DDL语句,它是先删除drop该表,再create该表。而且无法回滚!!!

示例:

mysql> select * from t1;
+----+-------+------+--------+---------------------+-------------+
| id | NAME | age | gender | bir | telnum |
+----+-------+------+--------+---------------------+-------------+
| 1 | tfj | 18 | f | 2019-09-18 10:07:06 | 13666669999 |
| 2 | ella | 30 | f | 1999-09-02 00:00:00 | 13245678987 |
| 3 | jolin | 32 | f | 1985-03-03 00:00:00 | 18789989232 |
| 4 | andy | 8 | m | 2012-12-12 00:00:00 | 13721230990 |
| 5 | leon | 34 | m | 1986-12-25 00:00:00 | 19900009999 |
+----+-------+------+--------+---------------------+-------------+
5 rows in set (0.00 sec) mysql> delete from t1 where age>18;
Query OK, 3 rows affected (0.01 sec) mysql> select * from t1;
+----+------+------+--------+---------------------+-------------+
| id | NAME | age | gender | bir | telnum |
+----+------+------+--------+---------------------+-------------+
| 1 | tfj | 18 | f | 2019-09-18 10:07:06 | 13666669999 |
| 4 | andy | 8 | m | 2012-12-12 00:00:00 | 13721230990 |
+----+------+------+--------+---------------------+-------------+
2 rows in set (0.00 sec)

一般不直接删除,而是使用update替换delete命令,实现伪删除。

# 添加一个状态列,1表示数据存在,0表示数据被删除。
mysql> ALTER TABLE t1 ADD state ENUM('','') DEFAULT '';
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM t1;
+----+------+------+--------+---------------------+-------------+-------+
| id | NAME | age | gender | bir | telnum | state |
+----+------+------+--------+---------------------+-------------+-------+
| 1 | tfj | 18 | f | 2019-09-18 10:07:06 | 13666669999 | 1 |
| 4 | andy | 8 | m | 2012-12-12 00:00:00 | 13721230990 | 1 |
+----+------+------+--------+---------------------+-------------+-------+
2 rows in set (0.00 sec) mysql> UPDATE t1 SET state='' WHERE id='';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

# 实现伪删除(将1改为0)
mysql> SELECT * FROM t1;
+----+------+------+--------+---------------------+-------------+-------+
| id | NAME | age | gender | bir | telnum | state |
+----+------+------+--------+---------------------+-------------+-------+
| 1 | tfj | 18 | f | 2019-09-18 10:07:06 | 13666669999 | 0 |
| 4 | andy | 8 | m | 2012-12-12 00:00:00 | 13721230990 | 1 |
+----+------+------+--------+---------------------+-------------+-------+
2 rows in set (0.00 sec)

# 让应用看不到state=0的数据
mysql> select * from t1 WHERE state='';
+----+------+------+--------+---------------------+-------------+-------+
| id | NAME | age | gender | bir | telnum | state |
+----+------+------+--------+---------------------+-------------+-------+
| 4 | andy | 8 | m | 2012-12-12 00:00:00 | 13721230990 | 1 |
+----+------+------+--------+---------------------+-------------+-------+
1 row in set (0.00 sec)

补充:update操作也是有风险的,一般会在数据库设计中,加入trigger一但有update操作,会触发将修改前和修改后的数据存放到自己定义的一张表中,但是会有性能耗损。

DML(数据库操作语言)(六)的更多相关文章

  1. SQL于DML(数据库操作语言)采用

    1.Insert语句: INSERT [INTO] table [(column1, column2, column3, . . .)] VALUES(value1, value2, value3, ...

  2. DML数据操作语言

    DML数据操作语言 用来对数据库中表的数据记录进行更新.(增删改) 插入insert -- insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...):向表中 ...

  3. 6.1课堂笔记—DML(数据操作语言),DQL查询语句

    一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...

  4. Oracle数据库操作语言(DML)

    --insert添加语句 insert into table_name(column_name,column_name,...) values (data1,data2,...); --通过表添加数据 ...

  5. DML数据操作语言之增加,删除,更新

    1.数据的增加 数据的增加要用到insert语句  ,基本格式是: insert into <表名> (列名1,列名2,列名3,......) values (值1,值2,值3,..... ...

  6. DML数据操作语言之复杂查询

    1.视图(View) 我们知道,在关系型数据库中,用来保存实际数据记录的是数据表.和表同等概念也是用来保存东西是:视图. 但是数据表是用来保存实际数据记录的,而视图是用来保存常用select语句的. ...

  7. DML数据操作语言之查询(二)

    当我们查询出了N条记录之后 ,我们知道一共是几条记录,或者这些记录某一字段(列值)的最大值,最小值,平均值等,就可以使用聚合函数. 1.聚合函数 聚合函数会将null 排除在外.但是count(*)例 ...

  8. DML数据操作语言之谓词,case表达式

    谓词:就是返回值是真值的函数. 前面接触到的“>” “<” “=”等称为比较运算符,它们的正式名称就是比较谓词.因为它们比较之后返回的结果是真值. 由于谓词 返回的结果是一个真值 ,即tr ...

  9. DML数据操作语言之常用函数

    所谓函数,就是输入某一值,得到相应的输出结果的功能.相当于一个加工厂,给了原料,最终产出成品. 其中原料 就是参数(parameter). 产品 就是返回值. 函数大致可以分为以下五个种类: 算术函数 ...

随机推荐

  1. VSCode编写C/C++语言,配置文件和注意事项

    前言 主要是自己先下载好VSCode,然后在自己电脑上安装好就行了,但是VSCode是编辑器,不是IDE,所以需要自己配置文件,主要有四个都是以.json结尾的文件,这里默认已经装过C/C++的编辑器 ...

  2. UVA10559 方块消除 Blocks 题解

    设g[i][j][k]为消去区间[i,j]中的方块,只留下k个与a[i]颜色相同的方块的最大价值,f[i][j]为将[i,j]中所有方块消去的价值,转移自己yy一下即可. 为什么这样是对的?因为对于一 ...

  3. [LeetCode] 721. Accounts Merge 账户合并

    Given a list accounts, each element accounts[i] is a list of strings, where the first element accoun ...

  4. withDefaultPasswordEncoder() 过时弃用问题

    在学springsecurity5.X时,在demo里,内存配置用户的时候,提示withDefaultPasswordEncoder过时,特查看了源码,官方给出的理由是: /** @deprecate ...

  5. 原创|强大!Nginx 配置在线一键生成“神器”

    Nginx作为一个轻量级的HTTP服务器,相比Apache优势也是比较明显的,在性能上它占用资源少,能支持更高更多的并发连接,从而达到提高访问效率;在功能上它是一款非常优秀的代理服务器与负载均衡服务器 ...

  6. 多线程避免使用SimpleDateFormat及替代方案

    先来看一个多线程下使用例子,看到运行结果会出现异常: import java.text.DateFormat; import java.text.SimpleDateFormat; import ja ...

  7. Zuul的高级使用

    原文链接:https://blog.csdn.net/u011820505/article/details/79373594

  8. 一张图入门Python【中文版】

    好久没写了,就拿这张图作为开篇吧,重新梳理自己学习的东西,最近两年人工智能炒红了python,devops的提出也把开发.运维整合到了一起,作为一个运维工程师,随着企业自动化运维的提出,光会shell ...

  9. SpringBoot 第一篇:入门篇

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10819728.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   博主从去年 ...

  10. prometheus exporter简介

    一.服务分类 在线服务:请求的客户端和发起者需要立即响应(高并发.低延迟:并发数.接口响应时间.错误数.延迟时间),面对突发流量能进行资源的自动伸缩 离线服务:请求发送到服务端但不要求立即获取结果(监 ...