MySQL必知必会知识预览
第一章——了解SQL
第二章——MySQL简介
第三章——使用MySQL
第四章——检索数据
第五章——排序检索数据
第六章——过滤数据
第七章——数据过滤
第八章——用通配符进行过滤
第九章——用正则表达式进行搜索
第十章——创建计算字段
第十一章——使用数据处理函数
第十二章——汇总数据
第十三章——分组数据
第十四章——使用子查询
第十五章——联结表
第十六章——创建高级联结
第十七章——组合查询
第十八章——全文本搜索
第十九章——插入数据
第二十章——更新和删除数据
第二十一章——创建和操纵表
第二十二章——使用视图
第二十三章——使用储存过程
第二十四章——使用游标
第二十五章——使用触发器
第二十六章——管理事务处理
第二十七章——全球化和本地化
第二十八章——安全管理
第二十九章——数据库维护
第三十章——改善性能
————————————– 华丽的分隔符 ————————————————–
第十九章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; // 将查询出来的数据存放到另一个表中,必须保证字段一致
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)按钮,所以,你懂的。