一、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. [CODEVS4632][BZOJ4326]运输计划

    题目描述 Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球.小 P ...

  2. springboot启动时控制台不显示映射的URL

    背景 今天,第一次使用 2.2.0 版本的springboot,在访问接口时发现访问不到,于是在控制台进行 URL 搜索,发现并相关没有内容 原因 springboot版本差异,切换回 2.0.5.R ...

  3. Java8 新特性 Stream() 创建流

    通过Controllere类的Stream()和parallelStream()创建流 //通过集合创建流 @Test public void test1() { String arr[] = new ...

  4. hbase源码之 compact源码(一)

    hbase compact流程较多,这里分章节介绍,首先介绍compact在regionserver中的调用流程,并不会涉及真正的compact读取合并文件的流程,后续介绍. 在regionserve ...

  5. Spring Boot 如何干掉 if else?

    需求 这里虚拟一个业务需求,让大家容易理解.假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理. 订单实体: service接口: 传统实现 根据订单类型写一堆的if else: 策 ...

  6. 关于Ext checkboxfiled 获取值为 on的解决办法

    今天在做Ext checkboxfield 为取值为on,应该是true或false,解决办法是把Name去掉,只设置ID即可 { xtype: "container", layo ...

  7. PHP RSA签名

    /** * RSA签名 * @param $data 待签名数据 * @param $private_key 私钥字符串 * return 签名结果 */function rsaSign($data, ...

  8. Java I/O系统学习系列二:输入和输出

    编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象.“流”屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇文章:<< ...

  9. Java自学-I/O Stream流

    Java的流 Stream 什么是流(Stream),流就是一系列的数据 步骤 1 : 什么是流 当不同的介质之间有数据交互的时候,JAVA就使用流来实现. 数据源可以是文件,还可以是数据库,网络甚至 ...

  10. iOS - 逆向调试自用工具(reveal 14 Hopper Go2Shell ifunboxmac MachOView Alfred Go2Shell iTerm)

    研究了挺长一段时间的逆向感觉没啥可弄的了,再深处对我也用处不大,渐渐兴趣有些掉头了.最近有问我要工具的朋友,分享一些常用工具给用到的朋友. 用法自己百度吧,这里不再赘述. 图例(希望看到你想要的): ...