MySQL DML操作--------CURD最佳实战

1. 背景

* CURD 操作通常是使用关系型数据库系统中的结构化查询语言(Structured Query Language,SQL)完成的

* CURD 定义了用于处理数据的基本原子操作

* CURD 代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。

2. 创建表操作

* 创建数据库(DB)  mytest

CHARACTER SET: 设置字符集

mysql> CREATE DATABASE mytest CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.00 sec)

* 在数据库中创建表(table)

   ENGINE=INNODB 指定Innodb 存储引擎

CHARSET=utf8mb4 设置表字符集

mysql> CREATE TABLE users(
    -> id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    -> name VARCHAR(32) NOT NULL,
    -> sex ENUM(‘M‘, ‘F‘) NOT NULL,
    -> age INT NOT NULL
    -> )ENGINE=INNODB CHARSET=utf8mb4;
Query OK, 0 rows affected (0.03 sec)

3. 插入数据操作

  * select 插入单条数据

mysql> INSERT INTO users SELECT NULL, ‘tom‘, ‘M‘, 29;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from users;
+----+------+-----+-----+
| id | name | sex | age |
+----+------+-----+-----+
|  1 | tom  | M   |  29 |
+----+------+-----+-----+
1 row in set (0.00 sec)

* values 插入单条数据

mysql> INSERT INTO users VALUES (NULL, ‘jak‘, ‘F‘, 33);
Query OK, 1 row affected (0.01 sec)

mysql> select * from users;
+----+------+-----+-----+
| id | name | sex | age |
+----+------+-----+-----+
|  1 | tom  | M   |  29 |
|  2 | jak  | F   |  33 |
+----+------+-----+-----+
2 rows in set (0.00 sec)

* select 指定列插入 [ id列会自增 ]

mysql> INSERT INTO users(name, sex, age) SELECT ‘sea‘, ‘M‘, ‘26‘;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from users;
+----+------+-----+-----+
| id | name | sex | age |
+----+------+-----+-----+
|  1 | tom  | M   |  29 |
|  2 | jak  | F   |  33 |
|  3 | sea  | M   |  26 |
+----+------+-----+-----+
3 rows in set (0.01 sec)

* values 指定列插入

mysql> INSERT INTO users(name, sex, age) VALUES (‘hai‘, ‘F‘, ‘18‘);
Query OK, 1 row affected (0.02 sec)

mysql> select * from users;
+----+------+-----+-----+
| id | name | sex | age |
+----+------+-----+-----+
|  1 | tom  | M   |  29 |
|  2 | jak  | F   |  33 |
|  3 | sea  | M   |  26 |
|  4 | hai  | F   |  18 |
+----+------+-----+-----+
4 rows in set (0.00 sec)

* values 插入多条数据

mysql> INSERT INTO users VALUES (null, ‘test1‘, ‘F‘, 23), (null, ‘test2‘, ‘M‘, 34);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from users;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  1 | tom   | M   |  29 |
|  2 | jak   | F   |  33 |
|  3 | sea   | M   |  26 |
|  4 | hai   | F   |  18 |
|  5 | test1 | F   |  23 |
|  6 | test2 | M   |  34 |
+----+-------+-----+-----+
6 rows in set (0.00 sec)

* values 指定列插入多条数据

mysql> INSERT INTO users(name, sex, age) VALUES (‘user1‘, ‘F‘, 23), (‘user2‘, ‘M‘, 34);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from users;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  1 | tom   | M   |  29 |
|  2 | jak   | F   |  33 |
|  3 | sea   | M   |  26 |
|  4 | hai   | F   |  18 |
|  5 | test1 | F   |  23 |
|  6 | test2 | M   |  34 |
|  7 | user1 | F   |  23 |
|  8 | user2 | M   |  34 |
+----+-------+-----+-----+
8 rows in set (0.00 sec)

4. 修改数据操作

update <table_name>

set column = val, ....

where 条件语句 (没有写条件语句会修改表中所有数据)

* 一次修改单列数据操作

mysql> select * from users where id = 1;
+----+------+-----+-----+
| id | name | sex | age |
+----+------+-----+-----+
|  1 | tom  | M   |  29 |
+----+------+-----+-----+
1 row in set (0.00 sec)

mysql> UPDATE users set name=‘lisea‘ where id = 1;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from users where id = 1;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  1 | lisea | M   |  29 |
+----+-------+-----+-----+
1 row in set (0.00 sec)

* 一次修改多列数据操作

mysql> select * from users where id = 1;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  1 | lisea | M   |  29 |
+----+-------+-----+-----+
1 row in set (0.01 sec)

mysql> UPDATE users set sex=‘F‘,age=33 where id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from users where id = 1;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  1 | lisea | F   |  33 |
+----+-------+-----+-----+
1 row in set (0.00 sec)

5. 删除数据操作

delete from <table_name>

  where 条件语句 [ 没有写条件语句会修改表中所有数据 ]

mysql> select * from users;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  1 | lisea | F   |  33 |
|  2 | jak   | F   |  33 |
|  3 | sea   | M   |  26 |
|  4 | hai   | F   |  18 |
|  5 | test1 | F   |  23 |
|  6 | test2 | M   |  34 |
|  7 | user1 | F   |  23 |
|  8 | user2 | M   |  34 |
+----+-------+-----+-----+
8 rows in set (0.00 sec)

mysql> DELETE FROM users WHERE id = 1;
Query OK, 1 row affected (0.02 sec)

mysql> select * from users;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  2 | jak   | F   |  33 |
|  3 | sea   | M   |  26 |
|  4 | hai   | F   |  18 |
|  5 | test1 | F   |  23 |
|  6 | test2 | M   |  34 |
|  7 | user1 | F   |  23 |
|  8 | user2 | M   |  34 |
+----+-------+-----+-----+
7 rows in set (0.00 sec)

mysql> DELETE FROM users WHERE id in (2, 4);
Query OK, 2 rows affected (0.01 sec)

mysql> select * from users;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  3 | sea   | M   |  26 |
|  5 | test1 | F   |  23 |
|  6 | test2 | M   |  34 |
|  7 | user1 | F   |  23 |
|  8 | user2 | M   |  34 |
+----+-------+-----+-----+
5 rows in set (0.00 sec)

mysql> DELETE FROM users WHERE id >= 7;
Query OK, 2 rows affected (0.01 sec)

mysql> select * from users;
+----+-------+-----+-----+
| id | name  | sex | age |
+----+-------+-----+-----+
|  3 | sea   | M   |  26 |
|  5 | test1 | F   |  23 |
|  6 | test2 | M   |  34 |
+----+-------+-----+-----+
3 rows in set (0.00 sec)

6. 总结

以需求驱动技术,技术本身没有优略之分,只有业务之分。

时间: 2024-10-10 00:27:23

MySQL DML操作--------CURD最佳实战的相关文章

MySQL DDL操作--------视图最佳实战

1. 背景 * 视图是数据库中的虚拟表.包含一系列带有名称的行和列数据.视图是从一个或者多个表中导出的,视图的行为与表非常相似,用户可以使用SELECT语句查询数据,以及使用INSERT.UPDATE和DELETE修改记录,视图使用户操作更加方便而且保障数据库系统的安全. * 视图一旦定义便存储在数据库中,与其对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据.对视图的操作与对表的操作一样,可以对其进行查询.修改和删除.当对通过视图看到的数据进行修改时,相应

MySQL 5.7--------SSL连接最佳实战

                                                                                         MySQL 5.7--------SSL连接最佳实战 1. 背景 * 在生产环境下,安全总是无法忽视的问题,数据库安全则是重中之重,因为所有的数据都存放在数据库中 * 当使用非加密方式连接MySQL数据库时,在网络中传输的所有信息都是明文的,可以被网络中所有人截取,敏感信息可能被泄露.在传送敏感信息(如密码)时,可以采用

MySQL DML操作--------实现pivot行转列功能最佳实战

1. 背景 * 由于MySQL 不支持类型Oracle与SQL Server的pivot功能进行行列转换. 2. 表与数据 mysql> select * from t_temp; +---------+-----------+------------+ | year    | season    | orderCount | +---------+-----------+------------+ | 2010年  | 一季度    |        100 | | 2010年  | 二季度 

MySQL DML操作--------合并查询结果实战

1. 背景 * 全并查询结果是将多个 select 语句的查询结果合并到一起. * 参与合并的结果集需要字段统一. * 字段可以用空字符串''代替. 2. 合并查询结果实战 [ users1 and users2 ] * 查看 users1 表和 users2 表结构 mysql> desc users1;+-------+---------------+------+-----+---------+----------------+| Field | Type          | Null

MySQL DML操作--------多表联合查询实战

1. 背景 * 多表联合查询是把不同表的记录到一起的一种方式 * 在SQL标准中规划的联合(join)大致分内连接,外连接,全连接.其中外连接又分左外连接,右外连接. 2. 内连接例子 (inner join) [ 员工 --> 部门 ] * 查看员工表[ employees ]和部门表[ departments ]结构 mysql> desc employees; +-----------+---------------+------+-----+---------+------------

MySQL存储引擎--------Federated最佳实战

1. 背景 * 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. * 有点类似Oracle中的数据库链接(DBLINK). 要允许这个存储引擎, 当构建MySQL时使用--with-federated-storage-engine来configure. * 当创建一个FEDERATED表的时候, 服务器在数据库目录创建一个表定义文件. 文件由表的名字开始, 并有一个.frm扩展名. * 无其它文件被创建, 因为实际的数据在一个远程数据库上.

MySQL 5.6--------SSL连接最佳实战

1. 背景 * 在生产环境下,安全总是无法忽视的问题,数据库安全则是重中之重,因为所有的数据都存放在数据库中 * 当使用非加密方式连接MySQL数据库时,在网络中传输的所有信息都是明文的,可以被网络中所有人截取,敏感信息可能被泄露.在传送敏感信息(如密码)时,可以采用SSL连接的方式. 2. MySQL 连接方式 * socket连接 * TCP非SSL连接 * SSL安全连接 3. SSL 简介 * SSL指的是SSL/TLS,其是一种为了在计算机网络进行安全通信的加密协议.假设用户的传输不是

MySQL DLL操作--------临时表存储实战

1. 背景 * 临时表是基于会话的(session),只在当前连接可见 * 当这个连接(会话)关闭的时候,会自动drop. * 两个不同的连接(会话)里使用相同的临时表名,并且相互不会冲突,或者使用已经存在的表,但不是临时表的表名. * 当这个临时表表名已存在表的时候,存在的表被隐藏了,如果临时表被drop,存在的表就可见了 * 创建临时表用户必须有 create temporary table 权限. * Mysql 5.7之后临时表数据存储于idbdata1文件中. 2. MySQL 5.7

MySQL/MariaDB DML操作之Select

前言 上文我们已经讲解了MySQL/MariaDB的基础知识和DDL相关操作,接下来我们来说一下MySQL/MariaDB的DML操作,因select查询较复杂也较重要,所以本文主要是对select查询的详解. DML操作 DML之select 投影查询 select col_name,[col_name1,...] from table_name; select * from table_name ;#显示全表 遍历整张数据表,但对系统资源消耗较大,再进行大数据量的查询时,禁止使用这类操作 条