公司开发新的软件,项目经理决定使用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巳开发组成员提问,通常很快就全得到回答。
● 价格便宜
2. 安装mysql数据库,我使用的是无需安装的版本,
具体安装过程网上有很多资料,这里就不详细列出来了。
3. mysql注释
创建的mysql脚本,为了明白各个字段代表的意义,一般都会添加注释。mysql中添加注释和sql server不完全相同,sql server中是(--),mysql中是(-- )即在横杠后面需要加空格。
4 mysql中存储过程
● 使用存储过程有很多优点,以下是简单描述:
还有,如果多条SQL语句执行过程中,过程环节返回了数据作为后面环节的输入数据,如果直接通过SQL语句执行,势必导致大量的数据通过网络返回到客户机,并在客户机运算;如果封装在存储过程中,则将运算放在服务器进行,不但减少了客户机的压力,同时也减少了网络流量,提高了执行的效率。
● 使用存储过程的各种返回值。
CREATETABLE[dbo].[Order](
[o_id][bigint]IDENTITY(1,1) NOTFORREPLICATIONNOTNULL,
[o_buyerid][int]NOTNULL
)
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
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
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
CREATETABLE[dbo].[Temp](
[o_id][bigint]IDENTITY(1,1) NOTFORREPLICATIONNOTNULL,
[o_buyerid][int]NOTNULL
)
INSERT[Temp]EXEC[nb_order_select]@o_id
�C 这时 Temp 就是EXEC执行SELECT 后的结果集
SELECT*FROM[Temp]
DROP[Temp] ― 删除临时表
SELECT*fromopenrowset(’provider_name','Trusted_Connection=yes’,'exec nb_order_select’)