目录
前言
上一篇关于MySQL的文章,我们介绍了关于数据库、数据表的一些基本操作。今天,我们开始学习关于数据表里的内容的一些操作,也就是我们常说的“增删改查”、“CRUD”。
CRUD:Create(新增)、Retrieve(查询)、Update(更新)、Delete(删除)
前提
在开始关于数据表内容的操作前,我们一定要保证已经选中了对应的数据库并且创建好了对应的数据表!!!
一、新增
1. 单行插入
语法:
insert into 表名 values(列,列,列……);
括号里的列要和表定义时 个数、顺序、类型 保持一致
SQL中:字符串可以用单引号也可以用双引号
插入字符为中文,要确保数据库的字符集为utf-8
2. 指定列插入
语法:
insert into 表名(指定列1,列2,…) values(值1,值2,… );
3. 多行插入
不指定列:
指定列:
可以看出,多行插入,只需要每一行的值之间用 “,”分隔开即可
当我们要一次性插入多个数据时:
一条sql语句插入多个数据的效率更高;多条语句,每条语句插入一个数据效率低
原因:
MySQL是客户端 - 服务器结构的程序,客户端和服务器之间使用网络进行通信
每执行一条sql语句,都会涉及客户端和服务器的交互和服务器对应的处理(检查语法、数据校验、对插入的数据的位置进行定位......)
一次性插入多个数据,虽然单次操作的消耗会多,但是网络开销、服务器开销都只有一次,更加高效并且效率差异明显。
题外话:
MySQL横向对比其他编程组件,执行效率更低,经常成为一个程序的性能短板,所以后续围绕MySQL有很多调优技巧
4. 时间日期的插入
简单写法:直接使用特定的格式化字符串表示时间:‘ 年 - 月 - 日 时:分:秒 ’
mysql会自动将其转换为 8个字节的时间戳(整数) 进行保存
查询时,也会将时间戳自动转换为格式化时间
插入当前时间:
now()函数——> 获取当前时间
二、查询
1. 全列查询
语法:
select * from 表名;
“ * ” :被称为通配符
在未来的工作中,select * 这个操作很危险,如果当前数据量很大,全列查询会产生很大的硬盘IO和网络IO,可能会导致服务器无法响应~
当然也有对应的解决方式:给服务器配置多个网卡,一部分用于传输数据,另一部分用于传输控制命令
2. 指定列查询
语法:
select 列名,列名,… from 表名;