MySQL入门(四) 数据表的数据插入、更新、删除

序言

数据表的插入、更新、删除非常简单,但是简单的也要学习,细节决定成败。

                                         ---WH

一、插入数据

      格式:INSERT INTO 表名(字段名...)VALUES(值...);

      创建环境

        使用person表

        CREATE TABLE person

        (  

          id INT UNSIGNED NOT NULL AUTO_INCREMENT,

          name CHAR(40) NOT NULL DEFAULT '',

          age INT NOT NULL DEFAULT 0,

          info CHAR(50) NULL,

          PRIMARY KEY(id)

        );

    1.1、为表的所有字段插入数据

        方式一:INSERT INTO person(id,name,age,info) VALUES(1,'Green',21,'Lawyer'); 

                    

        方式二:INSERT INTO person VALUES(2,'aaa',18,'MAN');

                  

        方式三:INSERT INTO person (name,id,age,info) VALUES('bbb',3,17,'haha');

                  

        总结:

          方式一和方式三说明插入数据时可以不用按照表结构中的顺序来,只要给的值与前面字段名一一对应即可,

          方式二表明可以忽略字段名,但是其值必须跟表结构中的字段顺序一样。

          使用这三种方式去为所有字段插入数据都可以。

    1.2、为表的指定字段插入数据

          在有时候,给表中插入记录行时,字段值不一定要全部都需要手动插入,可能id自动增长的,也有时某个字段使用默认值,不用插入值也行,这时候就需要为表指定字段来插入数据了。

          INSERT INTO person(name,age,info) VALUES('Willam',20,'sports man');

                  

          这里就缺少了id字段,但是id字段是AUTO_INCREMENT,不用我们手动插入值

    1.3、同时插入多条记录

          格式:INSERT INTO 表名(字段名) VALUES(记录行值1),(记录行值2),...;

          解释:也就是相当于一条语句插入多条记录,就不用每次只插入一条数据了

          INSERT INTO person(name,age,info) VALUES('qqq',19,'haha'),('eee',14,'heihei');  //插入两条数据。

                  

          同时插入多条记录时,会出现三个名词 Records:表明插入的记录条数  Duplicates:表名插入时被忽略的记录,原因可能是这些记录包含了重复的主键值  Warnings:表明有问题的数据值,例如发生数据类型转换。 上面提示的是 2个Records,确实是插入了两条记录数

    1.4、将查询结果插入到表中

          在有的时候,可能需要将一张表中的数据搬到另一张表中,但是一条条输入记录,很慢,所以就有了这个将查询结果插入到表中,也就是说,将一张表中查询到的结果,全部一次性插入到另一张表中,这样就很方便了,但是也有前提条件,那就是查询的结果的字段个数和插入到目标表的字段个数是一样的,并且数据类型也要相同。具体下下面这个例子。

          上面一张person表不够用,现在在创建一张表。

          CREATE TABLE person_old

          (

            id INT UNSIGNED NOT NULL AUTO_INCREMENT,

            name CHAR(40) NOT NULL DEFAULT '',

            age INT NOT NULL DEFAULT 0,

            info CHAR(50) NULL,

            PRIMARY KEY(id)

          );  

          增加两条记录

          INSERT INTO person_id VALUES(11,'Harry',20,'studeng'),(12,'Beck',18,'polic');

                  

          现在将person_old表中的所有数据转移到person表中。

          INSERT INTO person(id,name,age,info) SELECT id,name,age,info FROM person_old;

                  

          这样看一下,id中间就好像断了一块,其实可以不用添加id字段,只添加后面三个字段的值

          INSERT INTO person(name,age,info) SELECT name,age,info FROM person_old; 

                    

          不指定id,那么就会按照person表中id的规则,AUTO_INCREMENT,这里说明一下AUTO_INCREMENT的原理,先检查表中最大的id值,然后往上面加1,每次做就会先检测最大的id值是多少。           

       

二、更新数据

    格式:UPDATE 表名 SET 字段名=值,字段名=值... WHERE 条件;

    解释:通过条件找到要更新数据的那一行记录,然后通过SET 字段名=值这样的形式,写出要更改哪个字段,并更改为什么值。

       UPDATE person SET name = 'xxx' WHERE name='aaa';  //将person表中name=aaa的记录行更新为name=xxx。

                

            解释:原本第二行的记录name=aaa。现在改为了xxx。可以同时改好多个值,不一定就只更改名字。主键id也能更改,只要主键不冲突,随便改成什么值

        UPDATE person SET id = 7 WHERE id = 14;  //将id=14的记录行的id改为7

                    

三、删除数据  

        格式:DELETE FROM 表名[WHERE <condition>];

        解释:条件如果没有的话,那么就把表中所有数据度给删除了。如果有条件的话,就将符合条件的记录行删除。

        DELETE FROM person WHERE id = 13;  //将person表中id=13的记录行给删除。

                

        DELETE FROM person;  //将person表中所有数据度删除

                

四、综合案例

      下面这个例题想做的人可以做一下,环境已经教大家搭建好了,这些由于比较简单,我就不在这里一一解答了。

        4.1、创建实验环境

            创建books表  

            CREATE TABLE books

            (

              id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

              name VARCHAR(40) NOT NULL,

              author VARCHAR(200) NOT NULL,

              PRICE INT(11) NOT NULL,

              pubdate YEAR NOT NULL,

              note VARCHAR(255) NULL,

              num INT NOT NULL DEFAULT 0

            );

            

      

       4.2、将下表中的路基插入books表中,分别使用不同的方法插入记录。

               

          4.2.1、指定所有字段名称插入记录

          4.2.2、不指定字段名称插入记录

          4.2.3、同时插入多条记录

      4.3、将小说类型novel的书的价格度增加5

      4.4、将名称为赵六的书的价格改为40,并将库存量num改为26

      4.7、删除库存为5的记录

(0)

相关推荐

  • 88秒插入1000万条数据到MySQL数据库表的操作方法

    我用到的数据库为,mysql数据库5.7版本的 首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 > 4194304). You can change this value on the server by setting the max_allo

  • php插入mysql数据返回id的方法

    如下所示: <?php $dbh = mysql_connect('localhost','root','root'); mysql_select_db('pkbk'); $query = "insert intov9_admin_role_priv(roleid, m, c, a, `data`, siteid) values (12, 'huiben','huiben', 'hbprop_add', '', 1)"; $res = mysql_query($query, $d

  • python读取word文档,插入mysql数据库的示例代码

    表格内容如下: 1.实现批量导入word文档,取文档标题中的数字作为编号 2.除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql # wuyanfeng # -*- coding:utf-8 -*- # 读取docx中的文本代码示例 import docx import pymysql import re import os # 创建数据库链接 conn = pymysql.connect( host='rm-bp1vu5d84dg12c6d59o.mysql.rds.ali

  • 解决Linux下Tomcat向MySQL插入数据中文乱码问题

    一.问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二.解决办法 1.尝试一 直接在linux上面使用insert语句插入中文,正常 2.尝试二 在tomcat配置文件server.xml中加入useBodyEncodingForURI="true",不行 3.尝试三 在tomcat配置文件server.xml中再加入URIEncoding="UTF-8",不行 4.尝

  • python3 pandas 读取MySQL数据和插入的实例

    python 代码如下: # -*- coding:utf-8 -*- import pandas as pd import pymysql import sys from sqlalchemy import create_engine def read_mysql_and_insert(): try: conn = pymysql.connect(host='localhost',user='user1',password='123456',db='test',charset='utf8')

  • mybatis foreach批量插入数据:Oracle与MySQL区别介绍

    下面给大家介绍mybatis foreach批量插入数据:Oracle与MySQL不同点: •主要不同点在于foreach标签内separator属性的设置问题: •separator设置为","分割时,最终拼接的代码形式为:insert into table_name (a,b,c) values (v1,v2,v3) ,(v4,v5,v6) ,... •separator设置为"union all"分割时,最终拼接的代码形式为:insert into table

  • mysql数据插入效率比较

    做数据插入时,发现之前上班做哪些办公系统压根就没考虑过数据库性能这些,因为涉及的数据量小,时间和效率看不出来,可当数据量很大了,大到了每秒需要10000次插入时,这时就不得不考虑你的sql 语句了.当插入100条数据,能想到的数据插入方式: 1:for循环100次,一次次插入数据.连接一次插入100次,这样是最费时间的也是最费IO和连接的: 2:将100数据插入语句组成一个sql语句,然后连接一次,插入数据.这种费时比第一种要好. 3:使用事物,100次插入,最后一次事物commit; 这种比第

  • mysql中插入表数据中文乱码问题的解决方法

    一.问题 开发中遇到将其它数据库数据插入到mysql数据库表中一直会报类似如下错误: Incorrect string value: '\xE6\x88\x91' for column 'name' at row 1 二.分析 1.我先去查了两个数据库表中此字段对应的类型都是 varchar,所以不存在类型不一致导致插入报错的问题. 2. 排除字段类型不一致导致的错误后,我猜测是中文乱码问题,然后插入纯英文数据发现没有报错,所以确定了是中文乱码问题.然后网上百度发现是mysql默认的编码问题导致

  • php往mysql中批量插入数据实例教程

    前言 假如说我有这样一个表,我想往这个表里面插入大量数据 CREATE TABLE IF NOT EXISTS `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `name` varchar(255) NOT NULL default '' COMMENT '姓名', `age` int(11) NOT NULL default '0' COMMENT '年龄', PRIMARY KEY (`id`) ) ENG

  • JDBC连接MySql数据库步骤 以及查询、插入、删除、更新等

    主要内容: JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一个功能都放在一起. 安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(这本该是第一步,但是由于属于安装类,所以我们放在最后) 一.JDBC连接数据库(编辑)步骤(主要有六个步骤) 1.注册驱动: Class.forName("com.mysql.jdbc.Driver");

随机推荐