MySQL5.7从入门到精通--------第八章读书笔记

版权声明:欢迎转载大宇的博客,转载请注明出处: https://blog.csdn.net/yanluandai1985/article/details/83475794

8.1.1  为表的所有字段插入数据

        标准的插入语法为:为表中的所有的列插入数据,一 一对应。

        使用该语句的时候,字段列和数据值的数量必须相同。

        INSERT INTO table_name(COLUMN_LIST)  VALUES( VALUE_LIST );

DROP TABLE IF EXISTS t_person;

CREATE TABLE t_person
(
   id INT(11) PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  age INT(11),
  sex CHAR(1), -- 1为男,2为女
  address VARCHAR(255),
  remark VARCHAR(11)
);
INSERT INTO t_person (id,name,age,sex,address,remark) 
VALUES               (1,'大宇',23,'1','苏州','穷小子')

  

        在插入语句中,其实可以不要按照定义表的时候定义COLUMN_LIST的属性,可以适当的调整,比如把age放到name之前。

        若COLUMN_LIST 为 空,此时值列表VALUE_LIST中需要为表的每一个字段指定值,并且指定的顺序要与数据表中字段定义时的顺序相同。       

        若主键是可以自增的,那么插入的数据主键即使为NULL,MySQL也会自动为其分配一个主键。

INSERT INTO t_person VALUES(NULL,'小大宇',22,'1','suZhou','MySQL Lover');

  

忽略插入的列名称的优劣

        好处:可以简化我们的SQL

        坏处:一旦表的结构发生变化,那么这个SQL语句就会报错。比如表的列出现增加,删除或者列位置改变。

8.1.2  为表的指定字段插入数据  

       不一定要为所有的字段插入数据,只向部分字段中插入值,其它没有指明插入的字段值将会被插入默认值。没有指明默认值的字段,将插入NULL。

       先将性别默认设计为男,即字符串'1'。

ALTER TABLE t_person modify sex CHAR(1) DEFAULT '1';
DESC t_person;

  

INSERT INTO t_person(name,age) VALUES('宇师傅',32);

  

拨云见日

        如上插入结果所示,因为sex的默认值是'1',所以插入的数据默认为'1'。主键由MySQL自动生成。而address与remark属性没有默认值,所以用NULL来补充。name 与 age 属性由用户指明。所以,插入语句可以不用提供所有的字段值,只为需要插入的列提供数据,其它列用其默认值填充,没有默认值的用NULL填充。

8.1.3  同时插入多条数据

        插入时指定多个值列表VALUES_LIST,每个值列表用逗号分开。

INSERT INTO t_person(name,age) VALUES('小雨',22),('大雨',22),('暴雨',22);

  

一条插入多条记录的INSERT语句等同于多个单行插入的INSERT语句。

对于性能而言,一条插入多条记录的INSERT语句,效率高于多个单行插入的INSERT语句。

8.1.4  将查询结果插入到表中

        语法规范:

        INSERT INTO table_name(COLUMN_LIST) 

        SELECT(COLUMN_LIST2)  FROM  table_name2 [ WHERE condition ]

DROP TABLE IF EXISTS t_info;
CREATE TABLE t_info
(
    id INT(11) PRIMARY KEY AUTO_INCREMENT,
  accountName VARCHAR(255) NOT NULL,
  accountAddress VARCHAR(255) NOT NULL
);

-- 如果忽略主键,那么会报错,所以要一一对应,及时用NULL,也要填上
-- 已经错了一次了!
INSERT INTO t_info VALUES(NULL,'刀锋之影','诺克萨斯');

  

        为了把其它表中的数据迁移到t_person 表中,可以执行如下SQL。

INSERT INTO t_person(name,address)
SELECT accountName , accountAddress FROM t_info;

  

        COLUMN_LIST 与 COLUMN_LIST2必须字段个数相同,数据类型相同(?,好像不一定要完全相同),但是不需要名称完全相同,就像上面的例子那样。

        查询出来的值如果能够顺利转型成INSERT 语句需要的值,就能插入到数据库中。

8.2.1  更新

语法: UPDATE  table_name SET  column1 = A , column2 = B [ WHERE conditon ]

UPDATE t_person SET sex = '0' WHERE id BETWEEN 2 AND 6;

8.2.2  删除

        删除记录将会删除一整条记录,也可以通过范围删除,比如添加条件 WHERE id  BETWEEN 3 AND 5;

        若不加条件,则删除整张表的数据,慎用!

语法:DELETE FROM table_name [WHERE condition]

        

猜你喜欢

转载自blog.csdn.net/yanluandai1985/article/details/83475794
今日推荐