当前位置: 首页 > news >正文

成都 直播 网站建设天津网站建设培训班

成都 直播 网站建设,天津网站建设培训班,武侯区网站建设,app制作网站有哪些数据库CRUD操作 1 CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作: 2. Create 新增 语法 INSERT [INTO] table_name[(column [,column] ...)] VALUES(value_list)[,(value_list)] ... # value 后面的列的个数和类型,要和表结构匹配…

  


 数据库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 doesn't 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' ,但是会尝试自动转成 int,'100' => 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)

http://www.yayakq.cn/news/511676/

相关文章:

  • 网站开发技术及软件介绍广东网站seo营销
  • 阿里云网站安装WordPress附件图片弹窗
  • 陕西长城建设工程有限公司网站免费视频app软件哪个好
  • 网站效益分析020网站设计
  • 如果网站没有做icp备案世界互联网峰会官网
  • 电脑要登入国外的网站应该怎么做南京网页设计照片
  • 四川省建设建设监理协会网站西安官网seo价格
  • 海口建网站 模板分类页分页wordpress
  • 版式网站有哪些个人怎么在百度上做推广
  • 我自己做的网站一直没有效果怎么办帮客户做ppt什么的在哪个网站
  • wordpress添加站点外贸平台都有哪些
  • 网站主机是什么意思网站关键词排名优化电话
  • 上海闵行做网站的公司金华永康网站建设
  • 网站建设公司发展建议德州做网站建设的公司哪家好
  • seo公司网站推广买电脑的怎么下wordpress
  • 网站建设中端口号的作用是什么昆山住房与城乡建设局网站
  • 上海外贸网站搭建十大手机必备软件
  • 腾讯云网站建设流程图国税网站建设管理
  • 上海做网站那家公司好帝国+只做网站地图
  • 电子商务网站设计与开发如何进行网站运营与规划
  • 百度权重查询网站软文写作范文500字
  • 做旅游网站多少钱嘉兴外贸网站制作
  • 网站建设与管理实训课程网站引导页面制作的四个任务名称
  • 长沙网站制作哪家餐饮网站建设公司
  • 网站开发设备费用计入什么科目做网站工作
  • 网页制作3个网页的网站图片中国建设招标网是个假网站
  • 做设计 素材网站有哪网站开发需要了解的知识
  • 东莞网站设计评价中牟网站制作
  • 图片分页网站模板WordPress HTML标签验证
  • wordpress网站缓存安装广州工商注册大厅