MySQL基础学习总结(5)

  如何对union语句的输出进行排序呢?使用order by子句时,必须放在union最后一条select语句之后,对于结果集,只能有一种排序规则,所以不允许使用功能多条order by子句。

MySQL基础学习总结

17、插入数据

  插入语句insert一般会有产生输出,一般只会打印影响的行数。insert时如果不提供列名,则必须给每个表列提供一个值,如果提供列名,则必须对每个列出的列给出一个值,否则报错。

插入一个完整的行:

MySQL基础学习总结

 

MySQL基础学习总结

插入多个行:

18、更新和删除数据

  分别使用update语句和delete语句来进行更新和删除数据操作。先把goods表中数据清除掉一部分,goods表数据如下:

MySQL基础学习总结

update goods set num = 1 where name = '苹果'; 此时对应苹果的num变为1

delete from goods where num = 7; 删除num为7的记录,也就是name为橘子的记录。

注意,这里有一些使用update和delete语句的一些注意事项:

除非确实打算更新和删除每一行,否则绝对不要使用不带where子句的update或delete语句。

保证每个表都有主键,尽可能像where子句那样使用它。

在对update或delete语句使用where子句前,应该先用select进行测试,保证过滤的是正确的记录,以防止编写的where子句不正确。

mysql没有撤销功能,应小心使用update或delete功能。

19、创建和操纵表

  利用create table创建表,必须给出表的名字,在关键字create table只有给出;表列的名字和定义,用逗号隔开。

create table vendors ( vend_id int not null auto_increment, vend_name char(50) not null, vend_address char(50) null default '*', vend_city char(40) null, primary key (vend_id) ) engine=InnoDB;

  这条语句创建一个vendors表,vend_id和vend_name是必须的,指定为not null,其他的为非必须的,指定为null,null为默认设置。auto_increment关键字告诉mysql,本列每当增加一行时自动增量,可以保证该列值唯一。每个表只允许有一个auto_increment列,而且它必须被索引(如,通过使它为主键)。default为默认值。

  注意,主键必须唯一,表中的每个行必须具有唯一的主键,如果主键使用单个列,则它的值必须唯一;如果使用多个列,则这些列的组合必须唯一。外键不能垮跨越引擎。mysql内部打包了多种引擎,以下几个是需要知道的引擎:

InnoDB是一个可靠的事务处理引擎,它不支持全文本搜索。

MEMORY在功能等同于MyISAM,但由于数据存储在内存,所有速度很快(特别适合用临时表)。

MyISAMysql是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理。

  使用alter table语句更新表结构。

MySQL基础学习总结

 

MySQL基础学习总结

  删除表(不是其内容,而是整个表)使用drop语句即可。drop table table_name; 这条语句删除table_name表,只要它存在,注意,删除表时没有确认,也不能撤销。

  使用rename table语句重命名表。

20、视图

  视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。视图仅仅是用来查看存储在别处数据的一种设施,视图本身不包含数据,因此它们返回的数据是从其他表中检索出来的。视图提供了一种MySQL的SELECT语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。

使用视图的常见应用:

重用SQL语句

简化复杂的SQL操作,在编写查询后,可以方便地重用它而不必知道具体的查询细节

使用表的组成部分而不是整个表

保护数据,授予客户表的特定部分访问权限而不是全部

更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2cbf56adb63dc3a9efae64edf111e427.html