以下是小编为大家整理的创建数据库和表的实验步骤(共含6篇),欢迎阅读与收藏。同时,但愿您也能像本文投稿人“杜红呀”一样,积极向本站投稿分享好文章。
一.实验名称:创建数据库和表
二.目的和要求:
(1)了解SQL Server数据库的逻辑结构和物理结构。
(2)了解表的结构特点。
(3)了解SQL Server 的基本数据类型。
(4)了解空值概念。
(5)学会使用T-SQL语句创建数据库和表.。
三.实验准备
首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
其次创建数据库必须要确定数据库名、所有者(即创建数据库的用户)、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。
然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。
此外还要了解使用T-SQL语句创建数据库、表的方法。
四.实验内容:
1、实验题目
创建用于学校管理的学生-课程数据库,数据库名为“DB_自己的学号”,包含学生的信息、课程的信息以及学生选修的信息,即数据库中包含下列3个表:
(l)Student:学生信息表。
(2)Course:课程信息表。
(3)Sc:选修情况表。
2.实验步骤
(1)使用 T-SQL语句创建数据库
按照上述要求创建学生-课程数据库。
启动查询分析器→在“查询”窗口中输人创建数据库的T-SQL语句。
单击快捷工具栏的执行图标执行上述语句,并查看执行结果(也可在企业管理器中查看)。
打开查询分析器,在工作区域输入 create database DB_0921121010创建一个以自己学号为名的库,结果如图(1)所示:
[创建数据库和表的实验步骤]
--创建临时表空间
create temporary tablespace publish_temp01
tempfile 'e:/oradate/publish_temp01.dbf'
size 32m
autoextend on
next 32m maxsize 1024m
extent management local;
--创建表空间
create tablespace publish_data01
logging
datafile 'e:/oradate/publish_data01.dbf'
size 32m
autoextend on
next 32m maxsize 1024m
extent management local;
--创建用户指定表空间
create user brand identified by brand
default tablespace publish_data01
temporary tablespace publish_temp01;
--给用户授权
grant connect,resource to brand;
mysql数据库动态创建表
大家一般可能很少有这种需求吧,我以前也没有遇到过,但这次做项目需要这么做,
就是表的字段名和字段数都不是固定的,要根据需要来创建。
这是我的创建形成过程,大家照着演示一下就知道了我的动态表的来龙去脉了。
第一步.创建相关表
/*---建立所有指标信息的临时表---*/
drop table if exists INTERBANKBONDQUOTE_SClass;
create table INTERBANKBONDQUOTE_SClass (
Name varchar(50) not null,
id int Primary key,
Parent int,
Value varchar(50)
);
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('最新成交',0,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('买入信息',1,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('买卖价差',2,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('卖出信息',3,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('中债最新估值',4,-1,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('含权债行权指标',5,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('基础指标',6,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('双边报价笔数',7,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('报价方',8,1,'col4');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('报价方会员号',9,1,'col5');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('报价时间',10,1,'col6');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('匿名',11,1,'col7');
第二步:/*---建立显示数据表格标题的表---*/
drop table if exists INTERBANKBONDQUOTE_T;
create table INTERBANKBONDQUOTE_T as select concat('\'',a.Name,',',b.Name,'\' __TITLE__',b.Value);
第三步: 这里有两种实现方法。因为在mysql中,这时的变量长度受到了限制 ,本来应该longtext足够长的,可实际只返回了限制长度的。如果字段太多了,就要用第二种方法。
存储过程A: 这里变量返回值长度受限,字段不多时可以。
DELIMITER $$
DROP PROCEDURE IF EXISTS `dzhappdb_bond`.`INTERBANKBONDQUOTE_TSP`$$
CREATE PROCEDURE INTERBANKBONDQUOTE_TSP
BEGIN
DECLARE objs1 TEXT;
DECLARE objs TEXT;
SELECT GROUP_CONCAT(col1) INTO objs1 FROM T;
SET objs =CONCAT('CREATE TABLE Title AS SELECT ',objs1);
SET @sql_txt = objs;
PREPARE stmt FROM @sql_txt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
call INTERBANKBONDQUOTE_TSP;
存储过程B:这样不管字段多少,只要数据库支持就可以创建成功,
但不如第一个方法简洁。
DROP PROCEDURE IF EXISTS INTERBANKBONDQUOTE_TSP_Title;
drop table if EXISTS Title;
CREATE PROCEDURE INTERBANKBONDQUOTE_TSP_Title()
proc:begin
DECLARE add_sql LONGTEXT;
DECLARE insert_sql LONGTEXT;
DECLARE nhh_sql varchar(200);
DECLARE column_name varchar(100);
DECLARE column_value varchar(100);
DECLARE mycount int;
DECLARE len int;
DECLARE strlen int;
DECLARE cursor_Title CURSOR for select col1 from INTERBANKBONDQUOTE_T;
create table Title(mid int);
insert into Title values (100);
select count(col1) into @mycount from INTERBANKBONDQUOTE_T;
OPEN cursor_Title;
REPEAT
FETCH cursor_Title INTO nhh_sql;
begin
set @mycount=@mycount-1;
set @strlen=CHARACTER_LENGTH(nhh_sql);
set @len=INSTR(nhh_sql,' ');
set @column_name=RIGHT(nhh_sql,@strlen-@len);
set @column_value=LEFT(nhh_sql,@len);
set @add_sql=CONCAT('ALTER table Title add COLUMN ',@column_name,' varchar(100)');
set @insert_sql=CONCAT('update Title set ',@column_name,'=',@column_value,' where mid=100');
PREPARE stmt1 FROM @add_sql;
EXECUTE stmt1;
PREPARE stmt2 FROM @insert_sql;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt1;
DEALLOCATE PREPARE stmt2;
end;
until @mycount<=0
END REPEAT;
CLOSE cursor_Title;
ALTER table Title drop column mid;
end proc;
call INTERBANKBONDQUOTE_TSP_Title;
复制代码代码如下:
'btnCreateOthers
'
Me.btnCreateOthers.Location=NewSystem.Drawing.Point(17,43)
Me.btnCreateOthers.Name=“btnCreateOthers”
Me.btnCreateOthers.Size=NewSystem.Drawing.Size(104,23)
Me.btnCreateOthers.TabIndex=5
Me.btnCreateOthers.Text=“创建规则和索引”
feedom.net
'
'btnDropTable
'
Me.btnDropTable.Location=NewSystem.Drawing.Point(138,43)
Me.btnDropTable.Name=“btnDropTable”
Me.btnDropTable.TabIndex=6
Me.btnDropTable.Text=“删除表”
'
'btnViewData
'
Me.btnViewData.Location=NewSystem.Drawing.Point(351,43)
Me.btnViewData.Name=“btnViewData”
Me.btnViewData.TabIndex=7
Me.btnViewData.Text=“查看数据”
'
'btnViewSP
'
Me.btnViewSP.Location=NewSystem.Drawing.Point(230,43)
feedom.net
Me.btnViewSP.Name=“btnViewSP”
Me.btnViewSP.Size=NewSystem.Drawing.Size(104,23)
Me.btnViewSP.TabIndex=8
Me.btnViewSP.Text=“查看存储过程”
'
'btnViewView
'
Me.btnViewView.Location=NewSystem.Drawing.Point(443,43)
Me.btnViewView.Name=“btnViewView”
Me.btnViewView.TabIndex=9
Me.btnViewView.Text=“查看视图”
'
'DataGrid1
'
Me.DataGrid1.DataMember=“”
Me.DataGrid1.HeaderForeColor=System.Drawing.SystemColors.ControlText
Me.DataGrid1.Location=NewSystem.Drawing.Point(20,76)54com.cn
Me.DataGrid1.Name=“DataGrid1”
Me.DataGrid1.Size=NewSystem.Drawing.Size(500,183)
Me.DataGrid1.TabIndex=10
'
'Form1
'
Me.AutoScaleBaseSize=NewSystem.Drawing.Size(5,13)
Me.ClientSize=NewSystem.Drawing.Size(538,281)
Me.Controls.AddRange(NewSystem.Windows.Forms.Control(){Me.DataGrid1,Me.btnViewView,_
Me.btnViewSP,Me.btnViewData,Me.btnDropTable,Me.btnCreateOthers,Me.btnAlterTable,_
复制代码代码如下:
Me.CreateViewBtn,Me.CreateSPBtn,Me.CreateTableBtn,Me.CreateDBBtn})
Me.Name=“Form1”
Me.Text=“动态创建SQLServer数据库、表、存储过程等架构信息”
CType(Me.DataGrid1,System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
EndSub
#EndRegion
'创建数据库
PrivateSubCreateDBBtn_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesCreateDBBtn.Click
conn=NewSqlConnection(ConnectionString)
'打开连接
Ifconn.StateConnectionState.OpenThen
conn.Open()
EndIf
'MyDataBase为数据库名称
DimsqlAsString=“CREATEDATABASEMyDataBaseONPRIMARY(Name=MyDataBase_data,filename=”+_
54com.cn
“'D:\MyDataBase.mdf',size=3,”+“maxsize=5,filegrowth=10%)logon”+“(name=MyDataBase_log,”+_
“filename='D:\MyDataBase.ldf',size=3,”+“maxsize=20,filegrowth=1)”
cmd=NewSqlCommand(sql,conn)
Try
cmd.ExecuteNonQuery()
CatchaeAsSqlException
MessageBox.Show(ae.Message.ToString())
EndTry
EndSub
'创建表
PrivateSubCreateTableBtn_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesCreateTableBtn.Click
conn=NewSqlConnection(ConnectionString)
'打开连接
Ifconn.State=ConnectionState.OpenThen
conn.Close()
EndIf
ConnectionString=“DataSource=.;InitialCatalog=MyDataBase;UserId=sa;Password=;”
conn.ConnectionString=ConnectionString
conn.Open()
sql=“CREATETABLEmyTable”+“(myIdINTEGERCONSTRAINTPKeyMyIdPRIMARYKEY,”+_
“myNameCHAR(50)NOTNull,myAddressCHAR(255),myValuesFLOAT)”
cmd=NewSqlCommand(sql,conn)
Try
cmd.ExecuteNonQuery()
'添加纪录
54com.cn
sql=“INSERTINTOmyTable(myId,myName,myAddress,myValues)”+_
“VALUES(1001,_'【孟宪会之精彩世界】之一','xml.sz.luohuedu.net/',100)”
cmd=NewSqlCommand(sql,conn)
cmd.ExecuteNonQuery()
sql=“INSERTINTOmyTable(myId,myName,myAddress,myValues)”+_
“VALUES(1002,'【孟宪会之精彩世界】之二','www.erp800.com/net_lover/',99)”
以下是引用片段:
复制代码代码如下:
ImportsSystem.Data
ImportsSystem.Data.SqlClient
PublicClassForm1
InheritsSystem.Windows.Forms.Form
PrivateConnectionStringAsString=“DataSource=.;InitialCatalog=;UserId=sa;Password=;”
PrivatereaderAsSqlDataReader=Nothing
PrivateconnAsSqlConnection=Nothing
PrivatecmdAsSqlCommand=Nothing
PrivateAlterTableBtnAsSystem.Windows.Forms.Button
PrivatesqlAsString=Nothing
PrivateCreateOthersBtnAsSystem.Windows.Forms.Button
#Region“Windows窗体设计器生成的代码”
'窗体重写处置以清理组件列表,
ProtectedOverloadsOverridesSubDispose(ByValdisposingAsBoolean)
IfdisposingThen
IfNot(componentsIsNothing)Then
components.Dispose
EndIf
EndIf
MyBase.Dispose(disposing)
EndSub
PublicSubNew()
MyBase.New()
InitializeComponent()
EndSub
PrivatecomponentsAsSystem.ComponentModel.IContainer
FriendWithEventsDataGrid1AsSystem.Windows.Forms.DataGrid
FriendWithEventsCreateDBBtnAsSystem.Windows.Forms.Button
FriendWithEventsCreateTableBtnAsSystem.Windows.Forms.Button
FriendWithEventsCreateSPBtnAsSystem.Windows.Forms.Button
FriendWithEventsCreateViewBtnAsSystem.Windows.Forms.Button
FriendWithEventsbtnAlterTableAsSystem.Windows.Forms.Button
FriendWithEventsbtnCreateOthersAsSystem.Windows.Forms.Button
FriendWithEventsbtnDropTableAsSystem.Windows.Forms.Button
FriendWithEventsbtnViewDataAsSystem.Windows.Forms.Button
FriendWithEventsbtnViewSPAsSystem.Windows.Forms.Button
FriendWithEventsbtnViewViewAsSystem.Windows.Forms.Button
PrivateSubInitializeComponent()
复制代码代码如下:
Me.CreateDBBtn=NewSystem.Windows.Forms.Button()
Me.CreateTableBtn=NewSystem.Windows.Forms.Button()
Me.CreateSPBtn=NewSystem.Windows.Forms.Button()
Me.CreateViewBtn=NewSystem.Windows.Forms.Button()
Me.btnAlterTable=NewSystem.Windows.Forms.Button()
Me.btnCreateOthers=NewSystem.Windows.Forms.Button()
Me.btnDropTable=NewSystem.Windows.Forms.Button()
Me.btnViewData=NewSystem.Windows.Forms.Button()
Me.btnViewSP=NewSystem.Windows.Forms.Button()
Me.btnViewView=NewSystem.Windows.Forms.Button()
Me.DataGrid1=NewSystem.Windows.Forms.DataGrid()
CType(Me.DataGrid1,System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'CreateDBBtn
'
Me.CreateDBBtn.Location=NewSystem.Drawing.Point(19,9)
Me.CreateDBBtn.Name=“CreateDBBtn”
Me.CreateDBBtn.Size=NewSystem.Drawing.Size(104,23)
Me.CreateDBBtn.TabIndex=0
Me.CreateDBBtn.Text=“创建数据库”
'
'CreateTableBtn
'
Me.CreateTableBtn.Location=NewSystem.Drawing.Point(139,9)
Me.CreateTableBtn.Name=“CreateTableBtn”
Me.CreateTableBtn.TabIndex=1
Me.CreateTableBtn.Text=“创建表”
'
'CreateSPBtn
'
Me.CreateSPBtn.Location=NewSystem.Drawing.Point(230,9)
Me.CreateSPBtn.Name=“CreateSPBtn”
Me.CreateSPBtn.Size=NewSystem.Drawing.Size(104,23)
Me.CreateSPBtn.TabIndex=2
Me.CreateSPBtn.Text=“创建存储过程”
'
'CreateViewBtn
'
Me.CreateViewBtn.Location=NewSystem.Drawing.Point(350,9)
Me.CreateViewBtn.Name=“CreateViewBtn”
Me.CreateViewBtn.TabIndex=3中国网管联盟www.bitscn.com
Me.CreateViewBtn.Text=“创建视图”
'
'btnAlterTable
'
Me.btnAlterTable.Location=NewSystem.Drawing.Point(441,9)
Me.btnAlterTable.Name=“btnAlterTable”
Me.btnAlterTable.TabIndex=4
Me.btnAlterTable.Text=“修改表”
建立:
[sql]
create database zxl
create table 学生表
(
学号 char(12) primary key,
姓名 char(6) not null,
性别 char(2) check(性别 IN ('男','女')),
班级 char(15)
)
create table 成绩表
(
学号 char(12)references 学生表(学号),
课程号 char(2)references 课程表(课程号) ,
成绩 int default(30),
primary key (学号,课程号)
)
create table 课程表
(
课程号 char(2) primary key,
课程名 char(20),
学分 int check(学分>=1 and 学分<=5 )
)
操作:
[sql]
insert into 学生表 values('201190609112','张xl','男','文专计1111')
insert into 学生表 values('201190609113','张**','女','文专计1111')
insert into 成绩表 values('201190609112','01',100)
insert into 成绩表 values('201190609112','02',99)
insert into 成绩表 values('201190609112','03',88)
insert into 课程表 values('01','数据库系统',3)
insert into 课程表 values('02','vb.net',4)
insert into 课程表 values('03','java',4)
select *from 成绩表
select 姓名,课程名,成绩
from 学生表,课程表,成绩表
where (学生表.学号=成绩表.学号 and 课程表.课程号=成绩表.课程号)
order by 成绩 desc
select avg(成绩)平均分,max(成绩) 最高分,min(成绩) 最低分
from 成绩表
where 学号='201190609112'
★ 实验心得和总结
★ 数据库面试题