【MySQL — 数据库增编削查操纵】深入剖析MySQL的 create & insert 操纵
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvYzc3Zjg4ZTlhMWZkNGEyNDkyOWJjNjVkNzYzZWRiY2QuZ2lmhttps://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvNGZkNjEyNzZkMDEwNGVhMzlmNDQwZGY4Nzk2NWI4ZjguanBlZw==
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvMWE5NjI5NDFjNTA4NGIxN2ExN2RmOGI2MjI2ZGZkYTMuZ2lm
数据库CRUD操纵
1 CRUD简介
CURD是对数据库中的记录举行根本的增编削查操纵:
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvZDQ5Y2FjZWU1ZmRkNGI4YmFlNTliYmY0MDNkMWFlNjEucG5n
2. Create 新增
语法
INSERT table_name
[(column [,column] ...)]
VALUES
(value_list)[,(value_list)] ...-- value 后面的列的个数和类型,要和表结构匹配
value_list: value,[,value] ...示例
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvODAzOWEzZWIyYjRkNDYwNDg3MWU0OGE0NDMxNWMyN2YucG5n
(1) 单行数据全列插入
插入记录时,值的数目必须与表界说的列数目及次序划一,范例匹配;
create table student(id int , name varchar(20));
insert into student value(1, '小雷'); 注意:
[*]按向上的方向键可以检察之前输入的 SQL 指令;
[*]必要确保,创建数据库的时间,指定了字符集是utf8 / gbk 等能支持中文的字符集,比如 mysql 5,默认的字符集是拉丁文;因此,假如发现插入的中文数据出现报错,大概率是创建数据库的时间没有精确指定字符集。
[*] 值的数目必须与表界说的列数目及次序不划一:
insert into student value(2);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
[*] 插入的范例与表结构不匹配:
insert into student value('小美', 2);
ERROR 1366 (HY000): Incorrect integer value: '小美' for column 'id' at row 1
insert into student value('100',200);
Query OK, 1 row affected (0.01 sec)
之前界说的列 list (int ,varchar),为什么此时可以乐成插入 value('100' , 200) 呢?
剖析:隐式范例转换
SQL 中的范例体系,和 Java 差异很大,上述插入数据的时间,value :
[*]第一列写的是字符串范例 '100' ,但是会实验自动转成 int,'100' => 100
[*]第二列写的是整数范例 200 ,会实验自动转成字符串,200 => '200'
[*]之前插入 value('小美' , 2) 插入失败的缘故起因是把' 小美 ' 实验转成 int ,转换失败,就无法完成插入;
隐式范例转换在 Java 中黑白常倾轧的,但是 SQL 支持;
[*]比力支持隐式范例转换,称为"弱范例体系”
[*]不太支持隐式范例转换,称为"强范例体系”
拓展:关于范例转换,这里引入了 "弱范例体系” 和 "强范例体系” 两个新名词,除此之外,两个范例体系,动态范例和静态范例,但是这两组范例着实是互不相干的概念:
[*]动态范例:步调运行过程中,一个变量的范例,是可以改变的:Python, js, Ruby, PHP.....
[*]静态范例:步调运行过程中,变量的范例不能改变:C,C++,Java
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvMTg4ZDUwOGQ0MDZhNDJjZTgyNzc3YTZiNGU4NzkzMDYucG5n
假如 ' 0 ' 通过隐式范例转换,转换的是 0,而不是ASCII码值,由于'0'是一个字符串,而不是一个字符;
insert into student value('000',200);
Query OK, 1 row affected (0.00 sec)value 反面插入的是整数/浮点数,直接插入即可,假如是字符串,必要利用" "大概' '引起来
(2) 单行数据指定列插入
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvOTBkOGU0ZGNkNDc2NGZmOTkxODRkZWNkMDYwNWQ5ZGIucG5n
insert into student(name) value('小美');
Query OK, 1 row affected (0.01 sec)NULL 在 sql 中表现 “空”,这个单元格里啥都没写;
插入记录时,值的数目必须与指定列数目及次序划一:
insert into student(name, id) value('小雷',666);
Query OK, 1 row affected (0.00 sec)(3) 多行数据指定列插入
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvMzRjYjYwMTc4NjdlNGE4NmFlYTg5YmQwZmEzM2QxMGQucG5n
insert into student(id, name) values (4, '小帅'), (5, '小明');
Query OK, 2 rows affected (0.13 sec)mysql 是一个"客户端-服务器"结构的步调;
现在我们要插入三条记录,可以一次插入一行,分三个 SQL 完成,也可以一次插入三行,一个 SQL 完成;这两种做法的差异黑白常显着的:
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvZGIwMzM2NWE2NjlmNDEyY2EwNzAwOGI5NWRiNGZmNzYucG5n
假如插入一行,分三次SQL完成,就会涉及到三次客户端和服务器的交互过程;
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvYjRjY2U3Zjc1YjViNDJhYWEzMWU3M2RjODc5NmVjMTYucG5n
一次插入三行,一次SQL完成,则只必要举行一次客户端服务器交互即可;
一个 sql 包罗的数据多少,不是重要抵牾;除非数据差异太大了,大概有显着影响,假如只是差了几条,区别是不大的;以是客户端-服务器交互过程中,交互的次数越多,团体的开销就越大,花的时间就越长。
上述讨论的,一次插入多行,一次指定列插入,是可以共同利用的:
insert into student (name) values ('小雷'),('小美'),('小花');
Query OK, 3 rows affected (0.01 sec)
(4) 插入时间日期
create table mytime(time datetime);
Query OK, 0 rows affected (0.17 sec)
insert into mytime values('2025-01-23 11:34:00');--注意插入的时间格式
Query OK, 1 row affected (0.02 sec)有的时间插入的时间日期,盼望就是"当前时间";SQL 作为一个编程语言,也支持一些库函数
insert into mytime values(now());-- now() -> 获取到当前的时间日期.
Query OK, 1 row affected (0.01 sec)https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvYzc3Zjg4ZTlhMWZkNGEyNDkyOWJjNjVkNzYzZWRiY2QuZ2lm
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvMWE5NjI5NDFjNTA4NGIxN2ExN2RmOGI2MjI2ZGZkYTMuZ2lm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]