第二章 增删改
文章目录
- 第二章 增删改
- 前言
- 一、命名
- 二、增
-
- 1. 新增
- 2. 指定列插入
- 3. 多行插入
- 4. 插入查询结果
- 5. 查询的指定列插入
- 6.注意
- 三、改
-
- 1.修改数据
- 2.组内修改
- 四、删除
-
- 1. 删除数据
- 2.drop和delete的区别
- 五、截断表
- 总结
前言
本期主要讲增 删 改, 会稍微使用到查 , 也就是select , 遇到会稍做讲解 , 详细讲解会放到下期~
一、命名
创建表时,命名有两种
- 驼峰命名(studentName)
- 蛇形命名(student_name)
SQL一般用蛇形命名,因为数据库周边生态一般依赖于蛇行命名

二、增
1. 新增
在上一期,我们讲了如何查看表,那么如何正在表里面添加数据呢?
insert into 表名 valuse(数据,数据,数据);
into可以省略,但是建议写.
数据新增完又如何查询表结构呢?
select * from 表名;
实例:(这个表和上面举例的表不是一个)

2. 指定列插入
对于一组只知道不完整信息的数据 , 怎么指定指定列插入信息?
insert into 表名(列名,列名) values (值,值);指定列插入
注意:这里的列名需要是表里面原本有的.
实例:

3. 多行插入
一句话一次性插入多组数据,怎么做?
insert into 表名 values(值,值),(值,值);
分三次也可以,但是每运行一次,客户端就会发送一个网络请求,分三次就会很慢,一次通信更快.
实例:

4. 插入查询结果
如何把查询到的数据插入到表中?
insert into 表名 select * from 另一个表名,
要注意的是,查询出来的列的个数类型需要和插入的这个表是一样的

5. 查询的指定列插入
insert into 表名 (列名) select 列名 from 另一个表名;
列的名字不影响,主要是查询的和插入的类型个数要对应的上。
实例:

6.注意
不是指定列的话 , 新增数据里的 类型和个数 要与表里面的匹配.

SQL里面
- 表示字符串常量可以用单引号表示也可以用双引号(因为没有字符类型),
- 也可以"数字",来表示数字,也就是隐式类型转换
而JAVA里面就不可以这样,那么称SQL这种是弱类型,JAVA是强类型,不过平时写的时候尽量要类型匹配

操作完之后,下面会有提示rows affects 数字,这个号数字代表影响了几行,要会看,可以错略判断是否符合预期

注意:下面讲的修改和删除都是危险操作 , 操作时会有MySQL的安全机制拦截
操作前可以先关闭:
SET SQL_SAFE_UPDATES = 0;
完事后重新打开:
SET SQL_SAFE_UPDATES = 1;
三、改
1.修改数据
update 表名 set 列名=数据 where 列名=原本数据;
修改的前提是能查询到.针对查询到的结果进行修改.
示例:

注意:MySQL不支持 列名+=30 要写 列名=列名+30

2.组内修改
按照降序将age超过30岁 , 并且use_age超过10的前两个人名字都改为 ‘王五’ 怎么弄?
updata 表名 set 列名=公式 where 要求 order by 列名 limit 数字;
where 会针对后面的条件对表内数据进行筛查.
order by 是跟据后面对应列里的数据进行排序 (针对字符串也可以排序 ) , 默认是升序 , 在语句后面加条件可修改
desc 降序,asc是升序
limit就是针对后面所写数字来划分筛选后结果的修改范围
示例:

四、删除
1. 删除数据
如何删除表内数据?
delete from表名;
示例:

2.drop和delete的区别
上一期我们提到过drop , 为什么不用drop ? 二者之间有什么区别?
让我们看看str3分别执行完这些操作后的查询结果
drop table 表名;
delete:

drop:

不难看出, drop 会连带着表内结构也删掉 而delete只是删除表内数据.
五、截断表
delete本质上是一条一条删的,数据量大的话比较慢,用截断表,更快速更高效的删除表操作
truncate 表名;
truncate是站在文件角度,把表对应的文件内容清空,只能删全表,不能指定条件.
示例:

总结
本期讲了表的新增 , 修改 和 删除 , 还有少量的查询 .
下期我们会重点介绍查询 , 敬请期待~
《【数据库】CRUD-- 增删改》 是转载文章,点击查看原文。

