DML(数据库操作语言)(六)
一、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(数据库操作语言)(六)的更多相关文章
- SQL于DML(数据库操作语言)采用
1.Insert语句: INSERT [INTO] table [(column1, column2, column3, . . .)] VALUES(value1, value2, value3, ...
- DML数据操作语言
DML数据操作语言 用来对数据库中表的数据记录进行更新.(增删改) 插入insert -- insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...):向表中 ...
- 6.1课堂笔记—DML(数据操作语言),DQL查询语句
一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...
- Oracle数据库操作语言(DML)
--insert添加语句 insert into table_name(column_name,column_name,...) values (data1,data2,...); --通过表添加数据 ...
- DML数据操作语言之增加,删除,更新
1.数据的增加 数据的增加要用到insert语句 ,基本格式是: insert into <表名> (列名1,列名2,列名3,......) values (值1,值2,值3,..... ...
- DML数据操作语言之复杂查询
1.视图(View) 我们知道,在关系型数据库中,用来保存实际数据记录的是数据表.和表同等概念也是用来保存东西是:视图. 但是数据表是用来保存实际数据记录的,而视图是用来保存常用select语句的. ...
- DML数据操作语言之查询(二)
当我们查询出了N条记录之后 ,我们知道一共是几条记录,或者这些记录某一字段(列值)的最大值,最小值,平均值等,就可以使用聚合函数. 1.聚合函数 聚合函数会将null 排除在外.但是count(*)例 ...
- DML数据操作语言之谓词,case表达式
谓词:就是返回值是真值的函数. 前面接触到的“>” “<” “=”等称为比较运算符,它们的正式名称就是比较谓词.因为它们比较之后返回的结果是真值. 由于谓词 返回的结果是一个真值 ,即tr ...
- DML数据操作语言之常用函数
所谓函数,就是输入某一值,得到相应的输出结果的功能.相当于一个加工厂,给了原料,最终产出成品. 其中原料 就是参数(parameter). 产品 就是返回值. 函数大致可以分为以下五个种类: 算术函数 ...
随机推荐
- pinpoint 安装指南
tangcheng@ChenTang MINGW64 /c/Developer $ git clone https://github.com/naver/pinpoint.git Cloning in ...
- AtCoder Grand Contest 035
Preface Atcoder的题都好劲啊,都是我做不动的计数与构造 就当锻炼自己的思维能力了(基本都是bzt教的) A - XOR Circle bzt说这题数据太水了只要判一下所有数异或值是否为\ ...
- [转载]3.12 UiPath存在元素Element Exists的介绍和使用
一.Element Exists的介绍 使您能够验证UI元素是否存在,即使它不可见,输出的是一个布尔值 二.Element Exists在UiPath中的使用 1.打开设计器,在设计库中新建一个Seq ...
- dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Gold;第一次无效
private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {}//修改DataGrid ...
- 解决windows server 2008R2自动关机
原因:找到Windows Licensing Monitoring Service服务 是这服务在作祟,这服务是Windows软件许可状态.任务管理器查看有wlms.exe进程. 使用C:\Windo ...
- Spring AOP环绕异常影响的报错
最近遇到一个问题,异常是: java.lang.ClassCastException: org.springframework.http.ResponseEntity cannot be cast t ...
- windows远程桌面无法拷贝文件的问题与解决方法
在开发完往windows服务器上部署系统或者给系统打补丁的时候,都会需要远程桌面的双向拷贝文件功能. 但是有些时候却会发现没有办法拷贝文件,原因主要有两个. 01 远程桌面的剪贴板设置 一个是在远程桌 ...
- Codeforces Round #556 (Div. 1)
Codeforces Round #556 (Div. 1) A. Prefix Sum Primes 给你一堆1,2,你可以任意排序,要求你输出的数列的前缀和中质数个数最大. 发现只有\(2\)是偶 ...
- goang学习笔记---struct
什么是结构体 结构体(struct)是用户自定义的类型,它代表若干字段的集合,可以用于描述一个实体对象,类似java中的class,是golang面向对象编程的基础类型. 如何定义一个结构体 type ...
- excel中快捷计算单一列中的所有的值
excel中快捷计算单一列中的所有的值 比如B列中所有的值 =SUM(B1:B100) 计算B列第一行到第100行的值 又学了一招 如果想统计B列所有的值 可以用 =SUM(B:B)