数据库操作之视图创建和存储过程创建:
假设有如下三张数据库表:
学生表:Student
Create table Student(
SID VARCHAR(20) primary key,
SName VARCHAR(20),
Sex VARCHAR(2),
Age int,
Department VARCHAR(30)
);
课程表:Course
Create table Course(
CID CVARHAR(20) primary key,
CName VARCHAR(20),
CTime int,
CScore int
);
学生-课程表关系:
Create table SC(
SID VARCHAR(20) primary key,
CID VARCHAR(20) primary key,
Score Double
);
(1)、 视图创建语句,查询出学号、姓名、课程名、成绩
Create View Stu_View
As
Select Student.SID,Student.SName,Course.CName,SC.Score
from Student,Course,SC
where Student.SID=SC.SID and Course.CID= SC.CID;
(2)、创建存储过程,用于向Student表中插入记录,并且用.net代码实现
Create proc Stu_Proc
@SID VARCHAR(20),
@SName VARCHAR(20),
@Sex VARCHAR(2),
@Age int,
@Department VARCHAR(30)
AS
Insert into Student values(@SID,@SName,@Sex,@Age,@Department);
(#a)、可以在查询分析器中执行如下语句实现数据插入:
exec Stu_Proc '05205020229','张无忌','男',25,'计算机科学与技术';
(#b)、可以在VS2005中写代码实现存储过程的调用,如下:
....
using System.Data.SqlClient;
....
.
.
.
SqlConnection con = new SqlConnection("数据库连接字符串");
con.Open();
SqlParameter parm = null;
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Stu_Proc"; //存储过程名
//学号
parm = new SqlParameter();
parm.ParameterName = "@SID";
parm.SqlDbType = SqlDbType.VARCHAR;
parm.Size = 20;
parm.Value = "张无忌";
parm.Direction = ParameterDirection.Input;
cmd.Parameters.Add(parm);
//姓名
....
//性别
....
//年龄
....
//系别
....
cmd.ExecuteNonQuery();
(3)、SQL语句中的DCL说明
SQL语句分为三类:DDL(Data Definition Language)数据定义语言、DML(Data Manipulation Language)数据操纵语言、DCL(Data Control Language)数据控制语言。
DDL中主要是数据库的创建、表的创建、视图及存储过程的创建等。
DCL中主要是CRUD(Create、Retrieve、Update、Delete)操作。
DCL中主要是授权(Grant)、拒绝(Deny)、撤销(Revoke)操作。
下面说明下DCL中三种操作的用法:
假若允许gogofly对表Student进行CRUD操作,语句如下:
Grant Insert、Update、Select、Delete ON Student TO gogofly;
假若拒绝gogofly对表Student进行CRUD操作,语句如下:
Deny Insert、Update、Select、Delete ON Student TO gogofly;
若要撤销已经授权的权限的话,使用Revoke语句进行收回:
Revoke Insert、Update、Select、Delete ON Student FROM gogofly;