初识MySQL(7)表的创建和操作,使用视图

1.表的创建

创建表使用的是CREATE TABLE语句:

CREATE TABLE customers(
id int NOT NULL AUTO_INCREMENt,
name char(50) NOT NULL,
address char(50) NULL,
city char(50) NULL,
num int NOT NULL DEFAULT 1,
PRIMARY KEY (id)
)ENGINE = InnoDB;

以上的表创建语句告知了创建的表的属性与属性的数据类型。
(1)PRIMARY KEY指定表的主键类型,主键可以不只有一个,如可以PRIMARY KEY (id,name)。
(2)NULL表示该属性允许NULL值,NOT NULL表示该属性不允许NULL值。
(3)AUTO_INCREMENT关键字顾名思义就是自动增加的意思,它的作用就是在每一次INSERT操作之后对于id这个属性实现自动➕1。每一个表只能有一个AUTO_INCREMENT值。当我们并不需要系统自动为我们生成加一的值的时候,可以在INSERT语句中手工指定输入的值,会覆盖AUTO_INCREMENT为我们提供的值。
当我们在使用AUTO_INCREMENT的时候,会出现以下状况,因为这个属性是系统通过自动生成为我们自动提供的,因此我们自己可能不会过分的关注这个值的情况,但当我们在一些列的操作之后需要知道现在最后一个插入的行的这个AUTO_INCREMENT值的时候,要怎么办呢?
解决的办法是使用last_insert_id()这个函数,他是用来返回最后一个AUTO_INCREMENT的值。

SELECT last_insert_id();

(4)DEFAULT指出这个属性的默认值,即在未认为给出数据的情况下默认使用的值。默认值一般是常量。在实际的操作中,一般都不会使用NULL值,而是用默认值来代替NULL,从而方便在一些函数与计算中正确的对数据进行操作。
(5)ENGINE = InnoDB就是一个数据库引擎的选择语句,一般都是选择InnoDB作为引擎。

2.表的更新

更新表的操作通过ALTER TABLE 来实现,但是一般情况下,一个表在创建出来之后就不应该被经常更新或改变。

ALTER TABLE vendors ADD phone CHAR(20);

为vendors表新增一个phone的列。

3.表的删除

表的删除使用DROP TABLE 语句。

DROP TABLE customers;

删除表customers。

4.重命名表

重命名表使用RENAME语句:

RENAME TABLE customers TO customers2;

将表customers重命名为customers2。

5.使用视图

创建视图:CREATE VIEW语句进行创建
展示视图:SHOW VIEW viewname
删除视图:DROP VIEW viewname
视图的作用简单来讲就是在一些比较复杂的查询操作的时候,例如联结许多的表,这样的SQL语句会显得十分复杂,我们就可以先将这些复杂又得重复多次的操作制作成一个视图,在之后的查询的时候就可以直接对视图进行操作,简化了语句的复杂度。
一般情况下,视图只用于检索(SELECT),不用于插入更新删除。
不使用视图的操作:

SELECT cust_name,cust_contact FROM customers,orders,orderitems
WHERE customers.cust_id = orders_id AND orderitems.order_num = orders.order_num 
AND prod_id = 'TNT2';

使用视图的操作:

CREATE VIEW productcustomers AS SELECT cust_name,cust_contact prod_id FROM
customers,orders,orderitems WHERE customers.cust_id = orders.cust_id AND
orderitems.order_num = orders.order_num;
SELECT cust_name,cust_contact FROM productcustomers WHERE prod_id = 'TNT2';

可以看出视图就是先把表的联结操作完成,构成一个联结好的虚表(视图),然后在这个虚表上进行操作就只需要使用最简单的SQL语句,这在我们对一个复杂的虚表进行多次操作的时候会使得代码简单,查询效率也会大大提升。

发布了12 篇原创文章 · 获赞 0 · 访问量 237

猜你喜欢

转载自blog.csdn.net/weixin_41902922/article/details/104088462