SQL数据库操作步骤及代码

SQL数据库操作步骤及代码
SQL数据库操作步骤及代码

第2章数据库高级编程

https://www.360docs.net/doc/b210831269.html,是为.NET框架而创建的,是对ADO(ActiveX Data Objects)对象模型的扩充。https://www.360docs.net/doc/b210831269.html,提供了一组数据访问服务的类,可用于对Microsoft SQL Server、Oracle等数据源的一致访问。https://www.360docs.net/doc/b210831269.html,模型分为.NET Data Provider(数据提供程序)和DataSet数据集(数据处理的核心)两大主要部分。

.NET数据提供程序提供了四个核心对象,分别是Connection、Command、DataReader 和DataAdapter对象。功能如表2-1所示。

表2-1 https://www.360docs.net/doc/b210831269.html,核心对象

2.1 SQL Server相关配置

在使用C#访问数据库之前,首先创建一个名为“chap2”的数据库,此数据库作为2.1节及2.2节中例题操作的默认数据库。然后创建数据表Products,表结构如表2-2所示。创建完毕后可录入初始化数据若干条。

表2-2 Products表表结构

机课的操作中出现问题较多的地方。

1.身份验证方式

SQL Server 2012在安装时默认是使用Windows验证方式的,但是安装过后用户可随时修改身份验证方式。

启动SQL Server 2012 Management Studio,在“连接到服务器”对话框中选择“

Windows身份验证”连接服务器,连接成功后,在窗体左侧的“对象资源管理器”中右键单击服务器实例节点,并在弹出的快捷菜单中选择“属性”菜单项,系统将弹出“服务器属性”窗体,切换至“安全性”选项卡,如图2-1所示。

图2-1 “服务器属性”对话框-“安全性”选项卡

在“服务器身份验证”部分选择“SQL Server和Windows身份验证模式”选项,并单击【确定】按钮。系统将提示需要重新启动SQL Server以使配置生效,如图2-2所示。

图2-2 系统提示框

右键单击“对象资源管理器”的服务器实例节点,在弹出的快捷菜单中选择“重新启动”菜单项,SQL Server将重新启动服务,重启成功后即可使用混合验证方式登录SQL Server 服务器。

2.添加登录账户

大部分初学者都习惯于使用SQL Server的系统管理员账号“sa”来登录数据库服务器,而在实际工作环境中使用sa账号登录服务器是不合理的。因为很多情况下系统的数据库是部署在租用的数据库服务器上的,此时数据库设计人员或编程人员都不可能具有sa账号的使用权限,因此在将身份验证方式修改为SQL Server和Windows混合验证后,需要为某应用程序创建一个专用的登录账户。其操作步骤描述如下。

(1)使用Windows身份验证登录SQL Server,在对象资源管理器中点击“安全性”节点前面的加号“+”,在展开后的“登录名”子节点上单击右键,如图2-3所示,并在弹出的快捷菜单中选择“新建登录名”选项。

图2-3 登录名节点的右键菜单

(2)系统弹出“登录名—新建”对话框中,如图2-4所示。首先在登录名输入框中填写需要创建的用户名,此处以“zd”为例;将身份验证方式选为“SQL Server 身份验证”,为新建账户设置密码为“123”,同时去除“强制实施密码策略”和“用户在下次登录时必须更改密码”选项;最后为账户选择默认数据库“chap2”。

图2-4 “登录名-新建”对话框“常规”选项卡

(3)服务器角色节点不予配置。有关SQL Server服务器角色请参考相关资料,此处不再详细介绍。

(4)在对话框左侧选项卡中选择“用户映射”节点,如图2-5所示,在“映射到此登录名的用户”列表中,勾选此前创建好的数据库“chap2”,在窗体右下方的“数据库角色成员身份”框里选择“db_Owner”,即数据库拥有者。

图2-5 “登录名-新建”对话框“用户映射”选项卡

(5)安全对象节点一般不予配置。

(6)在对话框左侧选项卡中选择“状态”节点,如图2-6所示,将“是否允许连接到数据库引擎”选项设为“授予”,同时将“登录”选项设为“启用”。以上各节点配置完成后单击【确定】按钮,即完成了对账户的创建工作。

图2-6 “登录名-新建”对话框“状态配置”选项卡

(7)新建账户完成后,重新连接SQL Server,如图2-7所示,选择SQL Server身份验证方式,输入前面设置的登录名“zd”及密码“123”,点击【连接】按钮,即可完成登录。

登录成功后在对象资源管理器中可看到服务器实例名后面显示的登录用户名,如图2-8所示。

图2-7 “连接到服务器”对话框图2-8 对象资源管理器

2.2 使用https://www.360docs.net/doc/b210831269.html,访问数据库

2.2.1 连接数据库

在对数据源进行操作之前,首先需建立到数据源的连接,可使用Connection对象显式创建到数据源的连接。

【例2-1】设计一个Windows应用程序,能通过“Windows验证“和“Windows和SQL Server混合验证”两种方式建立到数据库的连接。

图2-9 “连接数据库”窗体控件Tab顺序

实现过程如下。

(1)新建一Windows应用程序,命名为connection,将创建的默认窗体名更名为frmConnect,窗体的Text属性设置为“连接数据库”,界面设计如图2-9所示。frmConnect 窗体中的主要控件,按Tab键顺序,描述如表2-3所示。

表2-3 “连接数据库”窗体控件及说明

(2)主要程序代码

说明:①本节内所有例题代码均需引用System.Data.SqlClient命名空间,代码如下:

using System.Data.SqlClient; //添加对SQL Server数据访问对象的引用

后续例题不再逐一说明。

②由于篇幅所限,本节中所有例题的异常捕获代码都省略了,读者需自行添加获取控件输入及访问数据库等处的异常捕获代码。

双击【Windows验证】按钮,进入其Click事件处理函数,代码如下:

//Windows方式连接数据库

private void btnConnect1_Click(object sender, EventArgs e)

{

string strConn = "server=XP-4;database=chap2;integrated security=true"; //连接字符串

SqlConnection conn = new SqlConnection(strConn); //创建连接对象

conn.Open(); //打开连接

//如连接成功则弹出消息框提示

MessageBox.Show("数据库已通过集成验证方式连接成功", "连接状态对话框");

conn.Close(); //使用完毕后关闭数据库连接

}

双击【混合验证】按钮,进入其Click事件处理函数,填写代码如下。

//SQL Server + Windows方式连接数据库

private void btnConnect2_Click(object sender, EventArgs e)

{

string strConn = "server=XP-4.;database=chap2;uid=zd;pwd=123"; //连接字符串

SqlConnection conn = new SqlConnection(strConn); //创建连接对象

conn.Open(); //打开连接

//如连接成功则弹出消息框提示

MessageBox.Show("数据库已通过混合验证方式连接成功", "连接状态对话框");

conn.Close(); //使用完毕后关闭数据库连接

}

数据库连接字符串包含要连接的数据库的信息,如server属性指定数据库服务器名称,database属性指定数据库名称,使用Windows身份验证方式只需要给出server和database两个属性的值,并使用“integrated security=true”指定身份验证方式为Windows验证;当使用混合验证时则需要使用uid属性指定数据库账户、pwd属性指定该账号的密码。

说明:上例中的连接字符串中的用户名“zd”和密码“123”,是以本节“添加登录账户”的方式创建的,读者可自行修改为自己计算机的SQLServer登录名及密码。

运行程序,分别单击【Windows验证】和【混合验证】两个按钮,如连接成功,将分别弹出不同的连接状态对话框,如图2-10所示。

图2-10 连接状态对话框

2.2.2 对数据库进行添加、修改及删除操作

在创建好到数据库的连接之后,可以使用Command对象对数据库进行更新操作。

【例2-2】设计一个Windows应用程序,能实现对数据库表的添加、修改及删除操作。

实现过程:

(1)新建一Windows应用程序,命名为operateData,将创建的默认窗体名更名为frmCommand,窗体的Text属性设置为“对数据库执行添加、修改及删除操作”,界面设计如图2-11所示。frmCommand窗体中的主要控件,按Tab键顺序,描述如表2-4所示。

图2-11 “对数据库进行添加、修改及删除操作”窗体Tab顺序视图

表2-4 “对数据库执行添加、修改及删除操作”窗体控件及说明

(2)主要程序代码

①双击【添加】按钮,进入其Click事件处理函数,代码如下。

//【添加】按钮单击事件处理函数

private void btnInsert_Click(object sender, EventArgs e)

{

string strConn = "server=XP-4;database=chap2;integrated security=true"; //连接字符串

SqlConnection conn = new SqlConnection(strConn); //声明并创建连接对象

conn.Open(); //打开数据库连接

//向商品表插入一条新记录

string strSql="insert into Products values('0012','双层蒸锅','苏泊尔集团','厨具',129.9,100,'false')";

SqlCommand comm = new SqlCommand(strSql, conn); //声明并创建命令对象

int row = comm.ExecuteNonQuery(); //执行SQL语句,并获取受影响的行数

if (row > 0) //如果记录插入成功,则弹出消息框提示

{

MessageBox.Show("插入数据成功", "操作状态对话框");

}

conn.Close(); //关闭数据库连接

}

②双击【修改】按钮,进入其Click事件处理函数,代码如下。

//【修改】按钮单击事件处理函数

private void btnUpdate_Click(object sender, EventArgs e)

{

string strConn = "server=XP-4;database=chap2;integrated security=true";

SqlConnection conn = new SqlConnection(strConn);

conn.Open();

//修改商品表中的一条记录

string strSql = "update Products set UnitsInStock=500 where ProductID='0012'";

SqlCommand comm = new SqlCommand(strSql, conn);

int row = comm.ExecuteNonQuery();

if (row > 0)

{

MessageBox.Show("修改数据成功", "操作状态对话框");

}

conn.Close();

}

③双击【删除】按钮,进入其Click事件处理函数,代码如下。

//【删除】按钮单击事件处理函数

private void btnDelete_Click(object sender, EventArgs e)

{

string strConn = "server=XP-4;database=chap2;integrated security=true";

SqlConnection conn = new SqlConnection(strConn);

conn.Open();

//删除商品表中的一条记录

string strSql = "delete from Products where ProductID='0012'";

SqlCommand comm = new SqlCommand(strSql, conn);

int row = comm.ExecuteNonQuery();

if (row > 0)

{

MessageBox.Show("删除数据成功", "操作状态对话框");

}

conn.Close();

}

运行程序,分别单击【添加】、【修改】和【删除】按钮,如操作成功,将分别弹出不同的操作状态对话框,如图2-12所示。对于数据库记录的修改情况,读者可同时从SQL Server 管理控制台访问数据库chap2的Products表进行验证。

图2-12 操作状态对话框

2.2.3 查询数据库中的数据

【例2-3】设计一个Windows应用程序,使用DataReader查询数据库中的信息并加载到ComboBox控件的选项中。

实现过程:

(1)新建一Windows应用程序,命名为testDataReader,将创建的默认窗体名更名为frmProducts,窗体的Text属性设置为“商品类别及名称”,界面设计如图2-13所示。frmProducts 窗体中的主要控件,按Tab键顺序,描述如表2-5所示。

图2-13 “商品类别及名称”窗体Tab键顺序视图

表2-5 “商品类别及名称”窗体控件及说明

(2)主要程序代码

①双击窗体标题栏,进入Load事件处理函数,访问数据库,为“商品类别”下拉框加载数据,代码如下。

//窗体加载事件处理函数,为“商品类别”组合框加载所有的商品类别数据

private void frmProducts_Load(object sender, EventArgs e)

{

string strConn = "server=XP-4;database=chap2;integrated security=true";//连接字符串

SqlConnection conn = new SqlConnection(strConn); //声明并创建连接对象

conn.Open(); //打开数据库连接

string strSql = "select distinct CategoryName from Products"; //查询

SqlCommand comm = new SqlCommand(strSql, conn);

SqlDataReader dr = comm.ExecuteReader();

while (dr.Read())

comboCategory.Items.Add(dr[0]); //依次加载数据项至ComboBox

dr.Close();

conn.Close();

}

②双击商品类别下拉框,进入其SelectedIndexChanged事件处理函数,根据其选项为“商品名称”下拉框加载数据,代码如下。

//“商品类别”下拉框选项索引变化事件处理函数,

//根据商品类别下拉框中的选项加载该类别下的所有的商品名称

private void comboCategory_SelectedIndexChanged(object sender, EventArgs e)

{

comboProducts.Items.Clear();

string strConn = "server=XP-4;database=chap2;integrated security=true";

SqlConnection conn = new SqlConnection(strConn);

conn.Open();

string strSql = "select ProductName from Products where CategoryName='"+comboCategory.Text+"'";

SqlCommand comm = new SqlCommand(strSql, conn);

SqlDataReader dr = comm.ExecuteReader();

while (dr.Read())

comboProducts.Items.Add(dr[0]);

dr.Close();

conn.Close();

}

【例2-4】使用DataAdaper和DataSet对象查询数据库中的信息并加载到ComboBox 控件的选项中。

实现过程:

(1)新建一Windows应用程序,命名为dataSet,将创建的默认窗体名更名为frmProducts,窗体及各主要控件的属性设置同例2-3。

(2)主要程序代码

①双击窗体标题栏,进入其Load事件处理函数,访问数据库,为“商品类别”下拉框加载数据,代码如下。

//窗体加载事件处理函数,为“商品类别”组合框加载所有的商品分类数据。

private void frmProducts_Load(object sender, EventArgs e)

{

string strConn = "server=XP-4;database=chap2;integrated security=true"; //连接字符串

SqlConnection conn = new SqlConnection(strConn); //声明并创建连接对象

string strSql = "select distinct CategoryName from Products"; //查询不重复的商品类别名称

SqlDataAdapter da = new SqlDataAdapter(strSql, conn); //声明并创建数据适配器对象

DataSet ds = new DataSet(); //声明并创建数据集对象

da.Fill(ds); //使用数据适配器填充数据集

comboCatagory.DataSource = ds.Tables[0]; //设置商品类别下拉框数据源

comboCatagory.DisplayMember = "CategoryName"; //设置商品类别下拉框的显示属性}

②双击“商品类别”下拉框,进入其SelectedIndexChanged事件处理函数,根据其选中项为“商品名称”下拉框加载数据,代码如下。

//“商品类别”下拉框选项索引变化事件处理函数,

//根据商品类别下拉框中的选项加载该类别下的所有的商品名称

private void comboCatagory_SelectedIndexChanged(object sender, EventArgs e)

{

string strConn = "server=XP-4;database=chap2;integrated security=true";

SqlConnection conn = new SqlConnection(strConn);

//根据“商品类别”下拉框中的选项查询商品名称

string strSql="select ProductName from Products where CategoryName='"+comboCategory.Text+"'";

SqlDataAdapter da = new SqlDataAdapter(strSql, conn);

DataSet ds = new DataSet();

da.Fill(ds);

comboProducts.DataSource = ds.Tables[0]; //设置商品名称下拉框的数据源

comboProducts.DisplayMember = "ProductName"; //设置商品名称下拉框的显示属性}

思考:细心的同学会发现,例2-3和例2-4虽然运行界面完全相同,但是窗体加载之后列表框中选项的情况是有区别的。那么,区别在哪呢?原因又是什么呢?

2.2.4 数据绑定控件

【例2-5】设计一个Windows应用程序,能实现商品信息的维护。本例题中,程序要读取数据库中的数据,加载数据至ListBox和ComboBox控件,并根据用户在ListBox控件中选择的数据项再次访问数据库,获取相关记录。另外,本例题还实现了对商品表

Products的增加、修改及删除操作。

图2-14 “商品信息管理”窗体Tab键顺序视图

实现过程:

(1)新建一Windows应用程序,命名为products,将创建的默认窗体名更名为frmProducts,窗体的Text属性设置为“商品信息管理”,界面设计如图2-14所示。frmProducts 窗体中的主要控件,按Tab键顺序,描述如表2-6所示。

表2-6 “商品信息管理”窗体控件及说明

(2)主要程序代码

①首先要为该程序添加两个成员变量,代码如下:

string strConn = "server=XP-4;database=chap2;integrated security=true"; //连接字符串

string insertORupdate = ""; //标识变量,用来记录要保存的是添加还是修改操作

②自定义方法DataLoad(),访问数据库,加载商品类别列表及商品名称列表,代码如

下。

///

/// 访问数据库,加载商品类别列表及商品名称列表

///

void DataLoad()

{

//以下代码使用DataReader访问数据库

SqlConnection conn = new SqlConnection(strConn); //创建连接对象

conn.Open(); //打开连接

string strSql = "select distinct CategoryName from Products"; //查询不重复的商品类别名

SqlCommand comm = new SqlCommand(strSql, conn); //声明并创建命令对象

SqlDataReader dr = comm.ExecuteReader(); //执行查询,用DataReader存放数据

while (dr.Read()) //如果查询到数据

comboCategory.Items.Add(dr[0]); //逐项加载商品类别名至ComboBox

dr.Close(); //关闭dataReader

//以下代码使用DataAdapter和DataSet访问数据库

strSql = "select ProductName,ProductID from Products"; //查询商品名称及商品编号

SqlDataAdapter da = new SqlDataAdapter(strSql, conn); //声明并创建数据适配器对象

DataSet ds = new DataSet(); //声明并创建数据集对象

da.Fill(ds); //填充数据集

lstProducts.DataSource = ds.Tables[0]; //设置商品名称列表的数据源

lstProducts.DisplayMember = "ProductName"; //设置显示值属性

lstProducts.ValueMember = "ProductID"; //设置实际值属性

conn.Close(); //关闭连接

lstProducts.SelectedIndex = -1; //使商品名称列表没有选中项

}

商品管理窗体的Load事件处理函数,就是调用DataLoad()方法,代码如下。

//窗体加载事件处理函数

private void frmProducts _Load(object sender, EventArgs e)

{

DataLoad();

}

③声明自定义方法controlEnabled(),控制各输入控件在“查看”和“编辑”操作时的可用性,代码如下。

//自定义方法,控制控件的可用性,将控件可用性分为“查看”和“编辑”两种状态

public void controlEnabled(string status)

{

if (status == "show") //当前为查看数据状态,控件都不可编辑

{

btnInsert.Enabled = true;

btnUpdate.Enabled = true;

btnSave.Enabled = false;

btnCancle.Enabled = false;

btnDelete.Enabled = true;

chkDisc.Enabled = false;

comboCategory.Enabled = false;

foreach (Control c in this.Controls)

{

if (c is TextBox)

{

TextBox txtb = ((TextBox)c);

txtb.ReadOnly = true;

}

}

}

else //当前为编辑数据状态,控件可用

{

btnInsert.Enabled = false;

btnUpdate.Enabled = false;

btnSave.Enabled = true;

btnCancle.Enabled = true;

btnDelete.Enabled = false;

chkDisc.Enabled = true;

comboCategory.Enabled = true;

foreach (Control c in this.Controls)

{

if (c is TextBox)

{

TextBox txtb = ((TextBox)c);

txtb.ReadOnly = false;

}

}

}

}

④双击lstProducts控件,进入其选项索引变化事件处理函数,根据选择的商品,查询该商品其他信息,并为界面其他控件赋值,代码如下。

//商品名称列表选项索引变化事件,根据选择的商品名称加载商品其他信息

private void lstProducts_SelectedIndexChanged(object sender, EventArgs e)

{

//用来判断用户是否选中了有效的选项,且保证是数据加载后用户进行的操作

if ((lstProducts.SelectedIndex != -1)

&&(lstProducts.SelectedValue.ToString()!="System.Data.DataRowView"))

{

string proId = lstProducts.SelectedValue.ToString(); //获取当前选中商品的商品编号

SqlConnection conn=new SqlConnection(strConn); //声明并创建连接对象

conn.Open(); //打开数据库连接

string strSql="select * from Products where ProductId='"+proId+"'"; //由商品编号查询该商品其他信息

SqlCommand comm=new SqlCommand(strSql,conn); //声明并创建命令对象

SqlDataReader dr = comm.ExecuteReader(); //使用DataReader获取查询结果

if (dr.Read()) //如果查询到数据,就将该商品各字段的值赋予窗体各控件用以显示

{

txtID.Text = dr["ProductID"].ToString();

txtName.Text=dr["ProductName"].ToString();

txtSupplier.Text=dr["SupplierName"].ToString();

comboCategory.Text = dr["CategoryName"].ToString();

txtUnitPrice.Text=dr["UnitPrice"].ToString();

txtUnitsInStock.Text=dr["UnitsInStock"].ToString();

chkDisc.Checked = (dr["Discount"].ToString())=="True"?true:false;

}

dr.Close(); //关闭DataReader

conn.Close(); //关闭连接

controlEnabled("show"); //将控件设置为查看状态}

}

说明:由于为ListBox控件加载选项时会触发SelectedIndexChanged事件,此时获取到的ListBox.SelectedValue.ToString()值为“System.Data.DataRowView”,而不是经用户选择过的商品编号,程序需过滤掉这种情况。只有完成ListBox控件的选项加载后,经用户选择某条商品数据时,程序才进行后续操作,如下代码即可实现这种过滤功能。

if ((lstProducts.SelectedIndex != -1)&&

(lstProducts.SelectedValue.ToString()!="System.Data.DataRowView"))

⑤双击btnInsert按钮,进入其Click事件处理函数,清空所有输入控件并使其为可编辑状态,设置编辑状态为insert,真正的插入操作在btnSave的Click事件处理函数中进行。代码如下。

//【添加】按钮单击事件处理函数

private void btnInsert_Click(object sender, EventArgs e)

{

insertORupdate = "insert"; //设置标识变量为添加操作

controlEnabled("edit"); //将控件设置为编辑状态

//清空所有控件

foreach (Control c in this.Controls)

{

if (c is TextBox)

{

TextBox txtb = ((TextBox)c);

txtb.Text = "";

}

}

comboCategory.SelectedIndex = -1;

chkDisc.Checked = false;

}

⑥双击btnUpdate按钮,进入其Click事件处理函数,使各输入控件为可编辑状态,设置编辑状态为update,真正的修改操作在btnSave的Click事件处理函数中进行。代码如下。

//【修改】按钮单击事件处理函数

private void btnUpdate_Click(object sender, EventArgs e)

{

controlEnabled("edit");

txtID.ReadOnly = true; //商品编号不能修改

insertORupdate = "update"; //设置标志变量为修改操作

}

⑦双击btnSave按钮,进入其Click事件处理函数,根据编辑状态对数据库进行insert 或update操作,代码如下。

//【保存】按钮单击事件处理函数,完成添加和修改操作

private void btnSave_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(strConn); //声明并创建连接对象

conn.Open(); //打开数据库连接

//下面一段代码将保存添加的商品数据

if (insertORupdate == "insert")

{

string strSql = "insert into Products values(@ProductID,@ProductName

,@SupplierName,@CategoryName,@UnitPrice,@UnitsInStock,@Discount)";

SqlCommand comm = new SqlCommand(strSql, conn);

comm.Parameters.Add(new SqlParameter("@ProductID", txtID.Text));

comm.Parameters.Add(new SqlParameter("@ProductName", txtName.Text));

comm.Parameters.Add(new SqlParameter("@SupplierName", txtSupplier.Text));

comm.Parameters.Add(new SqlParameter("@CategoryName", comboCategory.Text));

comm.Parameters.Add(new SqlParameter("@UnitPrice", float.Parse(txtUnitPrice.Text)));

comm.Parameters.Add(new SqlParameter("@UnitsInStock", float.Parse(txtUnitsInStock.Text)));

comm.Parameters.Add(new SqlParameter("@Discount", (chkDisc.Checked == true ? "1" : "0")));

if (comm.ExecuteNonQuery() > 0)

MessageBox.Show("添加商品信息成功!");

else

MessageBox.Show("添加商品信息失败!");

}

//下面一段代码将保存修改的商品数据

else

{

string strSql = "update Products set ProductName=@ProductName,

SupplierName=@SupplierName,CategoryName=@CategoryName,UnitPrice=@UnitPrice,

UnitsInStock=@UnitsInStock,Discount=@Discount where ProductID=@ProductID";

SqlCommand comm = new SqlCommand(strSql, conn);

comm.Parameters.Add(new SqlParameter("@ProductID", txtID.Text));

comm.Parameters.Add(new SqlParameter("@ProductName", txtName.Text));

comm.Parameters.Add(new SqlParameter("@SupplierName", txtSupplier.Text));

comm.Parameters.Add(new SqlParameter("@CategoryName", comboCategory.Text));

comm.Parameters.Add(new SqlParameter("@UnitPrice", float.Parse(txtUnitPrice.Text)));

comm.Parameters.Add(new SqlParameter("@UnitsInStock", float.Parse(txtUnitsInStock.Text)));

comm.Parameters.Add(new SqlParameter("@Discount", (chkDisc.Checked == true ? "1" : "0")));

if (comm.ExecuteNonQuery() > 0)

MessageBox.Show("更新商品信息成功!");

else

MessageBox.Show("更新商品信息失败!");

}

conn.Close(); //关闭数据库连接

DataLoad(); //重新访问数据库,刷新界面显示的商品信息

controlEnabled("show"); //将控件设置为查看状态

}

说明:代码中出现的SqlParameter类为SQL命令对象类。命令对象可使用参数来将值传递给SQL 语句或存储过程,提供类型检查和验证。与命令文本不同,参数输入被视为文本值,而不是可执行代码。这样可帮助抵御“SQL 注入”攻击,这种攻击的攻击者会将命令插入SQL 语句,从而危及服务器的安全。一般来说,在更新DataTable或是DataSet 时,如果不采用SqlParameter,那么当输入的Sql语句出现歧义时,如字符串中含有单引号,程序就会发生错误,并且他人可以轻易地通过拼接Sql语句来进行注入攻击。

参数化命令还可提高查询执行性能,因为它们可帮助数据库服务器将传入命令与适当的缓存查询计划进行准确匹配。除具备安全和性能优势外,参数化命令还提供一种用于组织传递到数据源的值的便捷方法。

⑧双击btnCancel按钮单击事件处理函数,控制各输入控件的可编辑状态,恢复查看状态,代码如下。

//【取消】按钮单击事件处理函数,退出编辑状态

private void btnCancle_Click(object sender, EventArgs e)

{

controlEnabled("show"); //将控件设置为查看状态

}

⑨双击btnDelete按钮,进入其Click事件处理函数,根据选择商品的编号删除该商品信息,代码如下。

//【删除】按钮单击事件处理函数

private void btnDelete_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(strConn);

conn.Open();

string strSql = "delete from Products where ProductID=@ProductID";

SqlCommand comm = new SqlCommand(strSql, conn);

comm.Parameters.Add(new SqlParameter("@ProductID", txtID.Text));

if (comm.ExecuteNonQuery() > 0)

MessageBox.Show("删除商品信息成功!");

else

MessageBox.Show("删除商品信息失败!");

conn.Close(); //关闭数据库连接

DataLoad(); //重新访问数据库,刷新界面显示的商品信息

controlEnabled("show"); //将控件设置为查看状态

}

运行程序,显示“商品信息管理”界面。界面左侧的商品名称列表中加载了所有的商品名称。点击任一商品名称,右侧商品详细信息区域的各控件中将加载该商品记录的其他字段,如图2-15。【添加】、【修改】及【删除】按钮可用,【保存】及【取消】按钮不可用。

图2-15 “商品信息管理”界面

点击【添加】按钮后,右侧控件全部清空,【保存】及【取消】按钮可用,同时【修改】及【删除】按钮不可用。如点击【修改】按钮,则右侧控件均为可编辑状态(ReadOnly属性为False,商品类别及折扣控件Enabled属性为True),按钮可用性同上。

【例2-6】设计一个Windows应用程序,能实现对个人年龄及爱好的维护功能。

本例题中,程序要构造一个数据集(DataSet),添加一个数据表(DataTable)并插入数据,将构造好的DataSet设置为DataGridView控件的数据源。另外,还实现了对数据表的增加、修改及删除操作。

图2-16 “DataSet操作”Tab键顺序视图

实现过程:

(1)新建一Windows应用程序,命名为operateDataSet,将创建的默认窗体名更名为frmDataSet,窗体的Text属性设置为“DataSet操作”,界面设计如图2-16所示。frmDataSet 窗体中的主要控件,按Tab键顺序,描述如表2-7所示。

表2-7 “DataSet操作”窗体控件及说明

(2)主要程序代码

①首先要为该程序添加四个成员变量,代码如下:

//声明数据集、数据表及数据行对象

DataSet myds = new DataSet();

DataTable mydt;

DataRow mydr;

string insertORupdate; //标识符变量,值为“添加”或“修改”

②双击窗体标题栏,进入其Load事件处理函数,构造数据集、添加数据表并插入初始数据,最终作为数据源显示在dgvHobby中,代码如下。

private void frmDataSet_Load(object sender, EventArgs e)

{

mydt = new DataTable("hobby"); //创建数据表对象

//定义表结构

mydt.Columns.Add(new DataColumn("姓名", typeof(string)));

mydt.Columns.Add(new DataColumn("年龄", typeof(Int32)));

mydt.Columns.Add(new DataColumn("爱好", typeof(string)));

//为数据表设置主键是为了在删除的时候可以定位到要删除的记录

mydt.PrimaryKey = new DataColumn[] { mydt.Columns["姓名"] };

//新建一行数据

mydr = mydt.NewRow();

mydr[0] = "张三";

mydr[1] = 21;

mydr[2] = "看电视";

mydt.Rows.Add(mydr);

//新建第二行数据

mydr = mydt.NewRow();

mydr[0] = "李四";

mydr[1] = 22;

mydr[2] = "打篮球";

mydt.Rows.Add(mydr);

myds.Tables.Add(mydt); //加入生成的表到数据集

dgvHobby.DataSource = myds.Tables["hobby"].DefaultView;//将数据显示到数据绑定控件}

此处要补充说明的是DataTable.PrimaryKey属性,获取或设置充当数据表主键的列的数组。因为主键可由多列组成,所以PrimaryKey属性由DataColumn对象的数组组成。如DataTable对象不设置PrimaryKey属性,则删除时将不能通过DataTable.Rows.Find()方法找到需要删除的数据行。

③双击btnInsert按钮,进入其Click事件处理函数,主要功能是控制按钮及各输入控件的可用性,真正的添加和修改操作,都是在btnSave按钮中完成的,代码如下。

//【添加】按钮单击事件处理函数

private void btnInsert_Click(object sender, EventArgs e)

{

txtName.ReadOnly = false; //清空输入控件并使之可编辑

txtName.Text = "";

txtAge.ReadOnly = false;

txtAge.Text = "";

txtHobby.ReadOnly = false;

txtHobby.Text = "";

insertORupdate = "insert"; //设置标识变量

btnInsert.Enabled = false; //控制按钮可用性

btnUpdate.Enabled = false;

btnSave.Enabled = true;

}

④双击btnUpdate按钮,进入其Click事件处理函数,主要功能是控制按钮及各输入控件的可用性,真正的添加和修改操作,都是在btnSave按钮中完成的,代码如下。

//【修改】按钮单击事件处理函数

private void btnUpdate_Click(object sender, EventArgs e)

{

txtName.ReadOnly = false; //使输入控件可编辑

txtAge.ReadOnly = false;

txtHobby.ReadOnly = false;

insertORupdate = "update"; //设置标识变量

btnUpdate.Enabled = false; //控制按钮可用性

数据库系统原理及应用教程第四版课后答案

第一章 1、(1)数据:数据用于载荷信息的物理符号。 (2)数据的特征;○1数据有“型”与“值”之分;○2数据受数据类型与取值范围的约束;○3数据有定性表示与定量之分;○4数据应具有载体与多种表现形式。 3、(1)数据管理的功能: ○1组织与保存数据功能,即将收集到的数据合理地分类组织,将其存储在物理载体上,使数据能够长期的被保存; ○2数据维护功能,即根据需要随时进行插入新数据,修改原数据与删除失效数据的操作; ○3数据查询与数据统计功能,即快速的得到需要的正确数据,满足各种使用要求;○4数据的安全与完整性控制功能,即能保护数据的安全与完整性。 (2)数据管理的目标:收集完整的信息,将信息用数据表示,按数据结构合理科学的组织并保存数据;为各种使用快速地提供需要的数据,并保护数据的安全与完整性。 4、(1)数据库:就是数据管理的新方法与技术,她就是一个按数据结构来存储与管理数据的计算机软件系统。 (2)数据库中的数据具有的特点:○1数据库中的数据具有整体性,即数据库中的数据要保持自身完整的数据结构;○2数据库中的数据具有数据共享性,不同的用户可以按各自的用法使用数据库中的数据,多个用户可以同时共享数据库中的数据资源。 5、(1)数据库管理系统:它就是专门用于管理数据库的计算机管理软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询与统计等操作功能,并完成对数据完整性、安全性进行操作的功能。 (2)数据库管理系统主要功能:就是数据存储、数据操作与数据控制功能。其数据存储与数据操作就是:数据库的定义功能,指未说明库中的数据情况而进行的建立数据库结构的操作;数据库建立功能,指大批数据录入到数据库的操作,它使得库中含有需要保护的数据记录;数据库维护功能,指对数据的插入、删除与修改操纵,其操作做能满足库中信息变化或更新的需求;数据库查询与统计功能,指通过对数据库的访问,为实际应用提供需要的数据。数据库管理系统的数据控制功能为:数据安全性控制功能,即为了保证数据库的数据安全可靠,防止不合法的使用造成数据库泄露与破坏,也就就是避免数据被人偷瞧、篡改或破坏;数据库完整性控制功能,指为了保证数据库中的数据的正确、有效与相容,防止不合语意的错误数据被输入或输出。 14、(1)数据库系统的软件由几部分组成?数据库系统的软件中包括操作系统(OS)、数据库管理系统(DBMS)、主语言系统、应用程序软件与用户数据库。 (2)作用:①操作系统或汉字操作系统:操作系统就是所有计算机软件的基础,在数据库系统中它起着支持DBMS及主语言系统工作的作用。如果管理的信息中有汉字,则需要中文操作系统的支持,以提供汉字的输入、输出方法与汉字信息的处理方法。②数据库管理系统与主语言系统:数据库管理系统就是为定义、建立、维护、使用及控制数据库而提供的有关数据管理的系统软件。主语言系统就是为应用程序提供的诸如程序控制、数据输入输出、功能函数、图形处理、计算方法等数据处理功能的系统软件。③应用开发工具软件:应用开发工具就是DBMS系统为应用开发人员与最终用户提供的高效率、多功能的应用生成器、第四代计算机语言等各种软件工具.如报表生成器、表单生成器、查询与视图设计器等,它们为数据库系统的开发与使用提供了良好的环境与帮助。④应用系统及数据库:数据库应用系统包括为特定的应用环境建立的数据库、开发的各类应用程序及编写的文档资料,它们就是一个有机整体。通过运行数据库应用系统,可以实现对数据库中数据的维护、查询、管理与处理操作。(3)关系:

兰州交通大学数据库期末复习资料

1.数据库:是描述事物的符号记录,是信息的载体,是信息的具体表现形式。 2.数据库技术的三个发展阶段: (1)人工管理阶段:硬件,外存只有磁带、卡片、纸带,没有磁盘等直接存取的存储设备;软件,没有操作系统,没有管理数据的软件,数据处理的方式是批处理。 (2)文件系统阶段:硬件,磁盘为主要外存储器;软件,高级语言和操作系统。 (3)数据库系统阶段:统一管理和共享数据的数据库管理系统(DBMS)。 3.数据库系统的特点: 数据结构化。较高的数据共享性。较高的数据独立性。数据由DBMS统一管理和控制。 4.数据库概念:数据库指长期存储在计算机系统内有组织的、可共享的数据集合,即在计算机系统中按一定的数据模型组织、存储和使用的相关联的数据集合。 5.数据库系统的概念:指在计算机系统中引入数据库后的 系统,一般由数据库、数据库 管理系统、数据库开发工具、 数据库应用系统、数据库管理 员和用户构成。 6.数据库(DataBase,DB)就 是存放数据库的仓库,是将数 据按一定的数据模型组织、描 述和存储,能够自动进行查询 和修改的数据集合。 7.数据库管理系统(DataBase Management System,DBMS)是 数据库系统的核心,是为数据 库建立、使用和维护而配置的 软件。 8.数据库管理系统的功能: 数据定义和操纵功能。数据库 运行控制功能。数据库的组织、 存储和管理。建立和维护数据 库。数据通信接口。 9.数据库的三级模式结构: 外模式、模式和内模式。 10.数据库的两级映像:外模 式/模式映像(逻辑独立性)。 模式/内模式映像(物理独立 性)。 10.概念模型及作用:是现实 世界的抽象反映,它表示实体 类型及实体间的联系,是独立 于计算机系统的模型,是现实 世界到机器世界的一个中间层 次。 11.联系的类型: 一对一联系(1:1)。一对多联 系(1:M)。多对多联系(M:N)。 12.数据模型:由数据结构(对 计算机的数据组织方式和数据 直接联系进行框架性描述的集 合,是对数据库静态特征的描 述)、数据操作(指数据库中 各记录允许执行的操作的集 合,包括操作方法及有关的操 作规则等,如插入、修改、检 索、更新等)、数据的完整性 约束(数据的约束条件是关于 数据状态和状态变化的一组完 整性约束规则的集合,以保证 数据的正确性、有效性和一致 性)三部分组成。 A.数据模型:层次模型。网 状模型。关系模型。 13.关系数据模型:用二维表 格结构表示实体以及实体之间 的联系的数据模型。 14.关系模式:关系的描述称 为关系模式。一个关系模式应 当是一个五元组。关系模式可 以形式化的表示为, R(U,D,dom,F).其中,R是关系 名,U是组成该关系的属性名 集合,D是属性组U中属性所 来自的域,dom是属性向域的 映像集合 15.关系的完整性:实体完 整性、参照完整性、用户自定 义完整性。 16.关系运算:关系代数的运 算对象是关系,运算结果也是 关系。 17.关系代数中的操作也分为 两类:(1)传统的集合操作, 并、差、交、笛卡尔积。(2) 专门的关系操作(关系特有的 运算),投影(对关系进行垂直 分割)、选择(水平分割)、连 接(关系的结合)、除法(笛卡 尔积的逆运算)等。 18.数据库设计过程的步骤: 需求分析、概念结构设计、逻 辑结构设计、数据库物理设计、 数据库实施、运行和维护等内 容。 20.SQL Server 2005的版本 企业版。标准版。工作组版。 精简版。开发人员版。 21.SQL(结构化查询语言)语 言是集数据定义、数据查询、 数据操纵和数据控制功能于一 体的语言 22.数据定义语言(DDL)用 于执行数据库任务,对数据库 以及数据库中的各种对象进行 创建(CREA TE)、删除 (DROP)、修改(AL TER)等操 作。 23.数据库操纵语言(DML) 用于操纵数据库中各种对象, 检索和修改数据。增inster .. 删delete 修update 查 select. 24.数据控制语言(DCL)用 于安全管理,确定哪些用户可 以查看或修改数据库中的数 据。授予权限(GRANT).收 回权限(REVOKE)收回权 限,并禁止从其他角色继承许 可权限(DENY) 25.Select 列1,列2 From 表1,表2 Where 条件 Group by 26.局部变量定义一般格式: DECLAER{@local_variable data_type}[…n] ①@local_variable :用于指定 变量的名称,变量名必须以@ 开头,并且变量名必须符合 SQL Server的命名规则。 ②data_type: 用于设置变量的 数据类型及大小,data_type可 以是任何由系统提供的或用户 定义的数据类型。但是,变量 不能是text ntexr或image数据 类型 27.局部变量的赋值方法: 使用DECLARE命令声明并创 建变量之后,系统会将其初始 值设为NULL,如果想要设定 变量的值,必须使用SET命令 或者SELECT命令 SET{@local_variable = expression }或者SELECT {@local_variable = expression}[、…n] 其中:参数@local_variable 是 给其赋值并声明的变量, expression是有效的SQL Server 表达式。 二崽版权所属!- 1 -

mysql数据库系统及应用综合练习附答案

《MySQL数据库系统及应用》综合练习__1附答案 一、单项选择题(只有一个正确答案) 【1】执行语句"SELECT '2008-01-20'+ INTERV AL 2 DAY; "结果为()。A: 2010-01-20 B: 2008-01-22 C: 2008-02-11 D: 2008-03-20 答案: B 【2】下列是不正确的MySQL的变量命名方式的是()。 A: @name! B: @name C: @_name D: @n$ame 答案: A 【3】字符串'hel'lo'输出结果为()。 A: hel\'lo B: 'hello' C: hel'lo D: 'hel lo' 答案: C 【4】关系数据库模型是以()方式组织数据结构。 A: 文本 B: 网状 C: 树状 D: 二维表 答案: D 【5】使用下列语句中的()可以删除表中所有数据,但保留表结构。A: rename table B: delete C: drop table D: turn cate table 答案: D 【6】E-R图设计属于()。 A: 需求分析设计 B: 物理结构设计

C: 逻辑结构设计 D: 概念结构设计 答案: D 【7】执行语句"GREATEST(10,9,128,1)"结果为()。 A: 128 B: 1 C: 10 D: 9 答案: A 【8】在一个关系中,若有这样一个属性存在,它的值能唯一地标识关系中的每一个元组,则称这个属性为()。 A: 候选码 B: 主键 C: 主键值 D: 数据项 答案: B 【9】数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作。这种功能称为()。 A: 数据控制功能 B: 数据管理功能 C: 数据操纵功能 D: 数据定义功能 答案: C 【10】1999年10月1日在mysql中表示方法错误的是()。 A: "1999/10/01" B: "1999%10%01" C: "1999\10\01" D: "1999-10-01" 答案: A 【11】两个表中的行按照给定的条件进行拼接而形成新表的运算为()。 A: 连接 B: 集合 C: 选择 D: 投影 答案: A 【12】向表中插入一个新行的纪录的命令为()。 A: insert from B: insert into C: replace from D: replace into 答案: B 【13】\n在MySQL中表示()。 A: 退格符 B: 换行符

数据库原理及应用(第二版)人民邮电出版社出版——习题参考答案

第1章数据概述 一.选择题 1.下列关于数据库管理系统的说法,错误的是C A.数据库管理系统与操作系统有关,操作系统的类型决定了能够运行的数据库管理系统的类型B.数据库管理系统对数据库文件的访问必须经过操作系统实现才能实现 C.数据库应用程序可以不经过数据库管理系统而直接读取数据库文件 D.数据库管理系统对用户隐藏了数据库文件的存放位置和文件名 2.下列关于用文件管理数据的说法,错误的是D A.用文件管理数据,难以提供应用程序对数据的独立性 B.当存储数据的文件名发生变化时,必须修改访问数据文件的应用程序 C.用文件存储数据的方式难以实现数据访问的安全控制 D.将相关的数据存储在一个文件中,有利于用户对数据进行分类,因此也可以加快用户操作数据的效率 3.下列说法中,不属于数据库管理系统特征的是C A.提供了应用程序和数据的独立性 B.所有的数据作为一个整体考虑,因此是相互关联的数据的集合 C.用户访问数据时,需要知道存储数据的文件的物理信息 D.能够保证数据库数据的可靠性,即使在存储数据的硬盘出现故障时,也能防止数据丢失 5.在数据库系统中,数据库管理系统和操作系统之间的关系是D A.相互调用 B.数据库管理系统调用操作系统 C.操作系统调用数据库管理系统 D.并发运行 6.数据库系统的物理独立性是指D A.不会因为数据的变化而影响应用程序 B.不会因为数据存储结构的变化而影响应用程序 C.不会因为数据存储策略的变化而影响数据的存储结构 D.不会因为数据逻辑结构的变化而影响应用程序 7.数据库管理系统是数据库系统的核心,它负责有效地组织、存储和管理数据,它位于用户和操作系统之间,属于A A.系统软件B.工具软件 C.应用软件D.数据软件 8.数据库系统是由若干部分组成的。下列不属于数据库系统组成部分的是B A.数据库B.操作系统 C.应用程序D.数据库管理系统 9.下列关于客户/服务器结构和文件服务器结构的描述,错误的是D A.客户/服务器结构将数据库存储在服务器端,文件服务器结构将数据存储在客户端 B.客户/服务器结构返回给客户端的是处理后的结果数据,文件服务器结构返回给客户端的是包含客户所需数据的文件

数据库原理及应用教程第4版习题参考答案

习题参考答案 第1章习题参考答案 一、选择题 1. C 2. B 3. D 4. C 5. D 6. B 7. A 8. B 9. D 10. B 11. C 12. D 13. D 14. D 15. B 16. C 17. D 18. A 19. D 20. A 21. D 22. D 23. C 24. A 25. C 二、填空题 1. 数据库系统阶段 2. 关系 3. 物理独立性 4. 操作系统 5. 数据库管理系统(DBMS) 6. 一对多 7. 独立性 8. 完整性控制 9. 逻辑独立性 10. 关系模型 11. 概念结构(逻辑) 12. 树有向图二维表嵌套和递归 13. 宿主语言(或主语言) 14. 数据字典 15. 单用户结构主从式结构分布式结构客户/服务器结构浏览器/服务器结构 16. 现实世界信息世界计算机世界 三、简答题 1、简述数据库管理技术发展的三个阶段。各阶段的特点是什么? 答:数据库管理技术经历了人工管理阶段、文件系统阶段和数据库系统阶段。 (1)、人工管理数据的特点: A、数据不保存。 B、系统没有专用的软件对数据进行管理。 C、数据不共

享。D、数据不具有独立性。 (2)、文件系统阶段的特点: A、数据以文件的形式长期保存。 B、由文件系统管理数据。 C、程序与数据之间有一定的独立性。 D、文件的形式已经多样化 E、数据具有一定的共享性 (3)、数据库系统管理阶段特点: A、数据结构化。 B、数据共享性高、冗余度底。 C、数据独立性高。 D、有统一的数据控制功能。 2、从程序和数据之间的关系来分析文件系统和数据库系统之间的区别和联系 答:数据管理的规模日趋增大,数据量急剧增加,文件管理系统已不能适应要求,数据库管理技术为用户提供了更广泛的数据共享和更高的数据独立性,进一步减少了数据的余度,并为用户提供了方便的操作使用接口。数据库系统对数据的管理方式与文件管理系统不同,它把所有应用程序中使用的数据汇集起来,以记录为单位存储,在数据库管理系统的监督和管理下使用,因此数据库中的数据是集成的,每个用户享用其中的一部分。 3、简述数据库、数据库管理系统、数据库系统三个概念的含义和联系。答:数据库是指存储在计算机内、有组织的、可共享的数据集合。 数据库管理系统是软件系统的一个重要组成部分,它通过借助操作系统完成对硬件的访问,并对数据库的数据进行存取、维护和管理。 数据库系统是指计算机系统中引入数据库后的系统构成。它主要由数据库、数据库用户、计算机硬件系统和计算机软件系统几部分组成。 三者的联系是:数据库系统包括数据库和数据库管理系统。数据库系统主要通过数据库管理系统对数据库进行管理的。 4、数据库系统包括哪几个主要组成部分?各部分的功能是什么?画出整个数据库系统的层次结构图。 答:数据库系统包括:数据库、数据库用户、软件系统和硬件系统。 数据库主要是来保存数据的。 数据库用户是对数据库进行使用的人,主要对数据库进行存储、维护和检索等操作。 软件系统主要完成对数据库的资源管理、完成各种操作请求。 硬件系统主要完成数据库的一些物理上的操作,如物理存储、输入输出等。

数据库系统模拟试卷上海交大成人教育

模拟试卷 一、选择题(15分) 1.关系的主属性不能取空值,属于() A.实体完整性约束 B.参照完整性约束 C.用户定义完整性约束 D.动态元组约束 2..数据库系统的数据独立性体现在()。 A.不会因为数据的变化而影响到应用程序 B.不会因为数据存储结构与数据逻辑结构的变化而影响应用程序 C.不会因为存储策略的变化而影响存储结构 D.不会因为某些存储结构的变化而影响其他的存储结构 3.概念模型是现实世界的第一层抽象,这一类模型中最着名的模型是()。 A.层次模型 B.关系模型 C.网状模型 D.实体-关系模型 4.如果一个关系属于第3范式,则它() A.必然属于2NF B.必然属于4NF C.可能不属于2NF D.必然属于BCNF 5.数据库系统由数据库、数据库管理系统、应用系统和()组成。 A.系统分析员 B.程序员 C.数据库管理员 D.操作员 6.根据DBMS的特点,进行数据库的存取方法和存储方式设置,形成了关系数据库的() A.外模式 B.模式 C.子模式 D.内模式 7.关系数据库中的投影操作是指从关系中()。 A.抽出特定记录 B.抽出特定字段 C.建立相应的影像 D.建立相应的图形 8.全码是指() A.每个属性都是独立的主码 B.每个属性都是独立的候选码 C.所有属性组合为关系的候选码 D.所有属性组合为关系的外码 9.关系代数中的连接操作是由()操作组合而成。 A.选择和投影 B.选择和笛卡尔积 C.投影、选择、笛卡尔积 D.投影和笛卡尔积 10.假设有关系R和S,关系代数表达式R-(R-S)表示的是()。 ∩S∪S -S ×S 11.在SQL语言中的视图VIEW是数据库的()。 A.外模式 B.模式 C.内模式 D.存储模式 12.在概念模型中事物称为() A.实体 B.对象 C.纪录 D.节点 13.下列不属于并发操作带来的一致性问题是()。 A.丢失修改 B.不可重复读 C.死锁 D.脏读 14.在关系R中选择若干属性列,形成新的关系,这叫做()

大工18春《SQL数据库系统及应用》在线作业2

------------------------------------------------------------------------------------------------------------------------------ (单选题) 1: 如果想查询订单表中订购金额大于等于800的所有信息,下面()语句能够完成此任务。 A: select * FROM 订单表 WHERE 订购金额<800 B: select * FROM 订单表 WHERE 订购金额>800 C: select * FROM 订单表 WHERE 订购金额<=800 D: select * FROM 订单表 WHERE 订购金额>=800 正确答案: (单选题) 2: 如果想查询订单表中前5条信息,下面()语句能够完成此任务。 A: select top 5 * FROM 订单表 B: select up 5 * FROM 订单表 C: select up_down 5 * FROM 订单表 D: select top_down 5 * FROM 订单表 正确答案: (单选题) 3: Select emp_id,emp_name,sex,title,wage from Yuangong order by emp_name 句子得到的结果集是按( )排序。 A: emp_id B: emp_name C: sex D: wage 正确答案: (单选题) 4: 如果要查询学校员工的平均收入,则使用以下()聚合函数。 A: sum() B: ABS() C: count() D: avg() 正确答案: (单选题) 5: 如果要查询学校员工的总收入,可以使用以下()聚合函数。 A: sum() B: ABS() C: count() D: MAX() 正确答案: (单选题) 6: Select count(*) from student 语句得到的结果是()。 A: 某个记录的详细信息 B: 全部记录的详细信息 C: 所有记录的条数 D: 得到16条记录 正确答案: (单选题) 7: SQL语句中,查询中分组的关键词是()。 A: ORDER BY B: LIKE C: CREATE D: GROUP BY

数据库系统及应用(高专)第二次作业

数据库系统及应用(高/专)第二次作业 This course 首页我的课程理工类课程数据库系统及应用(高/专)(2321)第五章T-SQL语言第二次作业数据库系统及应用(高/专) 开始时间2018年10月10日星期三21:07 状态完成 完成于2018年10月10日星期三21:15 耗时7 分钟29 秒 分数18.00/19.00 成绩94.74/满分100.00 题目1 正确 获得1.00分中的1.00分 未标记标记题目 题干 在KCB表中找出名字中包含“原理”两个字的课程,对应的SQL命令是()。 选择一项: a. SELECT * FROM KCB WHERE 课程名= '原理' b. SELECT * FROM KCB WHERE课程名LIKE '%原理' c. SELECT * FROM KCB WHERE课程名LIKE '原理%' d. SELECT * FROM KCB WHERE课程名LIKE '%原理%' 正确 反馈 你的回答正确 正确答案是:SELECT * FROM KCB WHERE课程名LIKE '%原理%' 题目2 正确 获得1.00分中的1.00分 未标记标记题目 题干 对于SELECT KCB.*, CJB.* FROM KCB, CJB WHERE KCB.课程号=CJB.课程号,其等价的语句为()。 选择一项: a. SELECT KCB.*, CJB.* FROM KCB LEFT JOIN CJB ON KCB.课程号=CJB.课程号 b. SELECT KCB.*, CJB.* FROM KCB RIGHT JOIN CJB ON KCB.课程号=CJB.课程号 c. SELECT KCB.*, CJB.* FROM KCB JOIN CJB ON KCB.课程号=CJB.课程号正确 d. SELECT KCB.*, CJB.* FROM KCB FULL JOIN CJB ON KCB.课程号=CJB.课程号 反馈 你的回答正确 正确答案是:SELECT KCB.*, CJB.* FROM KCB JOIN CJB ON KCB.课程号=CJB.课程号 题目3 正确

大连交通大学数据库期末复习提纲和各章节概念总结

数据库原理与应用期末复习提纲 第一章概述 1.了解数据库管理技术发展的三个阶段,数据库系统阶段特点 2.掌握数据库技术的相关概念,包括数据、数据模型、数据库、数据库管理系统和数据系统等 3.理解数据模型,包括数据模型的组成要素;概念模型的基本概念和表示方法。 4.掌握常见的三种逻辑数据模型的根本区别,关系模型; 5.掌握数据库系统的结构,包括数据库的三级模式及两级映像结构; 6.了解数据库管理系统的主要功能、组成,以及数据库系统的组成。 第二章关系数据库 1.关系及基本概念 2.关系的性质 3.关系的三种完整性 4.关系代数运算重点 第三章、第七章 1.什么是DB2实例,实例和数据库的关系? 2.什么是表空间,DB2支持哪几类表空间? 3.DB2创建数据库时,先创建哪三个表空间? 4.什么是缓冲池,其作用是什么? 5.什么是容器,容器和表空间的关系,三类容器都是什么,分别适合哪种表空间使用? 6.DB2移动实用程序所使用的文件格式有哪几种? 7.DB2导入工具import和装入工具load有何区别,各自支持哪些文件格式? 8.DB2数据库间移动大量的表使用哪个工具? 9.DB2数据库系统架构:核心、接口等 第四章SQL 1.SQL语言功能 2.SQL数据定义功能 3.SQL查询重点 4.视图操作 5.数据更新 6.授权 第五章关系数据库规范化理论

1.掌握主键、外键、候选键、全键、决定属性集的概念及判断。 2.掌握数据依赖类型以及各种函数依赖定义,会判断函数依赖类型。 3.理解掌握范式的定义及类型,重点掌握1NF、2NF、3NF的判定条件,了解BCNF概念。 4.掌握根据所给语义写出函数依赖集。 5.掌握候选键的求解理论。 6.掌握模式分解的方法 第六章数据库设计 1.数据库设计的特点、方法和步骤 2.需求分析阶段的结果 3.概念设计的特点、方法、步骤 4.局部视图的设计、视图的集成 5.逻辑结构设计:E-R图向关系模型的转换,数据模型的优化等重点 第八章数据库完整性 1.掌握实体完整性、参照完整性、用户自定义完整性的定义方法 2.掌握DB2参照完整性规则 3.掌握唯一性约束的定义方法 4.掌握约束的命名、撤销、添加方法(CONSTRAINT关键字的使用) 5.掌握前、后触发器的定义方法 第九章数据库安全性 1.计算机系统的安全模型 2.数据库系统安全控制的一般方法 3.DB2数据库系统的安全性控制三个级别 4.DB2的五种权限的分配 第十章数据库并发性 1.什么是事务,事务的ACID特性是什么 2.数据库的并发操作带来的四个问题 3.事务的两种调度方案及其正确性 4.锁的类型和锁相容关系 5.两阶段锁协议是什么 6.掌握一、二、三级封锁协议是什么,各能解决什么问题 7.掌握DB2隔离级别及其并发性能 第十一章数据库恢复 1.数据库常见的故障类型及相应的恢复策略

大工20秋《SQL数据库系统及应用》在线作业1

大工20秋《SQL数据库系统及应用》在线作业1 1:删除表sst的命令( )。 A、DROP_FOR sst B、DELETES TABLE sst C、DROP TABLE sst D、DELETES sst 答案:C 2:在SQL语句中,修改表结构的命令是( )。 A、MODIFY_FOR TABLE B、MODIFY_FOR STRUCTURE C、ALTER TABLE D、ALTER STRUCTURE 答案:C 3:SQL语句中建立表的命令是( )。 A、DROP SCHEMA B、CREATE TABLE C、CREATE VIEW D、DROP INDEX 答案:B 4:在select语句查询时,使用WHERE子句指出的是( )。 A、创建删除条件 B、排序结果

C、查询条件 D、查询视图 答案:C 5:若想查询出所有姓王的且民族为汉族的学生信息,则WHERE条件应为( )。 A、name like '王%'and Minzu='汉族' B、name like '王%'and Minzu!='汉族' C、name like '王%'and Minzu ISS '汉族' D、name like '王_'and Minzu IS '汉族' 答案:A 6:以下说法中正确的是( )。 A、student_3是不合法的变量名 B、SQL中用户变量也称为全局变量 C、a2是不合法的变量名 D、可以使用语句来为变量赋值 答案:D 7:下面聚合函数中正确的是( )。 A、SUM (*) B、COUNT (*) C、MAX (*) D、AVG (*) 答案:B 8:以下聚合函数中用于返回最大值的是( )。 A、VARP

数据库系统及应用复习

ZH计0418班数据库系统及应用复习 一、填空题 1、SQL具有数据定义、查询、操纵和控制等四种主要功能。 2、一个关系模型由若干个关系模式所组成。 3、若实体A和B是1对多的联系,实体B和C是多对1的联系,则实体A和C是多对_多_联系。 4、按照两关系中对应属性值相等的条件所进行的联接称为等值联接。 5、关系规范化就是使一个关系模式描述一个实体,或实体间的一种联系。 6、假定一个E-R图包含有A实体和B实体,并且从A到B存在着1:n 的联系,则转换成关系模型后,包含有 2 个关系模式。 7、SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,充分体现了关系数据语言的特点和优点。 8、一个关系就是一张二维表,每个关系有一个关系名,每个关系在计算机中作为一个文件存储起来。 9、人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖和多值依赖。 10、任一种数据模型都有_型__和_值区别;层次模型是一棵_树__结构,关系模型是一个__二维表格 _结构。 11、在对象数据模型中,每个对象不仅要包含描述实体的__状态 ___特征,而且要包含描述实体的__行为_ _特征。 12、设一个关系为R(A,B,C,D,E),它的最小函数依赖集为FD={A→B,A→C,(C,D)→E},该关系只满足第一范式,若要规范化为第三范式,则将得到 3 个关系。 13、数据库管理系统提供了数据库的定义、操纵、查寻、控制和通信功能。 14、E-R模型是描述概念世界、建立概念模型的实用工具。 15、数据库系统的主要特点是实现数据共享、减少数据冗余、采用特定的数据模型、具有较高的数据独立性、具有统一的数据控制功能。 16、选择运算的结果关系同原关系具有相同的结构框架,投影运算的结果关系同原关系通常具有不同的结构框架。 17、在SQL所支持的数据库系统的三级模式结构中,视图属于外模式,基本表属于全局概念模式。 18、设X—Y是关系模式R的一个函数依赖,并且Y是X的子集,则称X→Y是平凡函数依赖。 19、数据库系统的核心是数据库管理系统或DBMS。 20、实体之间的联系按照联系方式的不同可分为1∶1、1∶n和m∶n。 21、假定利用CREATE TABLE命令建立如下一个基本表:BOOK(总编号C(6),分类号C(8),书名C(16),单价N(10,2)),则单价字段的类型为数值型,字段宽度为 10 ,其中包含有 2 位小数。 22、在关系模型中,实体以及实体间的联系都是用关系来表示的。 23、关系模式由3NF转化为BCNF是消除了主属性对码的部分函数依赖和传递函数依赖。 24、专门的关系运算包括选择、投影、连接和除四种。 25、在数据库系统中,DBMS是指数据库管理系统。 26、传统的三大数据模型分别是层次模型、网状模型和关系模型。 27、在关系运算的四种专门关系运算符中,它们分别是选择、摄影、连接和除运算。 28、SQL的含义是结构化查询语句。29、SQL的四大功能分别是查询、定义、操纵和控制。 30、在SQL的修改表结构命令中增加字段的关键字是ADD。 修改字段的属性的关键字是ALTER COLUMN。 31、在SQL常用的运算符号中,OR表示或,NOT表示否定,LIKE表示字符匹配。 32、在SQL的SELECT的格式中用于表示条件的关键字是WHERE。 如:SELECT*FROM A WHERE年龄>20的含义是:从A表中查询出所有年龄大于20的记录。 33、在SQL中创建视图的基本命令是:CREATE VIEW〈试图名〉AS〈SELECT查询语句〉。 34、在操作的表中,可以定义的触发器大概有三类:它们分别是更新触发器、插入触发器和删除触发器 二、选择题 1、关系演算的基础是( C )。 A、形式逻辑中的逻辑演算 B、形式逻辑中的关系演算 C、数理逻辑中的谓词演算 D、数理逻辑中的形式演算 2、若要求分解保持函数依赖,那么模式分解一定能够达到( B )。 A、2NF B、 3NF C、 BCNF D、 1NF 3、用于配置客户端网络连接的工具是(B )。 A、企业管理器 B、客户端网络实用工具 C、查询分析器 D、联机帮助文档 4、1级封锁协议加上T要读取的数据R加S锁,这是( C )。 A、3级封锁协议 B、4级封锁协议 C、2级封锁协议 D、1级封锁协议 5、在表设计视图中,如果要限定数据的输入格式,应修改字段的( D )属性。 A、字段大小 B、有效性规则 C、输入格式 D、格式 6、下列( D )是主键的标志。 A、 B、 C、 D、 7、数据库类型是按照( B )来划分的。 A、文件形式 B、数据模型 C、记录形式 D、数据存取方法 8、哪种情况应尽量创建索引(A )。 A、在Where子句中出现频率较高的列 B、具有很多NULL值的列 C、记录较少的基本表 D、需要更新频繁的基本表 9、建立数据字典的时机是( A )。 A、需求分析阶段 B、数据库物理设计阶段 C、数据库实施 D、概念结构设计阶段 10、如果要在SQL Server中存储图形图像、Word文档文件,不可采用的数据类型是( C )。 A、binary B、varbinary C、text D、image 11.数据库系统的核心是(C) A数据库B数据库系统C数据库管理系统D数据 12.实体之间的联系的基本类型有(D) A一对一B一对多C多对多D上述三种都是

(完整word版)数据库系统原理及应用教程第四版课后答案

第一章 1、(1)数据:数据用于载荷信息的物理符号。 (2)数据的特征;○1数据有“型”和“值”之分;○2数据受数据类型和取值范围的约束;○3数据有定性表示和定量之分;○4数据应具有载体和多种表现形式。 3、(1)数据管理的功能:○1组织和保存数据功能,即将收集到的数据合理地分类组织,将其存储在物理载体上,使数据能够长期的被保存;○2数据维护功能,即根据需要随时进行插入新数据,修改原数据和删除失效数据的操作;○3数据查询和数据统计功能,即快速的得到需要的正确数据,满足各种使用要求;○4数据的安全和完整性控制功能,即能保护数据的安全和完整性。 (2)数据管理的目标:收集完整的信息,将信息用数据表示,按数据结构合理科学的组织并保存数据;为各种使用快速地提供需要的数据,并保护数据的安全和完整性。 4、(1)数据库:是数据管理的新方法和技术,他是一个按数据结构来存储和管理数据的计算机软件系统。 (2)数据库中的数据具有的特点:○1数据库中的数据具有整体性,即数据库中的数据要保持自身完整的数据结构;○2数据库中的数据具有数据共享性,不同的用户可以按各自的用法使用数据库中的数据,多个用户可以同时共享数据库中的数据资源。 5、(1)数据库管理系统:它是专门用于管理数据库的计算机管理软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行操作的功能。 (2)数据库管理系统主要功能:是数据存储、数据操作和数据控制功能。其数据存储和数据操作是:数据库的定义功能,指未说明库中的数据情况而进行的建立数据库结构的操作;数据库建立功能,指大批数据录入到数据库的操作,它使得库中含有需要保护的数据记录;数据库维护功能,指对数据的插入、删除和修改操纵,其操作做能满足库中信息变化或更新的需求;数据库查询和统计功能,指通过对数据库的访问,为实际应用提供需要的数据。数据库管理系统的数据控制功能为:数据安全性控制功能,即为了保证数据库的数据安全可靠,防止不合法的使用造成数据库泄露和破坏,也就是避免数据被人偷看、篡改或破坏;数据库完整性控制功能,指为了保证数据库中的数据的正确、有效和相容,防止不合语意的错误数据被输入或输出。 14、(1)数据库系统的软件由几部分组成?数据库系统的软件中包括操作系统(OS)、数据库管理系统(DBMS)、主语言系统、应用程序软件和用户数据库。 (2)作用:①操作系统或汉字操作系统:操作系统是所有计算机软件的基础,在数据库系统中它起着支持DBMS及主语言系统工作的作用。如果管理的信息中有汉字,则需要中文操作系统的支持,以提供汉字的输入、输出方法和汉字信息的处理方法。②数据库管理系统和主语言系统:数据库管理系统是为定义、建立、维护、使用及控制数据库而提供的有关数据管理的系统软件。主语言系统是为应用程序提供的诸如程序控制、数据输入输出、功能函数、图形处理、计算方法等数据处理功能的系统软件。③应用开发工具软件:应用开发工具是DBMS系统为应用开发人员和最终用户提供的高效率、多功能的应用生成器、第四代计算机语言等各种软件工具.如报表生成器、表单生成器、查询和视图设计器等,它们为数据库系统的开发和使用提供了良好的环境和帮助。④应用系统及数据库:数据库应用系统包括为特定的应用环境建立的数据库、开发的各类应用程序及编写的文档资料,它们是一个有机整体。通过运行数据库应用系统,可以实现对数据库中数据的维护、查询、管理和处理操作。(3)关系:

数据库系统管理与维护(Oracle)第二次作业

题目1、以下查询语句: SELECT dname, ename FROM dept d, emp e WHERE d.deptno=e.deptno ORDER BY dname, ename 属于哪种连接类型?(A) 选择一项: a. 等值连接 b. 自身连接 c. 外连接 d. 非等值连接 题目2、若将下列4个选项合成一个完整的查询语句,则哪个子句是错误的?(B )选择一项: a. WHERE emp.deptno=dept.deptno b. FROM emp e, dept d c. ORDER BY 1, 2 d. SELECT dname, ename 题目3、下列关于主键和外键之间的关系描述,正确的是( C )。 选择一项: a. 一个表中最多只能有一个主键约束,一个外键约束 b. 在定义主键外键约束时,应该先定义外键约束,再定义主键约束 c. 一个表中最多只能有一个主键约束,多个外键约束 d. 在定义主键外键约束时,应该先定义主键约束,再定义外键约束 题目4、ALTER TABLE语句不能用于以下哪种情况?(D ) 选择一项: a. 修改表名 b. 改变表中区的初始大小 c. 修改列名 d. 将表从一个表空间移到另一个表空间 题目5、如果希望employee表原有的列name非空,应该使用以下哪条语句?(D )选择一项: a. ALTER TABLE employee ADD name NOT NULL; b. ALTER TABLE employee ALTER name NOT NULL; c. ALTER TABLE employee DROP name NOT NULL; d. ALTER TABLE employee MODIFY name NOT NULL; 题目6、建立表结构的SQL语句是(B )。 选择一项: a. CREATE VIEW b. CREATE TABLE c. CREATE INDEX d. CREATE CURSOR 题目7、以下哪种约束不会自动创建索引?(B) 选择一项: a. 主键约束 b. 外键约束 c. 以上都不对

《MySQL数据库系统及应用》综合练习

一、单项选择题(只有一个正确答案) 【1】执行语句“SELECT '2008-01-20'+ INTERVAL 2 DAY; ”结果为 A: 2008-01-22 B: 2010-01-20 C: 2008-02-11 D: 2008-03-20 答案: A 【2】下列哪个是不正确的MySQL的变量命名方式 A: @_name B: @n$ame C: @name D: @name! 答案: D 【3】字符串‘hel’lo’输出结果为 A: hel'lo B: 'hello' C: hel\'lo D: 'hel lo' 答案: A 【4】关系数据库模型是以下哪种方式组织数据结构 A: 树状 B: 文本 C: 二维表 D: 网状 答案: C 【5】使用下列哪个语句可以删除表中所有数据,但保留表结构 A: truncate table B: rename table C: delete D: drop talbe 答案: A 【6】E-R图设计属于()。 A: 概念结构设计 B: 物理结构设计 C: 逻辑结构设计 D: 需求分析设计 答案: B 【7】执行语句“GREATEST(10,9,128,1)”结果为()。 A: 9

B: 10 C: 128 D: 1 答案: C 【8】在一个关系中,若有这样一个属性存在,它的值能唯一地标识关系中的每一个元组,则称这个属性为 A: 数据项 B: 候选码 C: 主键 D: 主键值 答案: C 【9】数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作。这种功能称为()。 A: 数据控制功能 B: 数据操纵功能 C: 数据管理功能 D: 数据定义功能 答案: B 【10】1999年10月1日在mysql中表示方法错误的是: A: "1999-10-01" B: "1999%10%01" C: "1999\10\01" D: "1999/10/01" 答案: D 【11】两个表中的行按照给定的条件进行拼接而形成新表的运算为 A: 连接 B: 投影 C: 集合 D: 选择 答案: A 【12】向表中插入一个行新的纪录的命令为 A: replace into B: insert into C: replace from D: insert from 答案: B 【13】\n在MySQL中表示 A: " B: 退格符 C: 回车符

2019年大学《数据库原理及应用教程》试题及答案

《数据库原理及应用教程》试题及答案 一、选择题 1、下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是 (B) A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构

C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性

相关文档
最新文档