【SQL必知必会】使用 视图

 视图

理解视图的最好方法是看一个例子:

Select  cust-name,cust-concatt

From customers,orders,orderitems;

Where customers.cust_id=order.cust-id

And orderitems.order_num=order.order_num

And prod_id=;’TN2’;

S

 

性能问题:  因为视图不包含的数据,所以每次使用都必须处理查询的是所需的   

人一个检测,如果创建和复杂的视图或者千头啊了视图,可能是下降的

很厉害,

 

 

22.1.2 视图的规86则和限制

 下面是关于视图和是有那个的一些最常见的规则和限制:‘

与表一样,视图必须唯一命名。

对于可以常见的视图 没有限制。

为了常见视图,必须具有足够的访问权限,这些访问权限是数据库管理人员受孕的。

视图可以嵌套,可以利用从其他的视图中检索数据来构造一个视图。

 

22.2 使用的视图

 在理解的什么是视图的(以及管理她们的规则和月苏之后)。

视图用create view 语句来创建。

使用show create view viewnamel来查看

 

22.2.1 利用的视图简化复杂的连接

视图的最常见爱你的应用能够只是是隐藏的复杂的SQL :

Create  view productcustomerass AS

Select ust_name,cust_contact,prod_id

From customers,orders,ordersitems

Where customerscust_id=order.cust_id

And orderitems.order_num=orders.order_num;

为检索订购了铲平的tnst 的客户,可如下进行:

Select cust_name,cust_contact

From productcusomters

Where prod_id=’TNT2’

 

 

这条语句通过wher子句从视图中检索特定的数据,

看以看出,,视图极大的简化了复杂的sql 语句的使用。利用

以习编写基础的sql ,然后根据需要多次使用。

 

22.2.2 用视图重新格式化检索出的数据

Select contact(RTtim(vend_name))

As  vend_titile

Order by vend_name;

 

 

 

22.2.3 勇士图过滤想要的数据

视图对于应用铍铜的where 子句也很有用。例如

Customermaillist视图,他过滤没有电子邮件的客户。

 

22.2.4 使用视图的与计算字段

视图对于简化计算的使用特备有用,下面是是第10章select 语句。

他检索的某个特定的订单中的物品。计算每种无。

Select prod_id

         Quantity,

     Item_price,

     Quantity*item+price as  expand_price

 

rantFromr orderitems;

 

Select *

From orderitemsexpand

Where order_num=20005

 

 

22.2.5 更新视图

通常是可以更新的,对他们可以进行insert,update,delete .更新   一个视图,活更新基表结构,

如果你对视图增加或删除行,际是对基本表增加。

但是,并非所有的视图都是更新的。基本上说如果能正确的确定的被更新的数据,则不循序更新,如果视图定义有如下操作:则不能进行视图操作:

 分组: 使用group by 和having

 连接:

子查询:

并:

聚集函数:

 

 

使用存储过程:

本章介绍什么是存储过程,为什么要使用存储过程,以及如何和使用

存储过程,并且介绍和创建和使用存储过程的基本的语法。

23.1 存储过程:

可以创建存储过程,存储过程简单来说,就是为以后活一条活多条。

提高性能:。因为使用存储过程比单独使用SQL语法。

存在一些只能单个请求中的Mysql 元素 和特性,以及可以使用他们呢来比那些功能更强更灵活的代码。

 换句话说,使用存储过程有3个主要的好处,几位简单的。

一般来说,存储过程的编写比基本的sql 语句的复杂,需要更高的技能,更丰富的性能。

你可能没有创建存储过程的安全访问权限。许多数据存储过程的创建权限,允许用户是哟个存储过程,但不允许创建的存储过程。

尽管有这些缺陷,存储过程是非常有用的,并且应该尽可能的使用。

23.3 使用的存储过程

 使用存储过程需要知道如何执行的她们,存储过程的执行比起定义的给你个经常用到,

因此,我们将从执行存储过程开始介绍,然后介绍介绍和使储存过程。

23.3.1 执行存储过程

   Mysql 成为存储过程的执行为调用,因此mysql执行存储过程的call.call 接受存储过程的名字以及需要传递给他的参数。

 

 Call productpriceing(

  @pricelow,

 @pricehgh,

@priceaverge

)

 

23.3.2 创建存储过程

正如所述,编写存储过程,并不是微不足道的事情,为让你了解一个过程,请看一个例子。一个返回产品的平均价格 的存储过程。一下代码:

 Create procedure  productprince(){

Begin

  Select avg(prod_price) as priceaverge

 From products;

End;

}

 

Call productpriceing();

执行创建的存储过程并现实返回的结果。因为存储过程是一个函数。所以存储过程需要是有()符号。

 

23.3.3 删除存储过程

存储过程在创建之后,被保存在服务器上,直至被删除命令。

为删除刚创建的存储过程,请主义。

23.3.4 使用参数

Producting 只是一个简单的存储过程,他简单的现实

 

23.3.4  变量variable 是内存中一个特定的位置,用来存储

以下是productpriceing的修改版本。

 Create produce productpriceing(

  Out  p1 decimal(8,2),

 Out ph decimal(8,2),

Out pa  decimal(8,2)

)

Begin

Select min(prod_price)

Into  pl

From products;

Select max(prod_price)

From ph;

Select avg(prod_price)

Into pa

From products;

End;

此存储过程接受3个参数:pl存储产品的最低的价格。

 

Call ordertotal(20005,@total)

必须给ordertotal传递2个参数;

第1个参数为订单的,第二个参数为计算出来的合计的变来闹革命

为了显示次合计,可如下进行:

  Select @total;

 

23.3.5  建立智能存储过程

Creat table mytable(

Columsn1 int,

Columns2  varchar(10),

)defaulaut character set Hebrew

Collate Hebrew-gengral;

 这个例子中制定了chararct set 和collate 两者,一般,mysql 是如下去诶的那个使用什么样的字符串和较多。

  如果 制定charactoerset set     和 collate两者。则使用这些数值。

如果至指定character set,则使用次字符数据以及默认的校对。

如果既不制定character set,也不制定collate,则使用数据库默认。

除了能制定自放缓合计和校对的表范围内,mysql还语序对每个列设置

如下所示:

Create table mytable

(

  Columns1 int,

Colums2 varcahr(10),

Columns3 varcahr(10) character set latin collate

)

 

 

Create table mytable

 

(

Columsn int,

Columns2 varcahr(20);,

Columns2 varchar(30);

)default character set Hebrew

Collate herrew_general_ci

 

这里对整个表以及一个特定的列指定了chararacter set.

临时区分大小下

上面的select 语句演示了通常不区分大小写的表上进行大小写搜索的一种技术。

 

Select 的其他collate子句还可以用于group by.having,聚集函数,别名

等。

 

使用28章:

数据库服务器通常包含关键的数据,确保这些数据的安全和完整性。

28.11 访问空值

Mysql 服务器的安全基础是:

多数的用户只需要对表的进行读和写

你可能向允许的添加数据,但是不允许他们删除数据

 

28.2 管理用户

Mysql 用户的账户和信息村砸户在名为imysql的数据库中。一个不需要

Mysql直接访问数据库和表结构,但有时需要直接访问,

Use mysql;

Select  user from user;

 

28.2.1 创建用户账户

制定散列口令,identuifiend by 制定的口令是准文本的文件。Mysql 经在保存在user表中对其进行加密,为了作为散列数值的口令,使用identibut by passwd

.新

 

为重新命名一个用户账户,使用rename user语句,如下所示:

Rename user ben to  xx;

 

 

28.2.3 设置访问权限

在创建用户登录后,必须接着分配访问权限。

Show grants for bforatal

 

Create view

Delete

Drop

Execute

File

Grant option.index,insert lock tablesl processs

Reload,replication client

Replication salceve

使用grant,revoee ,在解饿。

简化多次授权

可通过各自权限并用逗号分割,将多余的grant 语句穿在一起。如下所示:

Grant select,insert, on crashource.*  to bforta;

28.2.4  更改口令

Set password for bforta=pass    word();

Set password 还可以用来设置你自己的口令。

Set password=password();

 

28.3 小结

本章学习了通过赋予用户特殊权限的访问空值的保护msql 服务器。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执于代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值