[SQL Server]管理常用SQL语句
- 格式:doc
- 大小:49.50 KB
- 文档页数:7
sql server命令行查看存储过程的sql语句全文共四篇示例,供读者参考第一篇示例:SQL Server 是一款功能强大的关系型数据库管理系统,用户可以通过SQL命令来进行数据库操作。
存储过程是SQL Server中非常重要的一种数据库对象,它可以帮助用户灵活地管理和操作数据库。
通过命令行查看存储过程的SQL语句是数据库开发和管理中常用的操作之一,本文将详细介绍如何使用SQL Server命令行查看存储过程的SQL 语句。
在SQL Server中,可以使用系统数据库`master`中的`syscat.sql_modules`系统视图来查看存储过程的SQL语句。
该视图包含了数据库中所有存储过程的SQL定义,用户可以通过查询该视图来查看所需存储过程的SQL语句。
下面是使用SQL Server命令行查看存储过程SQL语句的步骤:步骤一:打开SQL Server Management Studio(SSMS),连接目标数据库。
在SSMS中,打开查询编辑器并连接到目标数据库。
在对象资源管理器中展开数据库,可以看到所有的存储过程。
步骤二:查询存储过程的SQL语句。
在查询编辑器中,输入以下SQL语句查询存储过程的SQL语句:```sqlUSE YourDatabaseName;GOSELECT definitionFROM sys.sql_modulesWHERE object_id =OBJECT_ID('YourStoredProcedureName');GO````YourDatabaseName`为目标数据库的名称,`YourStoredProcedureName`为目标存储过程的名称。
执行以上SQL 语句后,即可查看该存储过程的SQL语句。
执行查询后,会返回目标存储过程的SQL语句。
用户可以直接在查询结果中查看存储过程的完整SQL定义,以便进行分析和修改。
步骤一:打开命令提示符,连接到目标数据库。
mssql 查询语法
MSSQL(Microsoft SQL Server)是一种关系型数据库管理系统,其查询语法与标准SQL(Structured Query Language)类似。
以下是常用的MSSQL查询语法:
1. SELECT语句:用于从表中检索数据。
示例:SELECT 列名1, 列名2 FROM 表名WHERE 条件;
2. INSERT语句:用于向表中插入新的行数据。
示例:INSERT INTO 表名(列名1, 列名2) VALUES (值1, 值
2);
3. UPDATE语句:用于更新表中现有行的数据。
示例:UPDATE 表名SET 列名1 = 新值1, 列名2 = 新值2 WHERE 条件;
4. DELETE语句:用于从表中删除行数据。
示例:DELETE FROM 表名WHERE 条件;
5. JOIN语句:用于合并多个表的数据。
示例:SELECT 列名FROM 表名1 INNER JOIN 表名2 ON 表名1.列名= 表名2.列名;
6. GROUP BY语句:用于对结果进行分组统计。
示例:SELECT 列名, COUNT(*) FROM 表名GROUP BY 列名;
7. ORDER BY语句:用于对结果进行排序。
示例:SELECT 列名FROM 表名ORDER BY 列名
ASC/DESC;
8. WHERE语句:用于筛选满足条件的数据。
示例:SELECT 列名FROM 表名WHERE 条件;
以上是一些常用的MSSQL查询语法,希望对您有帮助。
如果有更具体的问题,请提供详细信息以便给出更精确的答案。
一、概述SQL Server 是一个常用的关系型数据库管理系统,它通过执行计划来优化查询语句的执行效率。
执行计划是 SQL Server 通过查询优化器生成的一份详细的查询执行计划,用于指导查询语句的执行过程。
通过执行计划查询语句,我们可以了解查询语句的执行过程、耗时和资源占用情况,有助于识别查询语句的性能问题并进行调优。
二、SQL Server 执行计划查询语句的方法要查询 SQL Server 的执行计划,我们可以使用以下方法:1. 使用 SQL Server Management Studio(SSMS):打开 SSMS,连接到相应的数据库实例,选中要查询的查询语句,按下快捷键 Ctrl + M,或从菜单栏选择“查询”->“显示执行计划”,即可显示查询的执行计划。
2. 使用 SET SHOWPLAN_XML ON 命令:在查询语句的前面加上 SET SHOWPLAN_XML ON 命令,执行该查询语句,会返回一份 XML 格式的执行计划结果。
3. 使用 SET SHOWPLAN_TEXT ON 命令:与上述方法类似,只是返回的执行计划结果是以文本格式显示的。
4. 使用 SQL Server Profiler 工具:SQL Server Profiler 是 SQL Server 提供的一款用于监视、分析 SQL Server 数据库引擎活动的工具,我们可以使用它来捕获并分析执行计划。
5. 使用动态管理视图(DMV):SQL Server 提供了一系列的动态管理视图,如sys.dm_exec_query_plan、sys.dm_exec_requests 等,我们可以通过查询这些动态管理视图来获取执行计划信息。
三、执行计划的内容SQL Server 的执行计划通常包括以下内容:1. 查询的逻辑执行顺序:执行计划会显示查询语句中涉及到的各种操作(如扫描表、聚合操作、连接操作等)的逻辑执行顺序,有助于我们了解查询语句的执行流程。
sql server 复制表结构的sql语句在SQL Server中,可以使用以下SQL语句复制表结构:```SELECT *INTO NewTableFROM OldTableWHERE 1 = 0```这个语句将创建一个名为NewTable的新表,使用OldTable的结构作为模板,并且不会复制任何数据。
如果要创建一个与源表中的列和数据类型完全相同的新表,可以使用以下SQL语句:```SELECT *INTO NewTableFROM OldTable```这将创建一个名为NewTable的新表,并使用OldTable的结构和数据作为模板。
若要在另一个数据库中复制表结构,可以使用以下SQL语句:```SELECT *INTO targetDatabase.dbo.NewTableFROM sourceDatabase.dbo.OldTableWHERE 1 = 0```这将在目标数据库中创建一个名为NewTable的新表,使用源数据库中OldTable的结构作为模板,并且不复制任何数据。
需要注意的是,以上语句只能复制表的结构和数据类型,不会复制约束、索引、触发器等其他表对象。
如果需要复制完整的表定义,可以考虑使用SQL Server Management Studio (SSMS)提供的“复制对象”功能。
另外,也可以通过SQL Server的信息模式视图(sys.tables、sys.columns等)来获取表结构的元数据,然后使用动态SQL来生成复制表结构的SQL语句。
例如,以下示例展示了如何使用元数据视图来生成复制表结构的SQL语句:```DECLARE @tableName NVARCHAR(128) = N'OldTable'DECLARE @newTableName NVARCHAR(128) = N'NewTable'DECLARE @schemaName NVARCHAR(128) = N'dbo'DECLARE @sql NVARCHAR(MAX)SELECT @sql ='CREATE TABLE ' + @schemaName + '.' + @newTableName + ' (' +STUFF((SELECT', [' + + '] ' + +CASE WHEN IN ('varchar', 'nvarchar', 'char','nchar', 'binary', 'varbinary') THEN '(' + CASE WHENc.max_length = -1 THEN 'MAX' ELSE CAST(c.max_length AS NVARCHAR(20)) END + ')'WHEN IN ('decimal', 'numeric') THEN '(' +CAST(c.precision AS NVARCHAR(20)) + ', ' + CAST(c.scale AS NVARCHAR(20)) + ')'ELSE '' END +CASE WHEN c.is_nullable = 0 THEN ' NOT NULL' ELSE '' END FROM sys.columns cINNER JOIN sys.types t ON er_type_id = er_type_id WHERE c.object_id = OBJECT_ID(@schemaName + '.' +@tableName)ORDER BY c.column_idFOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') +');'PRINT @sql```上述示例生成的@sql变量中包含了根据元数据动态生成的用于创建新表的SQL语句。
常用数据库连接语句一:mysql的数据库连接语句connection condrivermanager.getconnection.(jdbc:mysql://localhost:3306/bookinfo,root,123);stat ement st = con.createstatement();string sql = select * from book;resultset rs = st.executequery(sql);while(rs.next()){}二:sqlserver的数据库连接语句connection con o,sa,123);preparedstatement ps = con.preparestatement(select * from book); resultset rs = ps.executequery();while(rs.next()){out.println(rs.getstring(2));}三:sqlserver2005的数据库连接语句connection con = drivermanager.getconnection.(jdbc:sqlserver://localhost:1433;databasename=bookin fo,sa,123);preparedstatement ps = con.preparestatement(select * from book);resultset rs = ps.executequery();= = drivermanager.getconnection.(jdbc:microsoft:sqlserver://localhost:1433;databasen ame=bookinfwhile(rs.next()){out.println(rs.getstring(2));}四:oracle的数据库连接语句jdbc:oracle:thin:@<server>[:<1521>]:<database_name>class.forname(oracle.jdbc.driver.oracledriver);connection con = drivermanager.getconnection.(jdbc:oracle:thin:@localhost:1521:bookinfo,zhangsan, 123);preparedstatement ps = con.preparestatement(select * from book);resultset rs = ps.executequery();while(rs.next()){out.println(rs.getstring(2));}篇二:sql语句大全+sql数据库连接sql语句大全创建数据库创建之前判断该数据库是否存在if exists (select * from sysdatabases where name=databasename)drop databasedatabasenamegocreate database database-name删除数据库drop database dbname备份sql server--- 创建备份数据的 deviceuse masterexec 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注:列增加后将不能删除。
当然,我可以帮助您编写一篇关于如何在SQL Server 2012中创建数据库的SQL语句的教程。
以下是一个简单的步骤指南和示例代码。
### SQL Server 2012:创建数据库教程在SQL Server中,创建数据库是一个基本的操作,它涉及到定义数据库的名称、文件位置、大小和其他属性。
以下是如何使用SQL语句在SQL Server 2012中创建数据库的步骤。
#### 步骤 1: 打开SQL Server Management Studio (SSMS)首先,您需要打开SQL Server Management Studio。
这是与SQL Server交互的主要界面。
#### 步骤 2: 连接到服务器在SSMS中,输入服务器名称、身份验证方式(Windows身份验证或SQL Server身份验证),然后点击“连接”按钮。
#### 步骤 3: 打开新的查询窗口在SSMS中,点击工具栏上的“新建查询”按钮,打开一个新的查询窗口。
#### 步骤 4: 编写创建数据库的SQL语句在查询窗口中,您可以编写SQL语句来创建数据库。
以下是一个基本的示例:```sqlCREATE DATABASE MyDatabaseON( NAME = MyDatabase_Data,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\MyDatabase.mdf',SIZE = 10MB,MAXSIZE = 100MB,FILEGROWTH = 5MB )LOG ON( NAME = MyDatabase_Log,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\MyDatabase.ldf',SIZE = 5MB,MAXSIZE = 25MB,FILEGROWTH = 5MB );```这段SQL代码做了以下几件事:1. 使用`CREATE DATABASE`语句创建一个名为`MyDatabase`的数据库。
sqlserver2008查询语句SQL Server 2008是一种关系型数据库管理系统,它支持使用SQL 语言进行数据查询和操作。
在本文中,我们将列举一些常用的SQL Server 2008查询语句,以帮助读者更好地了解和使用这个数据库管理系统。
1. 查询表中的所有数据SELECT * FROM table_name;这个查询语句可以用来查询指定表中的所有数据。
其中,table_name是要查询的表的名称。
2. 查询表中的部分数据SELECT column1, column2, ... FROM table_name WHERE condition;这个查询语句可以用来查询指定表中符合条件的部分数据。
其中,column1, column2, ...是要查询的列的名称,condition是查询条件。
3. 查询表中的唯一数据SELECT DISTINCT column1, column2, ... FROM table_name;这个查询语句可以用来查询指定表中唯一的数据。
其中,column1, column2, ...是要查询的列的名称。
4. 对查询结果进行排序SELECT column1, column2, ... FROM table_name ORDER BY column_name ASC|DESC;这个查询语句可以用来对查询结果进行排序。
其中,column1, column2, ...是要查询的列的名称,column_name是要排序的列的名称,ASC表示升序排列,DESC表示降序排列。
5. 对查询结果进行分组SELECT column1, column2, ... FROM table_name GROUP BY column_name;这个查询语句可以用来对查询结果进行分组。
其中,column1, column2, ...是要查询的列的名称,column_name是要分组的列的名称。
SQL Server 的基础知识一、数据类型字符型数据char[(n)]:存在固定长度的n个字符数据varchar[(n)]:存放可变长度的n个字符数据text:存放最大长度为2^31-1的字符数据Unicode数据Nchar[(n)]:存放固定长度的n个UNICODE数据Nvarchar[(n)]:存放可变长度的n个UNICODE数据NTEXT日期和时间数据datetime:存放入1753/1/1到9999/12/31的时间数据smalldatetime:存放从1900/1/1到2079/6/6的时间数字型数据bigint:存放从-2^63到2^63的整型数据int:存放人-2^31到2^63的整型数据smallint:存放从-2^15到2^15的整型数据tinyint:存放2从0到255的整型数据decimal[p[,s]]]、numeric[(p[,s])]:固定精度的小数据,当取最大精度时范围从-10^38-1到10^38-1float[(n)]:存放的浮点数real:存放浮点数货币数据money:smallmoney:二、建表CREATE TABLE语句例:create talbe customers(customerid intidentity(1,1)primary key,fristName varchar(20) not null,lastName varchar(20) not null,Address varchar(100),City varchar(20),Tel varchar(20) UNIQUE,Company varchar(50),Birthday datetime,Type tinyint default 1)Ceate table goods(Name varchar(20) constraint pk_goodsname primary key,Description varchar(200),Storage int,Supplier tinyint default(0),Price money)Create table orders(Ordered int identity(1,1) constraint pk_ordered primary key,Goodsname varchar(20) not nullForeignkey(customerid) references customers(customerid) on delete on action,Quantity int null constraint ck_quantity check(quantity>0),Ordersum money not null,Orderdate datetime default(getdate()))三、添加和删除列use marketalter table customers add emailaddress varchar(50) nullxonstraint ck_ea check(emailaddress like‟%@%‟)use marketalter table customers drop column emailaddress四、查询语句select …客户序号‟,customerid,firstname,lastname from customers在select _list中,可以使用算术运算符操纵列,对查询的结果进行计算,这种计算可以是针对多个列的。
SQL操作语句SQL语句与Mysql的语句⼤体上⽐较相似。
以下是sql server的⼀套练习题,是很好的数据库操作语句学习资料,学校的学习资料,在此整理了以下。
数据库exam:这是⼀个模拟电⼦商务,⽹上直销的数据,主要销售计算机配件。
该数据库包含了订单数据、经销商基本数据、产品基本数据以及供应商基本数据等。
该数据库共包含6个表,表名分别为:orders、distributors、suppliers、city、items和products。
各个表的内容与格式如下:表1 ⽹上直销订单表格,表名为:orders列名描述数据类型OrderNum订单号码IntOrderDate订购⽇期DatatimeDistriNum经销商号码IntPaidDate付款⽇期Datatime表2 经销商表格,表名为:distributors列名描述数据类型DistriNum经销商号码IntBossName经理名称CharCompany公司名称CharCityCode所属市区代码CharAddress公司地址CharPhone公司电话号码Char表3 供应商表格,表名为:suppliers列名描述数据类型SuppCode供应商代码CharSuppName供应商名称Char表4 市区表格,表名为:city列名描述数据类型CityCode市区代码CharCityName市区名称Char表5 订单项⽬表格,表名:items列名描述数据类型Item订单项⽬号码IntOrderNum订单号码IntProdNum产品号码IntSuppCode供应商代码CharQuantity单项定购数量IntTotalPrice单项总价Money表6 产品表格,表名:products列名描述数据类型ProdNum产品号码IntSuppCode供应商CharDescriptions产品名称CharUnitPrice产品单价Money⼀、数据表的简单操作⽤SQL语句选取表中所有的列:1、查询exam数据库中city表中所有的列的内容select*from city;2、查询exam数据库中orders表OrderDate列的内容select OrderDate from orders;选取惟⼀的数值:消除重复关键字:distinct (放在select后⾯)1、查询exam数据库中orders表中的订购⽇期OrderDate,并且相同的订购⽇期只显⽰⼀次(distinct)select distinct OrderDate from orders;2、对记录进⾏操作——选取特定的记录:查询exam数据库中供应商代码为HHT的供应商的实际名称select SuppName from city where SuppCode= "HHT";3、对记录进⾏操作——排除特定的记录:查询exam数据库中供应⼚代码不为HHT的所有供应商的实际名称select SuppName from city where SuppCode!= "HHT";3、对数据进⾏操作——选取介于某⼀范围的数据:查询exam数据库的products表中所有单价不超过20元的产品的名称及其对应的价格select Descriptions,UnitPrice from products where UnitPrice <=20;4、对数据进⾏操作——选取属于某⼀⼦集合的数据:in:在...⾥查询exam数据库中经销商号码为1006、1009、1013、1014、1017的经理名称以及其所在的公司名称select DistriNum,BossName,Company from distributors where DistriNum in (1006,1009,1013,1014,1017);5、对字符串进⾏操作——选取⼦字符串:查询exam数据库中所有经销商的电话区号select substring(Phone,1,3) from distritubors; //第⼀位和从这⼀位开始⼏位查询exam数据库中所有经销商的姓select substring(BossName,1,1) from distributors;6、对字符串进⾏操作——搜索⼦字符串:‘%’:表⽰N个任意字符查询exam数据库中所有经理姓“王”的公司的名称、电话以及公司地址select BossName,Company,Phone,Address from distributors where BossName like'王%';⼆、⼀般数据查询与处理1、同时执⾏多个SQL语句:实现在⼀次查询中同时查询exam数据库中orders表和distributors表所有列的内容select*from orders;goselect*from distributors;go2、⽤order by⼦句对数据进⾏排序:查询exam数据库products表格中所有的记录,查询结果根据单价由⼩到⼤的顺序(降序)排序select*from products order by UnitPrice desc;3、使⽤算术运算符:查询exam数据库products表中的所有记录,并且把每个产品单价显⽰成调⾼10%后的价格(只显⽰,数据库不变)select ProNum,SuppCode,description,UnitPrice * 1.1from products;3、查询exam数据库products表中的所有记录,并且把每个产品单价显⽰成8折后的价格select ProNum,SuppCode,description,UnitPrice *0.8from products;5、搜索单⼀长度的任意字符串:‘_’:表⽰⼀个任意字符查询exam数据库suppliers表中供应商代码的第1、3位分别为H和T的所有供应商的记录select*from suppliers where SuppCode like "H_T";6、使⽤常⽤的字符串函数:查询exam数据库distribuotrs表中经销商号码为1001的地址字符串的长度select len(Address) from distributors where DistriNum = "1001";7、查询字符串的长度select len(‘中华⼈民共和国’);8、将字符串‘I LOVE SQL SERVER‘的所有字母转换成⼩写字母select LOWER('I LOVE SQL SERVER');9、将字符串‘abcdefg’中的⼩写字母转换成⼤写字母select UPPER('abcdefg');10、将字符串‘ abcdefg’前的空格去掉select ltrim(' abcdefg);11、将字符串‘uvwxyz ’后的空格去掉select rtrim('uvwxyz ');12、将字符串‘我喜欢数据库’中的字符由左⾄右反转排列select REVERSE('我喜欢数据库');13、求出字符A的ASCII码select ASCII('A');14、判断数字5的正负号,如果正返回1,负返回-1select SIGN(5);15、使⽤常⽤的数学函数:计算出以下三个数的绝对值:-2.5,0.0,7.4select ABS(-2.5),ABS(0.0),ABS(7.4);16、返回分别⼤于或等于以下数字的最⼩整数:5.5,-7.2,0.0select floor(5.5),floor(-7.2),floor(0.0);17、返回π(PI)的值select PI();18、返回630.67的近似值,并将该数分别四舍五⼊到1、-2、3、0长度的⼩数select ROUND(630.67,1),ROUND(630.67,-2),ROUND(630.67,3),ROUND(630.67,0);19、返回以下3个数的平⽅值:4、-6,6.6select SQUARE(4),SQUARE(-6),SQUARE(6.6);20、返回以下3个数的算数平⽅根:4,0,50select SQRT(4),SQRT(0),SQRT(50);21、计算Cos(3.1415926)的值 sin(3.14159260) ctg(3.14) tg(3.1415926)select COS(3.1415926),SIN(3.14159260),COT(3.14),TAN(3.1415926);22、计算2的⾃然对数、指数值select LOG(2),EXP(2);23、计算1000的以10为底的对数select LOG10(1000);24、计算2的10次⽅select POWER(2,10);三、常⽤函数常⽤的集总函数的应⽤:1、查询exam数据库products表中共销售多少种产品select COUNT(*) from products;2、查询exam数据库items表中代码为HSC的供应商已订货的总⾦额select SuppCode,SUM(TotalPrice) from items where SuppCode ='HSC';3、查询exam数据库products表中所有供应商所供应的货品的平均单价select SuppCode,AVG(UnitPrice) from products group by SuppCode;4、查询exam数据库products表中每⼀个供应商产品的最⾼单价/最低单价select SuppCode,MAX(UnitPrice),MIN(UnitPrice) from products group by SuppCode;6、时间函数:(1)获取当前时间select getdate();(2)、在1991-07-10 2:30:00.000时间上增加21天select dateadd(d,21,’ 1991-07-102:30:00.000’);(3)、返回1991-07-10 2:30:00.000五天前的时间select DATEADD(D,-5,'1991-07-10 2:30:00.000');(4)、返回两个⽇期间隔的时间select DATEDIFF(D,'02/20/1999','02/28/1999');(5)、以字符串形式返回当天⼏年select DATENAME(Y,GETDATE());(6)、以整数形式返回当天⼏号select DATEPART(D,GETDATE());(7)、查询当前UTC时间(协调时间)select GETUTCDATE();四、⾼级数据查询与处理1、在⼀个select语句中使⽤多个表格:查询exam数据库中每⼀个经销商所有的订单数据,列出经销商号码、公司名称、电话号码以及订货⽇期select distributors.DistriNum,Company,Phone,OrderDate from distributors,orders where orders.DistriNum = distributors.DistriNum 2、在select语句中使⽤⼦查询:查询exam数据库中与经理名称为‘王为’的经销商同在⼀个市区的所有经销商的数据内容select*from distributors where CityCode=(select CityCode from distributors where BossName='王为');3、⽤union运算符实现从不同的表格抽取相同格式的数据:查询exam数据库中单价不⼤于25元或者是已订货项⽬中数量⼩于2的产品数据select ProdNum,SuppCode,Description,UnitPrice from products where UnitPrice <=25unionselect ProdNum,SuppCode,Quantity from items where Quantity <24、添加记录:在orders表中添加⼀笔记录,OrderNum为119,OrderDate为1905-06-8,DistriNum为1022,PaidDate为1905-06-9insert into orders(OrderNum,OrderDate,DistriNum,PaidDate) values(119,1905-06-8,1022,1905-06-9);5、删除记录:删除orders表中OrderNum为119的记录delete from orders where OrderNum =1196、更新记录:将orders表中订单号为118的订单的订购⽇期改为2003-07-11update orders set OrderDate = "2003-07-11" where OrderNum =1187、实现查询exam数据库中每⼀个经销商的订单号码(orders表中)与经销商公司所属市区的代码(ditributoirs表中)select orders.DistriNum,OrderNum,distributors.CityCode from orders,distributors where orders.DistriNum = distributors.DistriNum8、实现查询exam数据库中公司在宣武区的所有经销商的数据内容select*from distributors where CityCode= (select CityCode from city where CityName='宣武区')9、实现查询exam数据库中订单号码为100对应的经销商的情况select*from distributors where DistriNum= (select DistriNum from orders where OderNum =100)五、设计数据库⽤T-SQL语句实现默认值与列的结合:默认值创建:create default 关键字 as XX绑定默认值:sp_bindefault ‘默认值名’,’表名.[列名]’重命名默认值:exec sp_rename ‘旧名称’,’新名称’1.在exam数据库中新建名为moren的默认值,值为100,并把该默认值与orders表的OrderNum列结合(sp_bindefault)create default moren as100gosp_bindefault 'moren','orders.[OrderNum]'gosp_bindefault 将新默认值绑定到列(尽管最好使⽤ DEFAULT 约束)或者绑定到别名数据类型。
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack','c:\mssql7backup\MyNwind_1.dat'--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:A:select * into table_new from table_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle>5、说明:删除新表drop table tabname6、说明:增加一个列,删除一个列A:alter table tabname add column col typeB:alter table tabname drop column colname注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)说明:删除主键: Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
[SQL Server]管理常用SQL语句
1. 查看数据库的版本
select @@version
2. 查看数据库所在机器操作系统参数
exec master..xp_msver
3. 查看数据库启动的参数
sp_configure
4. 查看数据库启动时间
select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1
查看数据库服务器名和实例名
print 'Server Name...............:' + convert(varchar(30),@@SERVERNAME)
print 'Instance..................:' + convert(varchar(30),@@SERVICENAME)
5. 查看所有数据库名称及大小
sp_helpdb
重命名数据库用的SQL
sp_renamedb 'old_dbname', 'new_dbname'
6. 查看所有数据库用户登录信息
sp_helplogins
查看所有数据库用户所属的角色信息
sp_helpsrvrolemember
修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程
更改某个数据对象的用户属主
sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'
注意:更改对象名的任一部分都可能破坏脚本和存储过程。
把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本
查看某数据库下,对象级用户权限
sp_helprotect
7. 查看链接服务器
sp_helplinkedsrvlogin
查看远端数据库用户登录信息
sp_helpremotelogin
8.查看某数据库下某个数据对象的大小
sp_spaceused @objname
还可以用sp_toptables过程看最大的N(默认为50)个表
查看某数据库下某个数据对象的索引信息
sp_helpindex @objname
还可以用SP_NChelpindex过程查看更详细的索引情况
SP_NChelpindex @objname
clustered索引是把记录按物理顺序排列的,索引占的空间比较少。
对键值DML操作十分频繁的表我建议用非clustered索引和约束,fillfactor参数都用默
认值。
查看某数据库下某个数据对象的的约束信息
sp_helpconstraint @objname
9.查看数据库里所有的存储过程和函数
use @database_name
sp_stored_procedures
查看存储过程和函数的源代码
sp_helptext '@procedure_name'
查看包含某个字符串@str的数据对象名称
select distinct object_name(id) from syscomments where text like '%@str%'
创建加密的存储过程或函数在AS前面加WITH ENCRYPTION参数
解密加密过的存储过程和函数可以用sp_decrypt过程
10.查看数据库里用户和进程的信息
sp_who
查看SQL Server数据库里的活动用户和进程的信息
sp_who 'active'
查看SQL Server数据库里的锁的情况
sp_lock
进程号1--50是SQL Server系统内部用的,进程号大于50的才是用户的连接进程.
spid是进程编号,dbid是数据库编号,objid是数据对象编号
查看进程正在执行的SQL语句
dbcc inputbuffer ()
推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的SQL语句
sp_who3
检查死锁用sp_who_lock过程
sp_who_lock
11.查看和收缩数据库日志文件的方法
查看所有数据库日志文件大小
dbcc sqlperf(logspace)
如果某些日志文件较大,收缩简单恢复模式数据库日志,收缩后@database_name_log
的大小单位为M
backup log @database_name with no_log
dbcc shrinkfile (@database_name_log, 5)
12.分析SQL Server SQL 语句的方法:
set statistics time {on | off}
set statistics io {on | off}
图形方式显示查询执行计划
在查询分析器->查询->显示估计的评估计划(D)-Ctrl-L 或者点击工具栏里的图形
文本方式显示查询执行计划
set showplan_all {on | off}
set showplan_text { on | off }
set statistics profile { on | off }
13.出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法
先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然
后做修复操作
alter database [@error_database_name] set single_user
修复出现不一致错误的表
dbcc checktable('@error_table_name',repair_allow_data_loss)
或者可惜选择修复出现不一致错误的小型数据库名
dbcc checkdb('@error_database_name',repair_allow_data_loss)
alter database [@error_database_name] set multi_user
CHECKDB 有3个参数:
repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或
页的错误,以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。
修复操作可以在用户事务下完成以允许用户回滚所做的更改。
如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。
如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修
复。
修复完成后,请备份数据库。
repai*_**st 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。
这些修复可以很快完成,并且不会有丢失数据的危险。
repair_rebuild 执行由 repai*_**st 完成的所有修复,包括需要较长时间的修复(如重
建索引)。
执行这些修复时不会有丢失数据的危险。
内存使用情况
SELECT
name
,type
,SUM(single_pages_kb + multi_pages_kb) AS MemoryUsedInKB
FROM sys.dm_os_memory_clerks
GROUP BY name, type
ORDER BY SUM(single_pages_kb + multi_pages_kb) DESC
MSSQL 2005删除所有表的语句
use databasename
go
declare @tbname varchar(250)
declare #tb cursor for select name from sysobjects where
objectproperty(id,'IsUserTable')=1
open #tb
fetch next from #tb into @tbname
while @@fetch_status=0
begin
exec('drop table ['+@tbname+']')
fetch next from #tb into @tbname
end
close #tb
deallocate #tb
SN为出现重复的字段
非重复数据:
select a.* from 表 a where not exists(select 1 from 表 where S
N=a.SN and ID!=a.ID)
有重复数据:
select a.* from 表 a where exists(select 1 from 表 where SN=a.S
N and ID!=a.ID)
在结果集上 添加 行号 (只适用于 sql 2005 ):
select *, row_number() over (order by [排序列]) as rownumber
from [表名]