大兴网站定制开发,wordpress 婚纱摄影,wordpress全站加密,国外调色网站数据库CRUD操作 1 CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作: 2. Create 新增 语法 INSERT [INTO] table_name[(column [#xff0c;column] ...)]
VALUES(value_list)[#xff0c;(value_list)] ... # value 后面的列的个数和类型#xff0c;要和表结构匹配… 数据库CRUD操作 1 CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作: 2. Create 新增 语法 INSERT [INTO] table_name[(column [column] ...)]
VALUES(value_list)[(value_list)] ... # value 后面的列的个数和类型要和表结构匹配value_list: value,[value] ... 示例 (1) 单行数据全列插入 插入记录时值的数量必须与表定义的列数量及顺序一致类型匹配
mysql create table student(id int , name varchar(20));
Query OK, 0 rows affected (0.09 sec)mysql insert into student value(1, 小雷);
Query OK, 1 row affected (0.02 sec)mysql select*from student;
--------------
| id | name |
--------------
| 1 | 小雷 |
--------------
1 row in set (0.00 sec) 注意 按向上的方向键可以查看之前输入的 SQL 指令需要确保创建数据库的时候指定了字符集是utf8 / gbk 等能支持中文的字符集比如 mysql 5默认的字符集是拉丁文因此如果发现插入的中文数据出现报错大概率是创建数据库的时候没有正确指定字符集。 值的数量必须与表定义的列数量及顺序不一致
mysql insert into student value(2);
ERROR 1136 (21S01): Column count doesnt match value count at row 1 插入的类型与表结构不匹配
mysql insert into student value(小美, 2);
ERROR 1366 (HY000): Incorrect integer value: 小美 for column id at row 1 mysql insert into student value(100,200);
Query OK, 1 row affected (0.01 sec)mysql select*from student;
--------------
| id | name |
--------------
| 1 | 小雷 |
| 100 | 200 |
--------------
2 rows in set (0.00 sec)
之前定义的列 list (int ,varchar)为什么此时可以成功插入 value(100 , 200) 呢 解析隐式类型转换 SQL 中的类型系统,和 Java 差异很大上述插入数据的时候value 第一列写的是字符串类型 100 但是会尝试自动转成 int100 100第二列写的是整数类型 200 会尝试自动转成字符串200 200之前插入 value(小美 , 2) 插入失败的原因是把 小美 尝试转成 int 转换失败就无法完成插入 隐式类型转换在 Java 中是非常排斥的但是 SQL 支持 比较支持隐式类型转换称为弱类型系统”不太支持隐式类型转换称为强类型系统” 拓展关于类型转换这里引入了 弱类型系统” 和 强类型系统” 两个新名词除此之外两个类型系统动态类型和静态类型但是这两组类型其实是互不相关的概念 动态类型程序运行过程中,一个变量的类型,是可以改变的Python, js, Ruby, PHP.....静态类型程序运行过程中,变量的类型不能改变C,C,Java 如果 0 通过隐式类型转换转换的是 0而不是ASCII码值因为0是一个字符串而不是一个字符
mysql insert into student value(000,200);
Query OK, 1 row affected (0.00 sec)mysql select*from student;
--------------
| id | name |
--------------
| 1 | 小雷 |
| 0 | 200 |
--------------
3 rows in set (0.00 sec) value 后面插入的是整数/浮点数直接插入即可如果是字符串需要使用 或者 引起来 (2) 单行数据指定列插入 mysql insert into student(name) value(小美);
Query OK, 1 row affected (0.01 sec)mysql select*from student;
--------------
| id | name |
--------------
| 1 | 小雷 |
| NULL | 小美 |
--------------
4 rows in set (0.00 sec)
NULL 在 sql 中表示 “空”这个单元格里啥都没写 插入记录时值的数量必须与指定列数量及顺序一致
mysql insert into student(name, id) value(小雷,666);
Query OK, 1 row affected (0.00 sec)mysql select*from student;
--------------
| id | name |
--------------
| 1 | 小雷 |
| NULL | 小美 |
| 666 | 小雷 |
--------------
5 rows in set (0.00 sec) (3) 多行数据指定列插入 mysql insert into student(id, name) values (4, 小帅), (5, 小明);
Query OK, 2 rows affected (0.13 sec)
Records: 2 Duplicates: 0 Warnings: 0mysql select*from student;
--------------
| id | name |
--------------
| 4 | 小帅 |
| 5 | 小明 |
--------------
7 rows in set (0.01 sec) mysql 是一个客户端-服务器结构的程序 现在我们要插入三条记录可以一次插入一行分三个 SQL 完成也可以一次插入三行一个 SQL 完成这两种做法的差别是非常明显的 如果插入一行分三次SQL完成就会涉及到三次客户端和服务器的交互过程 一次插入三行一次SQL完成则只需要进行一次客户端服务器交互即可 一个 sql 包含的数据多少不是主要矛盾除非数据差异太大了可能有明显影响如果只是差了几条区别是不大的所以客户端-服务器交互过程中交互的次数越多整体的开销就越大花的时间就越长。 上述讨论的一次插入多行一次指定列插入是可以配合使用的
mysql insert into student (name) values (小雷),(小美),(小花);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql select*from student;
--------------
| id | name |
--------------
| NULL | 小雷 |
| NULL | 小美 |
| NULL | 小花 |
--------------
10 rows in set (0.00 sec) (4) 插入时间日期 mysql create table mytime(time datetime);
Query OK, 0 rows affected (0.17 sec)mysql insert into mytime values(2025-01-23 11:34:00); #注意插入的时间格式
Query OK, 1 row affected (0.02 sec)mysql select*from mytime;
---------------------
| time |
---------------------
| 2025-01-23 11:34:00 |
---------------------
1 row in set (0.00 sec) 有的时候插入的时间日期希望就是当前时刻SQL 作为一个编程语言也支持一些库函数
mysql insert into mytime values(now()); # now() - 获取到当前的时间日期.
Query OK, 1 row affected (0.01 sec)mysql select*from mytime;
---------------------
| time |
---------------------
| 2025-01-23 11:40:08 |
---------------------
2 rows in set (0.00 sec)