关于mysql数据库知识整理
公司开发新的软件,项目经理决定使用mysql作为项目中的数据库,由于之前一直使用的是sql server,因此赶紧恶补了mysql的一些知识。为了防止以后忘记,特此记录下来。
mysql数据库的优点
接到这个通知,脑子里第一个想法是为什么使用mysql,由于一直使用C#作为开发语言,因此公司开发人员多数都习惯用sql server数据库。那么,为什么领导层放弃sql server改使用mysql呢,以下是我整理的mysql数据库的一些优点。
● 容易使用。MySQL是一个相对简单并且高性能的数据库系统,和oracle这样的大型数据库系统相比,MysQL复杂程度较低,易于学习和维护。
● 速度快。MySQL的运行速度很快。
● 支持标准查询语言。MysQL仍然可以使用结构化查询语言SQL———种所有的流行数据库系统都能够使用的数据库操作语言。
● 支持ODBC协议。MySQL支持Microso记开发的开放式数据库连接协议(ODBC)。
● 多用户连接。许多的客户机可以同时连接服务器,并月多个客户机可以同时使用多个数据库。MySQL还能够实现对用户的访问控制。
● 可移植性。MySQL可以运行在各种不同版本的unix以及Linux操作系统上,还可以运行在win32的环境之上。从硬件上看MySQL可以运行在从家用PC到高档服务器以内的各种机型。
● 计放式的开发与分发。只要到MySQL的官方网站,或者义他相关的N站,即可下载MySQL的组件。如果对MySQL的某一个组件不满,则可以将源代码拿来自己修改,或者增添自己想要的功能。
● 非常周到的技术支持。MySQL的任何版本都包含有内容详尽的参考指南。如果和MySQL的开发者之间达成协议,就可以从开发者那里得到技术支持。此外,通过邮件列表也可以随时在网上向MySLQ巳开发组成员提问,通常很快就全得到回答。
● 价格便宜
具体安装过程网上有很多资料,这里就不详细列出来了。
3. mysql注释
创建的mysql脚本,为了明白各个字段代表的意义,一般都会添加注释。mysql中添加注释和sql server不完全相同,sql server中是(--),mysql中是(-- )即在横杠后面需要加空格。
4 mysql中存储过程
● 使用存储过程有很多优点,以下是简单描述:
第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
第四:存储过程主要是在服务器上运行,减少对客户机的压力。
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
第六:存储过程可以在单个存储过程中执行一系列 SQL 语句。
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
其实存储过程还可以控制权限,比如一个表不直接允许用户直接访问,但要求允许用户访问和修改其中一个或多个字段,那就可以通过一个存储过程来实现并允许该用户使用该存储过程。
还有,如果多条SQL语句执行过程中,过程环节返回了数据作为后面环节的输入数据,如果直接通过SQL语句执行,势必导致大量的数据通过网络返回到客户机,并在客户机运算;如果封装在存储过程中,则将运算放在服务器进行,不但减少了客户机的压力,同时也减少了网络流量,提高了执行的效率。
● 使用存储过程的各种返回值。
CREATETABLE[dbo].[Order](
[o_id][bigint]IDENTITY(1,1) NOTFORREPLICATIONNOTNULL,
[o_buyerid][int]NOTNULL
)
1).OUPUT参数返回值
例: 向Order表插入一条记录,返回其标识
CREATEPROCEDURE[dbo].[nb_order_insert](
@o_buyeridint ,
@o_idbigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
INSERTINTO[Order](o_buyerid )
VALUES (@o_buyerid )
SET@o_id=@@IDENTITY
END
END
存储过程中获得方法:
DECLARE@o_buyeridint
DECLARE@o_idbigint
EXEC[nb_order_insert]@o_buyerid ,o_id bigint
2).RETURN过程返回值
CREATEPROCEDURE[dbo].[nb_order_insert](
@o_buyeridint ,
@o_idbigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
IF(EXISTS(SELECT*FROM[Shop]WHERE[s_id]=@o_shopid))
BEGIN
INSERTINTO[Order](o_buyerid )
VALUES (@o_buyerid )
SET@o_id=@@IDENTITY
RETURN1 — 插入成功返回1
END
ELSE
RETURN0 — 插入失败返回0
END
存储过程中的获取方法
DECLARE@o_buyeridint
DECLARE@o_idbigint
DECLARE@resultbit
EXEC@result=[nb_order_insert]@o_buyerid ,o_id bigint
3).SELECT 数据集返回值
CREATEPROCEDURE[dbo].[nb_order_select](
@o_idint
)
AS
BEGIN
SET NOCOUNT ON;
SELECT o_id,o_buyerid FROM[Order]
WHERE o_id =@o_id
GO
存储过程中的获取方法
(1)、使用临时表的方法
CREATETABLE[dbo].[Temp](
[o_id][bigint]IDENTITY(1,1) NOTFORREPLICATIONNOTNULL,
[o_buyerid][int]NOTNULL
)
INSERT[Temp]EXEC[nb_order_select]@o_id
– 这时 Temp 就是EXEC执行SELECT 后的结果集
SELECT*FROM[Temp]
DROP[Temp] — 删除临时表
(2)、速度不怎么样.(不推荐)
SELECT*fromopenrowset(’provider_name‘,‘Trusted_Connection=yes’,‘exec nb_order_select’)
本文出自 “女汉子的天空” 博客,请务必保留此出处http://guestli.blog.51cto.com/8194376/1378188
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。