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). 产品 就是返回值. 函数大致可以分为以下五个种类: 算术函数 ...
随机推荐
- appium--多点触控
前戏 对于放大缩小的,我们使用前面的滑动是不行的,例如地图的放大缩小,这里就要用到多点触控了 MultiAction是多点触控的类,可以模拟多点触控操作,主要包含add()和perform()两个方法 ...
- Linux配置DHCP服务器,DHCP中继配置
配置dhcp服务器 第一步:配置网卡 第二步: 安装dhcp (需要先构建yum仓库,构建yum仓库的方法在之前的博客里有) 编写dhcp.conf文件 进去以后会出现这个内容 需要执行下面的内容将内 ...
- Circumference of circle
public class Solution { public static void main(String[] args) { Scanner ip = new Scanner(System.in) ...
- oracle--oracle18C环境配置(一)
一,硬件配置检查 使用以下命令确定服务器上的物理RAM大小: # grep MemTotal /proc/meminfo 如果系统中安装的物理RAM的大小小于所需的大小,则必须先安装更多内存,然后再继 ...
- 基于Django的Rest Framework框架的RESTful规范研究
一.什么是RESTful规范 总的来说:RESTful规范就是一个非技术,人为约定的一个面向资源的架构理念. REST与技术无关,代表的是一种软件架构风格,REST是Representational ...
- jar解压后重新打包
因为一些原因修改了jar中的配置文件,但用WinRAR压缩成zip文件后该后缀名为jar,发现重新压缩的文件不可用,所有这些情况下我们必须用jar重新打包. 配置Java环境,让jar命令可用: ja ...
- 【MySQL】Mariadb字符集
Mariadb字符集 如果不设置字符集,可以查看mariadb的字符集的默认设置是latin1. 如下命令,查看Mariadb的默认配置: [root@oradb ~]# /usr/local/mys ...
- $scope里的$watch方法
一.$watch的作用 监听model,如果model发生变化,则触发某些事情. 二.$watch的格式 $scope. $watch(watchFn,watchAction,deepWatch); ...
- cmd命令和linux命令的区别
cmd命令和linux命令看起来很相似,都是在一个控制台输入一些特定的指令去完成一些特定的操作.可是用过的朋友就会发现这些指令是有很多不同的,可是到底有什么不同,要说又说不上来,所以要了解一下. cm ...
- @Bean修饰的方法参数的注入方式
@Bean修饰的方法参数的注入方式: 方法参数默认注入方式为Autowired,即先根据类型匹配,若有多个在根据名称进行匹配. 1:复杂类型可以通过@Qualifier(value=“XXX”)限定; ...