当前位置:百问十四>生活百科>在SQL中,建立视图用什么指令

在SQL中,建立视图用什么指令

2024-08-28 02:10:27 编辑:join 浏览量:560

在SQL中,建立视图用什么指令

1.使用CREATE VIEW语句创建视图

2.语法格式为:

CREATE VIEW 视图名[(列名1,列名2[,…n])]

[WITH ENCRYPTION]]

AS 查询语句

[WITH CHECK OPTION]

其中:

l 列名 视图中包含的列,可以有多个列名,最多可引用1024个列。若使用与源表或视图中相同的列名时,则不必给出列名。

l ENCRYPTION 说明在系统表syscomments中存储CREATE VIEW语句时进行加密。

l 查询语句 用来创建视图的SELECT语句。可在SELECT语句中查询多个表或视图,以表明新创建的视图所参照的表或视图,但对SELECT语句有以下的限制:

①定义视图的用户必须对所参照的表或视图有查询权限,即可执行SELECT语句。

②不能使用COMPUTE或COMPUTE BY子句。

③不能使用ORDER BY子句。

④不能使用INTO子句。

⑤不能在临时表或表变量上创建视图。

l WITH CHECK OPTION 指出在视图上所进行的修改都要符合查询语句所指定的限制条件,这样可以确保数据修改后仍可通过视图看到修改的数据。例如对于V_05GZYY视图,只能修改除“班级编号”字段以外的字段值,而不能把“班级编号”字段的值改为“=’20051001’”以外的值,以保证仍可通过V_05GZYY视图查询到修改后的数据。

创建一个名为“Test”的视图,要求显示Test为01的信息。

在查询分析器中运行如下命令:

CREATE VIEW Test

AS begin

SELECT * FROM Test WHERE test='01'

end

首先,我们在程序中动态地创建SQL Server数据库。

我们将数据库创建在C:\mysql目录下,所以读者要练习该实例的话得先在C:下创建一个名为mysql的文件夹,否则会出错!创建数据库的关键是函数中的sql对象,通过该对象我们指定了数据库文件的一些基本属性。之后,我们新创建了一个SqlCommand对象,通过该对象我们 就实际完成了对数据库的操作。函数的实现如下:

private void button1_Click(object sender, System.EventArgs e)

{

// 打开数据库连接

if( conn.State != ConnectionState.Open)

conn.Open();

string sql = CREATE DATABASE mydb ON PRIMARY

+(name=test_data, filename = 'C:\\mysql\\mydb_data.mdf', size=3,

+maxsize=5, filegrowth=10%) log on

+(name=mydbb_log, filename='C:\\mysql\\mydb_log.ldf',size=3,

+maxsize=20,filegrowth=1);

cmd = new SqlCommand(sql, conn);

try { cmd.ExecuteNonQuery(); }

catch(SqlException ae)

{

MessageBox.Show(ae.Message.ToString());

}

}

其次,我们通过CREATE TABLE语句创建基本表,并向该表中添加4条数据。函数的实现如下:

private void button2_Click(object sender, System.EventArgs e)

{

// 打开数据库连接

if( conn.State == ConnectionState.Open)

conn.Close();

ConnectionString =Integrated Security=SSPI; + Initial Catalog=mydb; + Data Source=localhost;;

conn.ConnectionString = ConnectionString;

conn.Open();

sql = CREATE TABLE myTable+ (myId INTEGER CONSTRAINT PKeyMyId PRIMARY KEY,

+ myName CHAR(50), myAddress CHAR(255), myBalance FLOAT);

cmd = new SqlCommand(sql, conn);

try {

cmd.ExecuteNonQuery(); // 向表中添加记录

sql = INSERT INTO myTable(myId, myName, myAddress, myBalance) + VALUES (1001, 'Puneet Nehra', 'A 449 Sect 19, DELHI', 23.98 ) ;

cmd = new SqlCommand(sql, conn);

cmd.ExecuteNonQuery();

sql = INSERT INTO myTable(myId, myName,myAddress, myBalance) + VALUES (1002, 'Anoop Singh', 'Lodi Road, DELHI', 353.64) ;

cmd = new SqlCommand(sql, conn);

cmd.ExecuteNonQuery();

sql = INSERT INTO myTable(myId, myName, myAddress, myBalance) + VALUES (1003, 'Rakesh M', 'Nag Chowk, Jabalpur M.P.', 43.43) ;

cmd = new SqlCommand(sql, conn);

cmd.ExecuteNonQuery();

sql = INSERT INTO myTable(myId, myName, myAddress, myBalance) + VALUES (1004, 'Madan Kesh', '4th Street, Lane 3, DELHI', 23.00) ;

cmd = new SqlCommand(sql, conn);

cmd.ExecuteNonQuery(); }

catch(SqlException ae) { MessageBox.Show(ae.Message.ToString()); }

}

完成此操作后,我们可以打开SQL SERVER的企业管理器,查看是否有我们创建的数据库和基本表。

就是用代码写啊,因为视图你得把你需要查询的语句写出来,然后就简单了

alter table **表 add 年级 **类型

例如:

alter table student add grade char(8)

要看你的脚本是否包含创建库的部分(Create Database),如果包含,直接新建查询,执行即可。如果不包含,则需要手动创建数据库,选中库后新建查询,或者在脚本前加上

use 数据库名

go

来设定当前的库,再执行脚本就可以了。

CREATE OR REPLACE VIEW as select * from dual;

用那种语言的???

下面的运行环境

C++ MFC VC6.0

函数定义

// 初始化--连接数据库

void ADOConn::OnInitADOConn()

{

// 初始化OLE / COM 库环境

::CoInitialize(NULL);

try

{

// 创建Connection对象

m_pConnection.CreateInstance(ADODB.Connection);

// 设置连接字符串,必须是BSTR型或者_bstr_t类型

_bstr_t strConnect = Provider=SQLOLEDB; Server=DB;Database=AMSys; uid=sa; pwd=sa;;//DB为数据库

m_pConnection-Open(strConnect,,,adModeUnknown);

}

// 捕捉异常

catch(_com_error e)

{

// 显示错误信息

AfxMessageBox(e.Description());

}

}

// 执行查询

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)

{

try

{

// 连接数据库,如果Connection对象为空,则重新连接数据库

if(m_pConnection==NULL)

OnInitADOConn();

// 创建记录集对象

m_pRecordset.CreateInstance(__uuidof(Recordset));

// 取得表中的记录

m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

}

// 捕捉异常

catch(_com_error e)

{

// 显示错误信息

AfxMessageBox(e.Description());

}

// 返回记录集

return m_pRecordset;

}

// 执行SQL语句,Insert Update _variant_t

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)

{

// _variant_t RecordsAffected;

try

{

//是否已经连接数据库

if(m_pConnection == NULL)

OnInitADOConn();

// Connection对象的Execute方法:(_bstr_t CommandText,

// VARIANT * RecordsAffected, long Options )

// 其中CommandText是命令字串,通常是SQL命令。

// 参数RecordsAffected是操作完成后所影响的行数,

// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名

// adCmdProc-存储过程;adCmdUnknown-未知

m_pConnection-Execute(bstrSQL,NULL,adCmdText);

return true;

}

catch(_com_error e)

{

AfxMessageBox(e.Description());

return false;

}

}

void ADOConn::ExitConnect()

{

// 关闭记录集和连接

if (m_pRecordset != NULL)

m_pRecordset-Close();

m_pConnection-Close();

// 释放环境

::CoUninitialize();

}

//插入

void sql_Insert()

{

//连接数据库

ADOConn m_AdoConn;

m_AdoConn.OnInitADOConn();

//设置INSERT语句

_bstr_t vSQL;

SQL=; //定义SQL语句

//执行INSERT语句

m_AdoConn.ExecuteSQL(vSQL);

//断开与数据库的连接

m_AdoConn.ExitConnect();/**/

}

//修改

void CSanitation::sql_Update(CString vSanId)

{

//连接数据库

ADOConn m_AdoConn;

m_AdoConn.OnInitADOConn();

//设置UPDATE语句

_bstr_t vSQL;

vSQL = ;//定义Update语句

//执行UPDATE语句

m_AdoConn.ExecuteSQL(vSQL);

//断开与数据库的连接

m_AdoConn.ExitConnect();

}

//删除

void CSanitation::sql_Delete(CString vSanId)

{

//连接数据库

ADOConn m_AdoConn;

m_AdoConn.OnInitADOConn();

//设置DELETE语句

_bstr_t vSQL;

vSQL = ;//定义DEL语句

//执行DELETE语句

m_AdoConn.ExecuteSQL(vSQL);

//断开与数据库的连接

m_AdoConn.ExitConnect();

}

标签:视图,SQL,指令

版权声明:文章由 百问十四 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.baiwen14.com/life/257305.html
热门文章