最新C操作SQLServer数据库汇总
- 格式:ppt
- 大小:326.00 KB
- 文档页数:21
SQLServer数据库操作总结(sql语法的使用)-电脑资料前言数据库学完了,但是脑子里还是没有一个系统的数据库操作概念,。
借着考试复习的这个机会,总结一下数据库的常用操作。
内容参考上课的课件进行了整理,整篇文章会很长。
1.数据库创建管理1.1 创建数据库CREATE DATABASE DBON PRIMARY(NAME = DB_data,FILENAME = 'F:\DB_data1.mdf', SIZE = 10MB,MAXSIZE = UNLIMTED),(NAME = DB_data2,FILENAME = 'F:\DB_data2.ndf', SIZE = 11MB,MAXSIZE = 20MB, FILEGROWTH = 2MB)LOG ON(NAME = DB_log1,FILENAME = 'F:\DB_log1.ldf', SIZE = 1MB,MAXSIZE = 30MB,FILEGROWTH = 10%)1.2 修改数据库1.2.1 增加数据文件语法:alter database 数据库名称add file 数据文件[to file group 文件组名称]add log file 日志文件操作:ALTER DATABASE DB ADD FILE ( NAME = , FILENAME = , SIZE = , FILEGROWTH = )1.2.2 增加日志文件ALTER DATABASE DBADD LOG FILE ( NAME = , FILENAME = , SIZE = , FILEGROWTH = ,MAXSIZE = )1.2.3 修改数据文件语法:ALTER DATABASE 数据库名MODIFY FILE 文件属性操作:将数据库db1中的数据文件data2的初始大小改为10MB,最大容量为20MB,增长幅度为10%alter database db1 modify file(name = data2,size = 10,maxsize = 20,filegrowth = 10%)ALTER DATABASE DBMODIFY FILE( NAME = , SIZE = ,) 1.2.4 删除数据文件和日志文件语法:alter database 数据库名称remove file 数据文件或日志文件的逻辑文件名操作:删除数据库db1中的数据文件data4和日志文件log2alter database db1 remove data4alter database db1 remove log21.2.5 增加文件组语法:alter database 数据库名add filegroup 文件组名操作:在数据库db1中增加一个g2文件组alter database db1 add filegroup g21.2.6 重命名文件组语法:alter database 数据库名modify filegroup 文件组名name=新文件组名操作:将数据库db1中的文件组g2更名为g3alter database db1 modify filegroup g2 name=g31.2.7 删除文件组语法:alter database 数据库名称remove filegroup 文件组名操作:删除数据库db1的文件组g3alter database db1remove filegroup g31.2.8 修改数据库名称语法:alter database 数据库名modify name = 新数据库名操作:将数据库db1的名字修改为glalter database db1modify name = gl1.3 删除数据库语法: Drop database 数据库名 [,……n]操作:删除数据库DB1,DB2,DB3DROP DATABASE DB1,DB2,DB32.架构与基本表2.1 创建架构CREATE SCHEMA T2 AUTHORIZATION User1 CREATE TABLE Test(C1 INT PRIMATY KEY, C2 CHAR(4) ) GRANT SELECT TO User2 DENY DELETE TO User3;2.2 修改架构ALTER SCHEMA T1 TRANSFER T2.Test2.3 删除架构DROP SCHEMA T22.4 创建基本表2.4.1 表约束类型:主键(PRIMARY KEY)约束惟一(UNIQUE)约束外键(FOREIGN KEY)约束检查(CHECK)约束说明:非空和默认值也可看成是约束。
C#--SQLserver数据库基本操作(增、删、改、查)写在前⾯:常⽤数据库:SQLserver:Oracle:MySQL:Access:在⽇常的⼯作中,通常⼀个项⽬会⼤量⽤的数据库的各种基本操作。
SQLserver数据库是最为常见的⼀种数据库,本⽂则主要是记录了C#对SQL的连接、增、删、改、查的基本操作,如有什么问题还请各位⼤佬指教。
后续也将对其他⼏个常⽤的数据库进⾏相应的整理,链接已经附在⽂章开始。
话不多说,开始码代码。
引⽤:using System.Data; //DataSet引⽤集using System.Data.SqlClient; //sql引⽤集先声明⼀个SqlConnection便于后续使⽤。
private SqlConnection sql_con;//声明⼀个SqlConnectionsql打开:///<summary>/// SQLserver open///</summary>///<param name="link">link statement</param>///<returns>Success:success; Fail:reason</returns>public string Sqlserver_Open(string link){ try { sql_con = new SqlConnection(link); sql_con.Open(); return"success"; } catch (Exception ex) { return ex.Message; }}sql关闭:///<summary>/// SQLserver close///</summary>///<returns>Success:success Fail:reason</returns>public string Sqlserver_Close(){ try { if (sql_con == null) { return"No database connection"; } if (sql_con.State == ConnectionState.Open || sql_con.State == ConnectionState.Connecting) { sql_con.Close(); sql_con.Dispose(); } else { if (sql_con.State == ConnectionState.Closed) { return"success"; } } return"success"; } catch (Exception ex) { return ex.Message; }}sql的增删改:///<summary>/// SQLserver insert,delete,update///</summary>///<param name="sql">insert,delete,update statement</param>///<returns>Success:success + Number of affected rows; Fail:reason</returns> public string Sqlserver_Insdelupd(string sql){ try { int num = 0; if (sql_con == null) { return"Please open the database connection first"; } if (sql_con.State == ConnectionState.Open) { SqlCommand sqlCommand = new SqlCommand(sql, sql_con); num = sqlCommand.ExecuteNonQuery(); } else { if (sql_con.State == ConnectionState.Closed) { return"Database connection closed"; } if (sql_con.State == ConnectionState.Broken) { return"Database connection is destroyed"; } if (sql_con.State == ConnectionState.Connecting) { return"The database is in connection"; } } return"success" + num; } catch (Exception ex) { return ex.Message.ToString(); }}sql的查:///<summary>/// SQLserver select///</summary>///<param name="sql">select statement</param>///<param name="record">Success:success; Fail:reason</param>///<returns>select result</returns>public DataSet Sqlserver_Select(string sql, out string record){ try { DataSet dataSet = new DataSet(); if (sql_con == null) { record = "Please open the database connection first"; return dataSet; }if (sql_con.State == ConnectionState.Open) { SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sql, sql_con); sqlDataAdapter.Fill(dataSet, "sample"); sqlDataAdapter.Dispose(); record = "success"; return dataSet; return dataSet; } if (sql_con.State == ConnectionState.Broken) { record = "Database connection is destroyed"; return dataSet; } if (sql_con.State == ConnectionState.Connecting) { record = "The database is in connection"; return dataSet; } record = "ERROR"; return dataSet; } catch (Exception ex) { DataSet dataSet = new DataSet(); record = ex.Message.ToString(); return dataSet; }}⼩编发现以上这种封装⽅式还是很⿇烦,每次对SQL进⾏增删改查的时候还得先打开数据库,最后还要关闭,实际运⽤起来⽐较⿇烦。
SQLServer开窗函数实现⾏级数据汇总、列级数据汇总SQL Server 开窗函数OVER,实现⾏级数据汇总、列级数据汇总,实例如下:1、创建表(临时表)创建出测试使⽤表,并初始化数据:CREATE TABLE #TMP_ORDER_MONTH (ID INT,YEAR INT, --- ⽉份MONTH INT, --- ⽉份Amount FLOAT--- ⾦额);--初始数据INSERT INTO #TMP_ORDER_MONTHSELECT1, 2019, 9, 100UNION ALLSELECT2, 2019, 10, 200UNION ALLSELECT3, 2019, 11, 300UNION ALLSELECT4, 2019, 12, 400UNION ALLSELECT5, 2020, 1, 100UNION ALLSELECT6, 2020, 2, 200UNION ALLSELECT7, 2020, 3, 300UNION ALLSELECT8, 2020, 4, 400UNION ALLSELECT9, 2020, 5, 500;SELECT*FROM #TMP_ORDER_MONTH;2、列级汇总数据进⾏列级数据汇总:增加累计销售额,按照从上⾄下的顺序,逐⽉累加;增总销售额列计算销售总额。
SELECT ID,YEAR,MONTH,Amount,SUM(Amount) OVER (PARTITION BY YEAR, MONTH) AS'⽉销售额',SUM(Amount) OVER (ORDER BY YEAR, MONTH ASC) AS'累计销售额',SUM(Amount) OVER () AS'总销售额'FROM #TMP_ORDER_MONTH;结果如下:3、⾏级汇总数据进⾏⾏级数据汇总:增加多显⽰⾏,汇总年度业绩和全部业绩。
sqlserver常用命令SQLServer是一种关系型数据库管理系统,被广泛应用于各种企业级应用程序中。
它提供了一系列的命令,用于管理数据库、表、视图、存储过程等对象。
本文将介绍SQL Server中常用的命令及其使用方法,帮助读者快速掌握SQL Server的基本操作。
一、数据库管理命令1. 创建数据库CREATE DATABASE database_name;该命令用于创建一个新的数据库,其中database_name为要创建的数据库名称。
使用该命令时,需要确保具有足够的权限。
2. 删除数据库DROP DATABASE database_name;该命令用于删除指定的数据库,其中database_name为要删除的数据库名称。
使用该命令时,需要确保具有足够的权限,并且要谨慎操作,以免误删数据。
3. 修改数据库ALTER DATABASE database_name SET options;该命令用于修改指定的数据库,其中options为要修改的选项。
常用的选项包括修改数据库的名称、修改数据库的文件路径、修改数据库的恢复模式等。
二、表管理命令1. 创建表CREATE TABLE table_name (column_name1 data_type1, column_name2 data_type2, …);该命令用于创建一个新的表,其中table_name为要创建的表名称,column_name为要创建的列名称,data_type为要创建的列数据类型。
使用该命令时,需要确保具有足够的权限。
2. 删除表DROP TABLE table_name;该命令用于删除指定的表,其中table_name为要删除的表名称。
使用该命令时,需要确保具有足够的权限,并且要谨慎操作,以免误删数据。
3. 修改表ALTER TABLE table_name ADD column_name data_type;该命令用于向指定的表中添加一列,其中table_name为要修改的表名称,column_name为要添加的列名称,data_type为要添加的列数据类型。
1.一、基础2.1、说明:创建数据库3.CREATE DATABASE database-name4.2、说明:删除数据库5.drop database dbname6.7.3、说明:备份sql server8.--- 创建备份数据的deviceE master10.EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'11.--- 开始备份12.BACKUP DATABASE test TO testBack13.14.4、说明:创建新表15.create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)16.根据已有的表创建新表:17.A:create table tab_new like tab_old (使用旧表创建新表)18.B:create table tab_new as select col1,col2… from tab_old definition only19.5、说明:删除新表20.drop table tabname21.6、说明:增加一个列22.Alter table tabname add column col type23.注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
24.7、说明:添加主键:Alter table tabname add primary key(col)25.说明:删除主键:Alter table tabname drop primary key(col)26.8、说明:创建索引:create [unique] index idxname on tabn ame(col….)27.删除索引:drop index idxname28.注:索引是不可更改的,想更改必须删除重新建。
SQLServer数据库技术复习1.SQL Server 2000是⼀个(关系型)的数据库系统。
2.DTS 是⼀个简称,它的全称是(数据传输服务)。
3. SQL Server 2000 采⽤的⾝份验证模式有(Windows⾝份验证模式和混合模式)。
4.SQL 语⾔按照⽤途可以分为三类,是( DML 、DCL 、 DDL)5. 在SELECT语句的WHERE⼦句的条件表达式中,可以匹配0个到多个字符的通配符是(% )6. master 数据库记录了SQL Server 2000的所有系统信息7. 以下那种类型能作为变量的数据类型( C)。
(A)text (B)ntext (C)table (D)image8. 下⾯不属于数据定义功能的SQL语句是:(C )A.CREATE TABLEB.CREATE DATABASEC.UPDATED.ALTER TABLE9. 如果希望完全安装SQL Server,则应选择(典型安装)。
10. 打开要执⾏操作的数据库,应该⽤USE SQL命令?1、下⾯仅存在于服务器端的组件是:( A)A、服务管理器B、企业管理器组件C、查询分析器组件D、导⼊导出组件2、下⾯描述错误的是( B)。
A、每个数据⽂件中有且只有⼀个主数据⽂件。
B、⽇志⽂件可以存在于任意⽂件组中。
C、主数据⽂件默认为 primary⽂件组。
?D、⽂件组是为了更好的实现数据库⽂件组织。
3、SQL Server 2000 企业版可以安装在操作系统上。
(Microsoft Windows 2000 Server )4、下⾯字符串能与通配符表达式[ABC]_a进⾏匹配的是:( C)。
A、BCDEFB、A_BCDC、ABaD、A%a5、下⾯是合法的smallint数据类型数据的是:(C)。
A、223.5B、32768C、-32767D、583456、SQL Server 2000中的数据以页为基本存储单位,页的⼤⼩为( 8KB )。
sqlserver201*数据库总结数据库优化第一章数据库的设计什么是数据库设计?数据库设计就是将数据库中的数据实体以及这些数据实体之间关系,进行规划和结构化的过程。
设计数据库收集信息标识实体表示每个实体需要存储的详细信息表示实体之间的关系绘制e-r图e-r可以称为实体-关系图实体属性联系映射基数一对一一对多多对一多对多实体关系图矩形表示实体集椭圆表示属性菱形表示联系集直线用来连接属性和实体集,也用来连接实体集和联系集三大范式第一范式第一范式的目标就是确保每列的原子性第二范式第二范式在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关。
第三范式第三范式在第二范式的基础上更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关。
第二章数据库的实现创建数据库usemaster--引用空间go--批处理ifexists(select*fromsysdatabaseswherename="MySchool")dropdatabaseMyS choolcreatedatabaseMySchoolon()name="MySchool_data",--数据库名--判断数据库是否存在,如果存--创建数据库在就删除filename="D:\\MySchool_data.mdf",--数据库的存放位置size=3,--数据库的初始大小maxsize=100,filegrowth=1--日志文件--数据库的最大值--数据库的增长率logon()go创建表name="MySchool_log",--数据库的日志名filename="D:\\MySchool_log.ldf",--数据库日志文件的存放位置size=1,--数据库日志文件的初始大小filegrowth=1--数据库日志文件的增长率ifexists(select*fromsysobjectswherename="Grade")droptableGradecreatetableGrade()Go--判断该表是否存在,如果存在就删除--创建表GradeIdintprimarykeyidentity(1,1)notnull,列明类型主键自增不许为空GradeNamenvarchar(50)notnull添加约束AltertableSubject--针对那张表添加约束修改表表名addconstraintFK_Subjectforeignkey(GradeId)referencesGrade(GradeId)添加约束名约束类型具体约束说明GoSQL编程局部变量declare@xvarchar(5)声明变量set@x="★"select@x="★"变量名变量类型变量赋值(单一)变量赋值(支持多条,接收最后一条返回值)print@x打印输出变量@@error以两个@为前缀的为全局变量类型转换的两种方式Cast(表达式as数据类型)(常用)Convert(数据类型[(长度)],长度[,样式])(不常用)逻辑控制语句-------------------BeginEnd-------------------If()BeginEndElseBeginEnd-------------------While(1=1)BeginEnd-------------------casewhenStudentResult=60then"差"whenStudentResultbetween60and80then"中"else"优"第四章子查询简单子查询多层嵌套+in子查询------------------------------------------三层子查询---------------------------------------selectStudentNamefromdbo.StudentwhereStudentNo=(selectStudentNofromd bo.ResultwhereStudentResult="61"andSubJectId=(selectSubJectIdfromdbo.SubjectwhereSubjectName="C#OOP"))selectStudentNamefromdbo.StudentwhereStudentNoin(--返回多个用inselectStudentNofromdbo.ResultwhereStudentResult="61"andSubJectId=(selectSubJectIdfromdbo.SubjectwhereSubjectName="C#OOP"notin子查询你懂得Exists子查询用ifexists判断是否存在Notexists你懂得第六章事务视图和索引什么是事务?事务是单个的工作单元。
C#数据库连接操作大全+sql语句大全下面是c#与数据库的连接及增删改除的各种操作,全部经过上机验证。
学习软件的过程中,数据库起着至关重要的作用。
软件行业里面有句老话,不会数据库就没有入门。
软件思想可以慢慢培养,但是数据库的链接是一定要学会的。
增删改查各种都不能少。
创建数据库创建之前判断该数据库是否存在if exists (select * from sysdatabases where name='databaseName') drop database 'databaseName' go Create DATABASE database-name删除数据库drop database dbname备份sql server--- 创建备份数据的device USE master EXEC sp_addumpdevice'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份BACKUP DATABASE pubs TO testBack创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only删除新表drop table tabname增加一个列Alter table tabname add column col type 注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
一、定义变量--简单赋值declare @aintset@a=5print @a--使用 select 语句赋值declare@user1 nvarchar ( 50)select @user1=' 张三 'print @user1declare@user2 nvarchar ( 50)where ID =1 select @user2 = Name from ST_Userprint @user2--使用 update 语句赋值declare@user3 nvarchar ( 50)update ST_User set@user3 = Name where ID =1print @user3二、表、临时表、表变量--创建临时表 1create table#DU_User1([ID] [int]NOTNULL,[Oid] [int]NOTNULL,[Login] [nvarchar]( 50) NOTNULL,[Rtx] [nvarchar]( 4) NOTNULL,[Name] [nvarchar] ( 5)NOTNULL,[Password] [nvarchar] ( max)NULL,[State] [nvarchar] ( 8) NOTNULL);--向临时表 1 插入一条记录insert into #DU_User1 (ID,Oid, [Login] ,Rtx,Name, [Password] ,State) values ( 100, 2, 'LS' , '0000' , ' 临时 ' , '321' , ' 特殊 ' );--从 ST_User 查询数据,填充至新生成的临时表select * into #DU_User2 from ST_User where ID <8--查询并联合两临时表select * from #DU_User2 where ID <3 union select * from #DU_User1--删除两临时表drop table#DU_User1drop table#DU_User2--创建临时表CREATETABLE#t([ID] [int]NOTNULL,[Oid] [int]NOTNULL,[Login] [nvarchar]( 50) NOTNULL,[Rtx] [nvarchar]( 4) NOTNULL,[Name] [nvarchar] ( 5)NOTNULL,[Password] [nvarchar] ( max)NULL,[State] [nvarchar]( 8) NOTNULL,)--将查询结果集 ( 多条数据 ) 插入临时表insert into #t select * from ST_User--不能这样插入--select * into #t from dbo.ST_User--添加一列,为 int 型自增长子段alter table #t add [myid] int NOTNULL IDENTITY( 1, 1)--添加一列,默认填充全球唯一标识alter table #t add [myid1] uniqueidentifier NOTNULLdefault( newid()) select * from #tdrop table#t--给查询结果集增加自增长列--无主键时:select IDENTITY( int , 1, 1) as ID, Name,[Login] , [Password] into #t fromST_Userselect * from #t--有主键时:select ( select SUM( 1) from ST_User where ID <= a.ID)as myID, * from ST_User a order by myID--定义表变量declare @t table(id int not null ,msg nvarchar ( 50) null)insert into @t values ( 1, '1' )insert into @t values ( 2, '2' )select * from @t三、循环--while循环计算1到100的和declare @aintdeclare@sumintset@a=1set@sum=0while@a<=100beginset@sum+=@aset@a+=1endprint @sum四、条件语句--if,else条件分支if ( 1+1=2)beginprint ' 对'endelsebeginprint ' 错'end--when then条件分支declare @today intdeclare@weeknvarchar ( 3) set@today=3set@week=casewhen @today=1 then ' 星期一 ' when @today=2 then ' 星期二 ' when @today=3 then ' 星期三 ' when @today=4 then ' 星期四 ' when @today=5 then ' 星期五 'when @today=6 then ' 星期六 'when @today=7 then ' 星期日 'else ' 值错误 'endprint @week五、游标declare@ID intdeclare @Oidintdeclare @Login varchar ( 50)--定义一个游标declare user_cur cursor for select ID,Oid, [Login] from ST_User --打开游标open user_curwhile@@fetch_status =0begin--读取游标fetch next from user_cur into@ID, @Oid, @Loginprint @ID--print @Loginendclose user_cur--摧毁游标deallocate user_cur六、触发器触发器中的临时表:Inserted存放进行 insert和update操作后的数据Deleted存放进行 delete和update操作前的数据--创建触发器Create trigger User_OnUpdateOnST_Userfor UpdateAsdeclare@msgnvarchar ( 50)--@msg记录修改情况select @msg= N' 姓名从“' + + N' ”修改为“' + + ' ”' from Inserted,Deleted--插入日志表insert into[LOG](MSG)values ( @msg)--删除触发器drop trigger User_OnUpdate七、存储过程-- 创建带 output参数的存储过程CREATEPROCEDURE_Sum@aint ,@bint ,@sumint outputASBEGINset@sum=@a+@bEND--创建 Return 返回值存储过程CREATEPROCEDURE_Sum2@aint ,@bintASBEGINReturn@a+@bEND--执行存储过程获取 output 型返回值declare@mysumintexecute PR_Sum1, 2, @mysumoutput print @mysum-- 执行存储过程获取Return 型返回值declare@mysum2intexecute@mysum2= PR_Sum21, 2 print @mysum2八、自定义函数函数的分类:1)标量值函数2)表值函数a: 内联表值函数b: 多语句表值函数3)系统函数--新建标量值函数create function FUNC_Sum1 (@aint ,@bint)returns intasbeginreturn @a+@bend--新建内联表值函数create function FUNC_UserTab_1(@myIdint)returns tableasreturn ( select * from ST_User where ID <@myId) --新建多语句表值函数create function FUNC_UserTab_2(@myIdint)returns @t table([ID] [int]NOTNULL,[Oid] [int]NOTNULL,[Login] [nvarchar]( 50) NOTNULL,[Rtx] [nvarchar]( 4) NOTNULL,[Name] [nvarchar] ( 5)NOTNULL,[Password] [nvarchar] ( max)NULL,[State] [nvarchar] ( 8) NOTNULL)asbegininsert into @t select * from ST_User where ID <@myId returnend--调用表值函数select * from dbo.FUNC_UserTab_1(15)--调用标量值函数declare @sintset@s=dbo.FUNC_Sum100,( 50)print @s--删除标量值函数drop function FUNC_Sum1谈谈自定义函数与存储过程的区别:一、自定义函数:1.可以返回表变量2.限制颇多,包括·不能使用 output 参数 ;·不能用临时表 ;·函数内部的操作不能影响到外部环境;·不能通过 select返回结果集;·不能 update ,delete ,数据库表 ;3.必须 return 一个标量值或表变量自定义函数一般用在复用度高,功能简单单一,争对性强的地方。