一、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. 阿里邮箱地址,smpt

    企业邮箱的POP3.SMTP.IMAP地址是什么? 企业邮箱POP.SMTP.IMAP地址列表如下: (阿里云邮箱web端通用访问地址:https://qiye.aliyun.com/),客户端推荐以 ...

  2. Flask-Login中装饰器@login_manager.user_loader的作用及原理

    Flask-Login通过装饰器@login_required来检查访问视图函数的用户是否已登录,没有登录时会跳转到login_manager.login_view = 'auth.login'所注册 ...

  3. 关于c# 中读取系统内存大小的问题。

    在程序中,调用WMI的时候,出现一个问题,就是我系统有插了两条内存条,共4G.然而自己只能在程序中查到安装内存为2G,感觉有点不淡定.这是之前的代码. static ManagementObjectS ...

  4. [LeetCode] 300. Longest Increasing Subsequence 最长递增子序列

    Given an unsorted array of integers, find the length of longest increasing subsequence. Example: Inp ...

  5. H5 + 3D + AR/VR 综述

    近年来,H5,3D,AR,VR逐步进入人们的视野,H5生动活泼,3D注重视觉效果,AR打造虚实结合,VR则更加注重虚拟现实的产生. 第一部分,案例展示: H5+VR案例: 故事<不要惊慌,没有辐 ...

  6. [LeetCode] 684. Redundant Connection 冗余的连接

    In this problem, a tree is an undirected graph that is connected and has no cycles. The given input ...

  7. [LeetCode] 72. Edit Distance 编辑距离

    Given two words word1 and word2, find the minimum number of operations required to convert word1 to  ...

  8. 雅礼集训 2017 Day4 编码(2-sat)

    题意 题目链接:https://loj.ac/problem/6036 思路 ​ 首先,有前缀关系的串不能同时存在,不难看出这是一个 2-sat 问题.先假设所有串都带问号,那么每一个字符串,我们可以 ...

  9. Visual Studio 调试系列11 远程调试

    系列目录     [已更新最新开发文章,点击查看详细] 你可以调试已部署在另一台计算机的 Visual Studio 应用程序. 要进行此操作,可使用 Visual Studio 远程调试器. 01 ...

  10. this的用法-(2019-3)

    作为前端程序员,this应该不会陌生,指执行期的上下文,以下总结了this的几种场景: 1.全局作用域下,this指的就是Window,在控制台输出this,返回的是Window对象 2.在一般函数中 ...