RDS运维教程之数据基础操作

举报
tea_year 发表于 2024/08/23 12:11:16 2024/08/23
【摘要】  基础的数据操作05 基础的数据操作一.添加数据添加单条数据 ( insert into)批量添加多条数据注意事项:空字符串和 null二.查询数据 ( select )别名三.修改数据 ( update )四.删除数据 ( delete )注意事项事务(Transaction)为啥需要事务原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Dur...

 基础的数据操作

在创建了数据库和数据库表之后,我们就可以在表中进行数据操作了。基础操作分为

  1. 添加

  2. 删除

  3. 修改

  4. 查询

以上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;

查询时,显示指定列的数据

别名

使用别名的常见:

  1. 表名和列名名称太长,不便输入或者容易写错

  2. 有相同的名称

使用别名后,调用时需要使用别名,而不是原来的名字

表使用别名

给表起别名非常简单,在表名后空格,然后写别名即可

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实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据) 。

注意事项

  1. SQL 语句结束的时候需要写分号正确结束

  2. 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)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。