RDS运维教程之数据基础操作
基础的数据操作
05 基础的数据操作一.添加数据添加单条数据 ( insert into)批量添加多条数据注意事项:空字符串和 null二.查询数据 ( select )别名三.修改数据 ( update )四.删除数据 ( delete )注意事项事务(Transaction)为啥需要事务原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)事务的概念事务的术语事务控制语言(Transactional Control Language,TCL)事务的开启与结束标志MySQL中事务的语法开启事务提交事务手动中止事务支持事务的存储引擎自动提交隐式提交保存点
在创建了数据库和数据库表之后,我们就可以在表中进行数据操作了。基础操作分为
-
添加
-
删除
-
修改
-
查询
以上4 种操作又简称为 CURD (Create ,Update ,Retrieve ,Delete )
一.添加数据
插入数据的类型:
-
添加一行中所有列对应的数据,不写列名
-
添加一行中某些列对应的数据
-
一次性添加多行数据(批处理)
添加单条数据 ( insert into)
语法:
insert into 表名(列名A,列名B,...) values(列名A的值, 列名B的值, .....);
示例:
INSERT INTO emp(empid, ename, age, phone, email) VALUES (10001, '张三', 24, '13412345678', 'zs@863.com');
注意:表名后面跟了几个列名,在values中就需要有几个对应的数据值,数据与列需要对应,如果类型不匹配是无法添加成功的
批量添加多条数据
语法:
insert into 表名(列名A,列名B,...) values(列名A的值, 列名B的值, .....) , (列名A的值, 列名B的值, .....) , ..... ;
示例:
INSERT INTO `test`.`emp`(`empid`, `ename`, `age`, `phone`, `email`) VALUES (10002, '王五', 22, '13512345678', 'wwu@863.com'), (10003, '李四', 26, '15412345178', 'ls@863.com')
注意事项:空字符串和 null
空字符串是有字符串内容,但是长度为0
null 则表示列中没有数据
二.查询数据 ( select )
语法:
select * / 需要查询的列名 from 表名;
星号代表指定表中的所有字段,但是并不推荐,因为在大批量数据下非常耗时。很多场景中仅需要部分字段,而且字段的先后顺序还不完全一致。
列的顺序一般是列在表定义中出现的顺序。但有时候并不是这样的,表的模式的变化(如添加或删除列)可能会导致顺序的变化。虽然使用通配符看起来很省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。
实际开发时,有的场景对列出现的顺序是有要求的,这个时候也不要使用星号。
示例:
select * from emp;
不指定列时,星号将所有列的数据都进行检索
select empid, ename, age, phone, email from emp;
查询时,显示指定列的数据
别名
使用别名的常见:
-
表名和列名名称太长,不便输入或者容易写错
-
有相同的名称
使用别名后,调用时需要使用别名,而不是原来的名字
表使用别名
给表起别名非常简单,在表名后空格,然后写别名即可
select e.empid, e.ename, e.age, e.phone, e.email from emp e;
列使用别名
列起别名的格式如下:
列名 (空格)as 别名
示例:
select empid as eid , ename, age, phone, email from emp;
也可以不添加as,中间添加一个空格即可
select empid 编号 , ename, age, phone, email from emp;
三.修改数据 ( update )
语法:
UPDATE 表名 SET 更新数据的列名 = 新值,更新数据的列名 = 新值... where 条件;
示例:
UPDATE EMP SET ENAME = 'JACK' WHERE empid = 10001;
UPDATE EMP SET ENAME = 'JACK', AGE = 33 WHERE empid = 10001;
四.删除数据 ( delete )
DELETE语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身
语法:
delete from 表名 where 条件;
示例:
delete from emp where empid = 10001;
如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更快(TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据) 。
注意事项
-
SQL 语句结束的时候需要写分号正确结束
-
SQL 语句本身不区分大小写,但是数据分大小写
问题:表数据的操作使用的是什么 SQL 语言 ?
mysql> SELECT * FROM account;
+----+--------+---------+
| id | name | balance |
+----+--------+---------+
| 1 | 狗哥 | 11 |
| 2 | 猫爷 | 2 |
+----+--------+---------+
2 rows in set (0.00 sec)
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
mysql> UPDATE account SET balance = balance - 10 WHERE id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SAVEPOINT s1; # 一个保存点
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM account;
+----+--------+---------+
| id | name | balance |
+----+--------+---------+
| 1 | 狗哥 | 1 |
| 2 | 猫爷 | 2 |
+----+--------+---------+
2 rows in set (0.00 sec)
mysql> UPDATE account SET balance = balance + 1 WHERE id = 2; # 更新错了
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> ROLLBACK TO s1; # 回滚到保存点s1处
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM account;
+----+--------+---------+
| id | name | balance |
+----+--------+---------+
| 1 | 狗哥 | 1 |
| 2 | 猫爷 | 2 |
+----+--------+---------+
2 rows in set (0.00 sec)
- 点赞
- 收藏
- 关注作者
评论(0)