第十九章INSERT INTO

INSERT INTO:用来向数据库中添加数据的关键字。
INSERT使用方式:
1、插入完整的行;
2、插入行的一部分;
3、插入多行;
4、插入某些查询的结果;
注意:
1、插入及系统安全 , 我们可以针对每个表或者每个用户,利用MySQL的安全机制禁止使用INSERT语句(后期笔记中会涉及)
2、INSERT语句没有返回值,不会产生输入,查看是否插入数据可以利用可视化工具或者SELECT语句,(建议学习可视化工具)
3、如果产生错误信息,则表示数据没有插入成功,此时应该查看 值与列的对应情况 以及 字段类型 等要求。

insert into Customers values(NULL , 'Pep','100 Main Stree',
'LogAngeles','CA','90046','USA',NULL,NULL);  //插入完整的行,可以忽略列

insert into Customers(cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country,cust_contact,cust_email) values('Pep','100 Main Stree', 'LogAngeles','CA','90046','USA',NULL,NULL); //插入行的一部分,必须指定对应的列名

insert into
Customers(cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country) values('Pep','100 Main Stree', 'LogAngeles','CA','90046','USA'),('Mem','42 Galax way','New York','NY','12323','USA'); // 插入多行,进行逗号分隔

insert into customers(cust_id,cust_contact,cust_email,cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country)select cust_id,cust_contact,cust_email,cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country from custnew; // 将查询出来的数据存放到另一个表中,必须保证字段一致

MySQL减法函数 会去精度吗 mysql做减法_ci

INSERT总结:

1、对于整行插入忽略其列值的时,这种情况是极不安全的,不建议使用,这样的sql语句太依赖表中的列的定义次序,这样的话,不能保证下一次表结构变动后各个列保持完全相同的次序。而且,在这种情况下,必须为每一个列提供一个值,如果有的列为空值时,也应该指明为NULL;而在有自动递增或者递减的自动增量时,不想指定值时,也应该使用NULL,这样MySQL就会在这里插入一个可用的值。
2、插入行的一部分,values列表中的值,会被依次赋给表的列表中的对应项,这时为NULL的值,可以不出现在插入语句中,在省略的列中,必须满足以下某个条件:该列允许为NULL值,或者设置了默认值。
3、 插入多行,进行逗号分隔,每一组值用括号括起来。这种技术可以提高数据库处理的性能。MySQL用一个INSERT处理多个插入语句,会比使用多条插入语句快。
4、插入某些查询的结果,也被称为INSERT SELECT 语句。由一条INSERT语句和SELECT语句组成。通常用于将一张表中信息合并到另一张表中,在合并的时候,应该注意主键唯一性的问题。一般都会省略主键值,让MySQL在导入数据的时候进行重新生成新值。
5、在INSERT SELECT语句中,MySQL不关心SELECT语句返回的列名,它使用的是列的位置SELECT中的第一列,不管列名都将用来填充表列中指定的第一列,第二列将用来填充列表中填充表列中指定的第二列。这对于使用不同列名的表中导入数据是非常有用的。SELECT语句可以包含where子句用来过滤数据。

第二十章UPDATE和DELETE

更新删除数据使用方式:

更新删除表中某一行数据;
更新删除表中所有的数据;

注意:
1、UPDATE与安全 我们可以限制和控制UPDATE语句的使用,DELETE也是如此。(后期笔记中会涉及)
2、UPDATE和DELETE都不要省略where语句,稍微不注意就会更新表中的所有行。

Update customers set cust_name=’fafa’,cust_email=’fafa.com’ where cust_id=10005;
delete from  customers where cust_id=1003;

UPDATE与DELETE总结:

1、更新语句 可以在更新语句中使用子查询。但是不能先select出同一表中的某些值,再update这个表(在同一语句中)。 这样的话,会报ERROR 1093 (HY000): You can’t specify target table ‘customers’ for update in FROM clause 错误。
2、关键字ignore:在使用update语句更新多行时,并且在更新这些行中的一行或者多行时出现一个错误,则整个update操作会被取消(发生错误之前的更新数据也被还原) // Update ignore table……
3、为了删除某个列的值,可更新它为null; //经典
4、Delete 删除的是整行是表的内容,而不是表结构,,,update 删除的是整列
5、想要更快的删除表中的所有行,可以使用TRUNCATE Table语句,他能完成相同的工作,原理, TRUNCATE是删除原来的表并重新创建一张表,而不是逐行删除表中的数据。
6、在对update和delete语句使用where子句之前,应该先编写select子句进行测试。确保正确性。
7、MySQL没有撤销(undo)按钮,所以,你懂的。