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,指令