SQL Server 2008 T-SQL语句总结

合集下载

SQL SERVER课件--T-SQL语法(第一部分)

SQL SERVER课件--T-SQL语法(第一部分)

2. sp_rename 语法:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]
① 修改表名:
exec sp_rename ‘ tablename ' , ‘ newtablename ', ‘object'
混合练习(一):
对Persons 表做如下操作:
1. 添加一个名为 “SEX“(数据类型:char) 的新列: 2. 改变“SEX“列的数据类型为Nchar:
3. 删除表中的 “SEX" 列:
1. ALTER TABLE Persons ADD SEX Char 2. ALTER TABLE Persons ALTER COLUMN SEX Nchar 3. ALTER TABLE Persons DROP COLUMN SEX
例: 将表 customers 重命名为 custs: EXEC sp_rename 'customers', 'custs', ‘object'
练习( 一): 1. 将数据库表Persons表名修改为Person. 2. 将数据库表Subject表名修改为Subject01. 3. 将数据库表Score表名修改为Score01. 4. 将数据库表Students表名修改为Students01.
2. sp_rename 语法:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]

SQLServer2008语句大全完整版

SQLServer2008语句大全完整版

SQLServer2008语句⼤全完整版--========================--设置内存选项--========================--设置 min server memory 配置项EXEC sp_configure N'min server memory (MB)',0--设置 max server memory 配置项EXEC sp_configure N'max server memory (MB)',256--使更新⽣效RECONFIGURE WITH OVERRIDE--====================================================================================使⽤⽂件及⽂件组.sql========================/*--功能说明下⾯的代码是在SQL Server 2000上创建名为 MyDB 的数据库该数据库包括1个主要数据⽂件、3个⽤户定义的⽂件组和1个⽇志⽂件ALTER DATABASE语句将⽤户定义⽂件组指定为默认⽂件组。

之后,通过指默认的⽂件组来创建表,并且将图像数据和索引放到指定的⽂件组中。

最后,将⽂件组中的指定数据⽂件删除 --*/--切换到 master 数据库USE masterGO--A. 创建数据库 MyDBCREATE DATABASE MyDBON PRIMARY--主⽂件组和主要数据⽂件( NAME='MyDB_Primary',FILENAME='c:\MyDB_Prm.mdf'),FILEGROUP MyDB_FG1 --⽤户定义⽂件组1(NAME='MyDB_FG1_Dat1',FILENAME='c:\MyDB_FG1_1.ndf'),--次要数据⽂件1(NAME='MyDB_FG1_Dat2',FILENAME='d:\MyDB_FG1_2.ndf'),--次要数据⽂件2FILEGROUP MyDB_FG2--⽤户定义⽂件组2(NAME='MyDB_FG1_Dat',FILENAME='e:\MyDB_FG2.ndf'),--次要数据⽂件LOG ON --⽇志⽂件(NAME='MyDB_log',FILENAME='d:\MyDB.ldf')--DUMP TRANSACTION MyDB WITH NO_LOG and truncate_onlyGO--B. 修改默认数据⽂件组ALTER DATABASE MyDBMODIFY FILEGROUP MyDB_FG1 DEFAULTGO---切换到新建的数据库 MyDBUSE MyDB--C. 在默认⽂件组MyDB_FG1创建表,并且指定图像数据保存在⽤户定义⽂件组MMyDB_FG2CREATE TABLE MyTable(cola int PRIMARY KEY ,colb char(8) ,colc image)TEXT IMAGE_ON MyDB_FG2--在⽤户定义⽂件组MyDB_FG2上创建索引CREATE INDEX IX_MyTableON MyTable(cola)ON MyDB_FG2GO-- 并且清空数据⽂件MyDB_FG1_Dat1DBCC SHRINKFILE(MyDB_FG1_Dat1,EMPTYFILE)--删除数据⽂件MyDB_FG1_Dat1ALTER DATABASE MyDB REMOVE FILE MyDB_FG1_Dat1--========================================================================== --===============================调整数据库的⽂件属性.sql--===============================--A. 将tempdb数据库的主数据⽂件⼤⼩设置为10MB。

sql2008教案设计T_SQL语句创建大数据库

sql2008教案设计T_SQL语句创建大数据库

SQL Server 2008 数据库的管理(二)一、T-SQL 概述1.SQL:Structured Query Language:结构化查询语言,现在已经作为国际计算机查询语言的通用标准,92年美国国家标准局ANSI推出ANSI SQL 92标准,我们安装的sql server 2008所用的标准就是ANSI SQL 92标准的一个扩展集,叫做T-SQL。

2.T-SQLT-SQL:Transact-SQL,是SQL的一个扩展集,对功能有了很大的补充,例如变量说明,流程控制,功能函数等。

二、T-SQL的语言主要组成部分1.DML(数据操作语言)用于查询、插入、修改、和删除数据库中的数据。

SELECT、INSERT、UPDATE 、DELETE等2、DDL(数据定义语言)用于在数据库系统中创建数据库、表、视图、索引等CREATE DATABASE DROP DATABASE等3、DCL(数据控制语言)用来控制存取许可、存取权限等GRANT,REVOKE等4.其他海标扩变量说明、部函数等其他的命令。

二、数据库的相关概念和命名规则1、物理存储结构数据库文件在磁盘上的存储形式主数据文件: *.mdf,用来存储数据库的启动信息,存储部分或者全部的数据。

一个数据库只能有一个主数据文件。

辅助数据文件:*.ndf,用来存储主数据文件未能存储的数据。

一个数据库可以有很多个ndf,也可以一个都没有。

日志文件:*.ldf,用来存储数据库的更新等日志信息,当数据库损坏的时候管理员可以通过日志文件来进行恢复。

曾删改都会被记录在日志文件中。

查询是不会被记录在日志中。

一个数据库必须有一个日志文件。

文件组:类似于文件夹,用来方便管理文件,分为主文件组和次文件组,日志不属于任何一个文件组。

(查看测试1数据库)2、逻辑存储结构有数据表,视图,索引等国中不同的数据对象组成,分别用来存储特定信息并支持特定功能。

3、数据库明明规则第一个字符必须是字母或者”_”、””、”#”。

SQL Server 2008大数据库—创建、建表、查询语句

SQL Server 2008大数据库—创建、建表、查询语句

SQL Server 2008数据库—创建、建表、查询语句一、创建数据库1、利用对象资源管理器创建用户数据库:(1)选择“开始”—“程序”—Microsoft SQL Server 2008—SQL Server Management Studio命令,打开SQL Server Management Studio。

(2)使用“Windows身份验证”连接到SQL Server 2008数据库实例。

(3)展开SQL Server 实例,右击“数据库”,然后人弹出的快捷菜单中选择“新建数据库存”命令,打开“新建数据库”对话框。

(4)在“新建数据库”对话框中,可以定义数据库的名称、数据库的所有者、是否使用全文索引、数据文件和日志文件的逻辑名称和路径、文件组、初始大小和增长方式等。

输入数据库名称student。

2、利用T-SQL语句创建用户数据库:在SQL Server Management Studio中,单击标准工具栏的“新建查询”按钮,启动SQL编辑器窗口,在光标处输入T-SQL语句,单击“执行”按钮。

SQL编辑器就提交用户输入的T-SQL语句,然后发送到服务器执行,并返回执行结果。

创建数据库student的T-SQL语句如下:Create data base studentOn primary(name=student_data,filename='E:\SQL Server2008SQLFULL_CHS\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\student_ data.mdf',size=3,maxsize=unlimited,filegrowth=1)Log on(name=student_log,filename='E:\SQL Server2008SQLFULL_CHS\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\student_ log.ldf',size=1,maxsize=20,filegrowth=10%)二、创建数据表1、利用表设计器创建数据表:(1)启动SQL Server Management Studio,连接到SQL Server 2008数据库实例。

第8章 SQL Server 2008的T-SQL II(1)

第8章 SQL Server 2008的T-SQL II(1)
BEGIN <T-SQL语句序列>
END
NINGBO University of Technology
例6 查看所有选修‘数据库技术与设计’课程的 学生信息。
-- 打开教学数据库 Use teaching GO /* 查看所有选修‘数据库技术与设计’课程的学
生信息 */ SELECT s.sno, sname , o ,cname , grade From student s, student_course sc, course c Where s.sno=sc.sno and o=o and
依次判断WHEN后的<逻辑表达式>是否为 TRUE,若某个<逻辑表达式i>的值为TRUE,则 执行其后的<结果表达式i>;若WHEN后的<逻 辑表达式>的值没有一个为TRUE,则执行ELSE后 的<结果表达式q>。
NINGBO University of Technology
例9 使用CASE语句格式2的例子。 Use Teaching GO Select sc.sno as '学号', sname as '姓名' ,
[ , <局部变量名2><数据类型2>, …] 局部变量名被声明后,系统自动给它们初始 化为NULL。
NINGBO University of Technology
(2)局部变量的赋值
SET <局部变量名>= <表达式>
其中表达式是与局部变量的数据类型相匹配 的表达式,赋值语句的作用是将表达式的值赋给 指定的局部变量。
NINGBO University of Technology

笔记-MicrosoftSQLServer2008技术内幕:T-SQL语言基础-06集合运算

笔记-MicrosoftSQLServer2008技术内幕:T-SQL语言基础-06集合运算

笔记-MicrosoftSQLServer2008技术内幕:T-SQL语⾔基础-06集合运算T-SQL⽀持3种集合运算:并集(UNION)、交集(INTERSECT)和差集(EXCEPT)。

集合运算涉及的两个查询不能包含ORDER BY⼦句。

UNION ALL集合运算UNION ALL不会对⾏进⾏⽐较,也不会删除重复⾏。

假设查询Query1返回m⾏,查询Query2返回n⾏,则Query1 UNION ALL Query2返回(m+n)⾏。

SELECT country, region, city FROM HR.EmployeesUNION ALLSELECT country, region, city FROM Sales.Customers;UNION DISTINCT集合运算UNION DISTINCT会删除重复⾏。

SELECT country, region, city FROM HR.EmployeesUNIONSELECT country, region, city FROM Sales.Customers;INTERSECT DISTINCT集合运算SELECT country, region, city FROM HR.EmployeesINTERSECTSELECT country, region, city FROM Sales.Customers;注意⼀点,集合运算对⾏进⾏⽐较时,认为两个NULL值相等。

INTERSECT ALL集合运算SQL Server不⽀持内建的INTERSECT ALL运算,需要⽤替代的解决⽅案来实现INTERSECT ALL。

可以⽤ROW_NUMBER来实现此需求。

SELECTROW_NUMBER()OVER(PARTITION BY country, region, cityORDER BY (SELECT0)) AS rownum,country, region, cityFROM HR.EmployeesINTERSECTSELECTROW_NUMBER()OVER(PARTITION BY country, region, cityORDER BY (SELECT0)),country, region, cityFROM Sales.Customers;执⾏结果:注意上⾯的SQL中,在排序函数的OVER⼦句中使⽤ORDER BY(SELECT<常量>)是告诉SQL Server不必在意⾏的顺序。

T-SQL常用语句总结

T-SQL常用语句总结

基本T-SQL语句1.增加(插入)语句插入一条记录Insert into表名(列名1,列名2,列名3)Values (值1,值2,值3)插入多条记录(从表1中将数据复制到领表2中)Insert into表2(列名1,列名2,列名3)Select表1.列名1,表1.列名2,表1.列名3From 表1注:执行这条语句之前,表2必须事先已经建好插入多条记录(从表1中将数据复制到新建的表2中)Select表1.列名1,表1.列名2,表1.列名3,identity(int,1,1) as idInto表2From表1注:常用于创建临时表插入多条记录Insert into 表1 (列名1,列名2,列名3)Select 值1,值2,值3 unionSelect值1,值2,值3 unionSelect值1,值2,值3注:这里值1,值2,值3必须是常量插入语句注意事项:1)插入的列个数必须和插入的值个数一致2)插入的值必须和插入的列的类型一致3)如果表中某列不允许为空,那么插入一行记录时必须为该列插入值4)如果表中有标识列,不能为标识列插入值5)如果表中某列有默认值,为该列插入值时,只能用Insert into 表名(列名1,列名2,列名3)Values (值1,值2,default)或者干脆就不为该列插入值2.更新(修改)语句Update表名set列名1=值1,列名2=值2【Where 更新条件】3.删除语句Delete from 表名【where 删除条件】Truncate表名注:这两种语句都只是删除表中的记录,删除过程中一定要注意如果该表有外键约束,一定要先删除外表4.查询语句基本查询语句Select列名1,列名2,列名3 from 表1【where 查询条件】或Select * from 表1 (查询表中所有的记录)为查询列重命名Select列名1 as 新命1,列名2as新命2,列名3 as新命3from表1【where 查询条件】查询中的常量列Select值1,值2,值3 from 表排序查询1)要求返回前n个记录Select top n列名1,列名2,列名3From表1Order by 列名desc2)要求返回整个表中的n%的记录Select top n% 列名1,列名2,列名3From表1注:order by 中desc 降序,asc升序(不写默认为升序)聚合函数1)求和Select sum(列名1) as 总和From 表【Where 条件】2)求平均Select avg(列名) as 平均From表【Where 条件】3)求最大值、最小值Select max(列名) as 最大值, min(列名) as 最小值From 表【Where 条件】3)统计个数Select count(*) as 个数From 表【Where 条件】分组查询Select列名1,avg(列名2) as 平均值From表1【Where 条件】Group by 列名1【having 条件】注:1)如果查询中有聚合函数还有其他列,这个列必须包含在group by 的后面2)在查询语句中,where先过滤掉整张表中不符合条件的数据,然后再根据Group by 后面的列进行分组,having是在分完组之后再过滤掉各个组内不符合条件的数据,最后再使用聚合函数统计剩下的数据常用的字符串函数1:replace函数第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么select replace('lihan','a','b')结果:lihbn2:substring函数第一个参数你的字符串,第二个是开始替换位置,第三个结束替换位置select substring('lihan',0,3);结果li3: charindex函数第一个参数你要查找的char,第二个参数你被查找的字符串,第三个查找的起始位置,返回参数一在参数二的位置select charindex('a','lihan',1)结果:44:stuff函数(四个参数)函数将字符串插入另一字符串。

sql,server,2008,计算列规范

sql,server,2008,计算列规范

sql,server,2008,计算列规范篇一:SQL Server 2008 T-SQL语句总结SQL Server 2008中T-SQL语句操作总结---【创建数据库】---(1)一个数据文件、一个日志文件create database db1on(name=RShDB_Data, ----数据库文件的逻辑名称filename=&#39;D:\RShDB_Data.mdf&#39;, ------数据库文件的物理名称(带路径)size=10MB, -----初始大小maxsize=30MB,------最大大小filegrowth=5MB -----自增长大小)log on(name=RShDB_Log,filename=&#39;D:\RShDB_Log.ldf&#39;, size=3MB,maxsize=12MB,filegrowth=2MB)(2)多个数据文件、多个日志文件create database studentson primary(name=students_data1,filename=&#39;D:\students_data1.mdf&#39;, size=5MB,maxsize=unlimited),(name=students_data2,filename=&#39;D:\students_data2.ndf&#39;, size=5MB,maxsize=20MB,filegrowth=2MB)log on(name=students_log1,filename=&#39;D:\students_log1.ldf&#39;, size=2MB,maxsize=6MB,filegrowth=10%),(name=students_log2,filename=&#39;D:\students_log2.ldf&#39;, size=3MB,maxsize=8MB,filegrowth=1MB)(3)创建具有文件组的数据库create database saleson primary(name=spri1_dat,filename=&#39;D:\spri1_dat.mdf&#39;, size=10,maxsize=50,filegrowth=10%),(name=spri2_dat,filename=&#39;D:\spri2_dat.ndf&#39;, size=10,maxsize=50,filegrowth=15%),filegroup salesGroup1(name=SGrp1Fil_dat,filename=&#39;D:\SGrp1Fil_dat.ndf&#39;, size=10,maxsize=50,filegrowth=5),(name=SGrp1Fi2_dat,filename=&#39;D:\SGrp1Fi2_dat.ndf&#39;, size=10,maxsize=50,filegrowth=5),filegroup salesGroup2(name=SGrp2Fi1_dat,filename=&#39;D:\SGrp2Fi1_dat.ndf&#39;, size=10,maxsize=50,filegrowth=5),(name=SGrp2Fi2_dat,filename=&#39;D:\SGrp2Fi2_dat.ndf&#39;, size=10,maxsize=50,filegrowth=5)log on(name=sales_log,filename=&#39;D:\sales_log.ldf&#39;,size=5,maxsize=25,filegrowth=5)总结:(i)先创建数据库文件,再创建日志文件,两者之间不需要逗号隔开,因为日志文件的创建是以log on开头,但是多个数据库文件(包括文件组)或在多个日志文件之间要用逗号隔开,(ii)create database语句中列出的第一个数据库文件将成为主要数据库文件,后缀名是mdf,其他的数据库文件均为次数据库文件,后缀名为ndf;日志文件的后缀名为ldf (iii)在指定涉及大小的参数时(如size\maxsize\filegrowth)要注意的几点:单位:如果没有指定单位只是给出数字的话,那么默认单位就为MB,比较特殊的filegrowth还可以是百分数,表示增长按发生增长时文件大小的百分比增长,总之大小不能超过maxsize就行;取值:(1)filegrowth=0说明不允许自增长;若没有指定filegrowth,那么对于数据文件来说默认都是1MB,而对于日志文件来说默认增长比例是10%,最小值为64KB;(2)maxsize不指定的话默认表示大小无限制,文件可以一直增大,直到磁盘空间满;maxsize=unlimited表示不限制增长,但这个是相对的,对于数据文件最大大小为16TB,对于日志文件最大大小为2TB;(3)size如果是在主数据库文件中未指定,那么默认使用model数据库中主数据库文件的大小,即使指定了那也不能小于model数据库中主数据库文件的大小,而在次数据库文件和日志文件中默认为1MB(4)size\maxsize都要是整数不能是小数---【修改数据库】---(1)扩大数据库空间(之前创建数据库时没有设置自增长,那么时间久了会出现这样的情况)方法一:扩大已有的数据文件或日志文件alter database studentsmodify file(name=students_data1,size=8MB)实现了对数据库students下的主数据文件students_data1由原来的5MB增大到现在的8MB的过程方法二:为数据库添加新的数据文件或日志文件alter database studentsadd file(name=students_data3,filename=&#39;D:\students_data3_ndf&#39;,size=6MB,filegrowth=0)alter database studentsadd log file(name=students_log3,filename=&#39;D:\students_log3.ldf&#39;,size=3MB,maxsize=8MB,filegrowth=1MB)篇二:SQL Server 2008中使用稀疏列和列集的方法SQL Server 2008中使用稀疏列和列集的方法如果你为INSERT 语句写了相同的触发器,那么你将看到INSERT操作出现相同的行为。

SQL Server 的基本T-SQL语句

SQL Server 的基本T-SQL语句

SQL 语句中最最基本的有四个语句,也是最经常用到的语句,分别是:insert语句(插入语句)、select语句(查询语句)、update语句(更新(修改)语句)和delete语句(删除语句)。

在了解这些语句之前,先了解创建表语句。

建表语句最基本的格式如下:Create table 表名(列名1 列类型| 是否关键字| 是否默认空值,列名2 列类型| 是否关键字| 是否默认空值,……)如创建一个用户表:Create table users(I_id int identity(1,1) primary key,S_name varchar(20) null,S_Password varchar(20) null,I_age int null,S_address varchar(50) null)创建了一个包含编号、姓名、密码、年龄、地址的用户表。

其中编号是自动增加的整型字段,并且是主键。

一、insert语句(插入语句)insert语句可以向一个表中添加一个或多个行。

其基本用法有以下几个形式:1、向表中的所有列添加数值格式:Insert into 表名values (‘对应的列值1’,’对应的列值2’,……)如向刚才建立的users表中的所有列(自动增加的编号列除外)插入值为:insert into users values ('张山','123',20,'南宁')2、向表中的指定列添加数值,而不是所有列。

格式:Insert into 表名(指定列名1,指定列名2)values (‘对应的列值1’,’对应的列值2’,……)如只向刚才建立的users表中的姓名列和年龄列插入值为:insert into users(s_name,I_age) values ('李四',23)3、使用insert into……select语句向一个表中添加符合条件的多行数据。

Microsoft SQL Server 2008技术内幕T-SQL语言基础

Microsoft SQL Server 2008技术内幕T-SQL语言基础
FROM HR.Employees
WHERE lastname LIKE N'[^A-E]%';
对于通配符% _ [
可以把它们放在方括号内,而不必使用转义字符
eg:
... where col1 LIKE '%[_]%'
数据类型 存储大小(字节)
DATE 3 0001-01-01 到 9999-12-31 'YYYY-MM-DD'
SELECT PATINDEX('%[0-9]%', 'abcd123efgh')
返回结果为:5
select empid, lastname
LEN(lastname) - LEN(REPLACE(lastname, 'e', '')) AS numoccur
FROM
HR.Employee;
FROM Sales.Orders
ORDER BY custid, rownum
Remark2排序中把null放在最后进行排序
select Remark2 from ORGDTL
order by case when Remark2 IS null then 1 else 0 end
外联接
ISDATE(string)
select * from sys.tables
为每个顾客单独根据订单日期的顺序(用orderID作为附件属性)来计算其订单的行号。
SELECT custid, orderdate, orderid,
ROW_NUMBER() OVER(PARTITION BY custid ORDER BY orderdate, orderid) AS rownum

T-SQL全部语句

T-SQL全部语句

T-SQL语言一、数据库1.创建数据库CREATE DATABASE database_name[ON{[PRIMARY] (NAME=logical_file_name,FILENAME=’os_filename_name’,[,SIZE=size][,MAXSIZE={m ax_size︳UNLIMITED}][,FILEGROWTH=grow_increment])}[,……n]LOG ON(NAME=logical_file_name,FILENAME=’os_filename_name’,[,SIZE=size][,MAXSIZE={max_size︳UNLIMITED}][,FILEGROWTH=grow_increment])}[,……n]][COLLATE collation_name]2.使用T-SQL语句管理数据库(1)打来数据库USE database_name(2)查看数据库信息[EXEC[UTE]]sp_helpdb database_name(3)增长或减少数据库容量ALTER DATABASE database_nameADD FILE (NAME=logical_file_name,FILENAME=’os_filename_name’,[,SIZE=size][,MAXSIZE={max_size︳UNLIMITED}][,FILEGROWTH=grow_increment])ADD LOG FILE (NAME=logical_file_name,FILENAME=’os_filename_name’,[,SIZE=size][,MAXSIZE={max_size︳UNLIMITED}][,FILEGROWTH=grow_increment])MODIFY FILE (NAME=file_name,SIZE=newsize)REMOVE FILE logical_file_name(4)收缩数据库容量DBCC SHRINKDATABASE (database_name)(5)查看数据库选项EXEC sp_dboption (‘database_name’)二、数据表的基本操作1、创建数据表:create table table_name(列定义,计算列定义,表约束定义)2、表的修改与删除:alter table 表名alter column 列名修改表列属性add (列定义,计算列定义,表约束定义)drop column 列名删除列三、数据的基本操作1、数据的添加Insert into table_name (column1,column2,column3, …)Values (‘expression1’,’expression2’,’expression3’, …)2、数据的修改:update table_namesetcolumn_name=…where <search_conditions>3、数据的删除:1)使用DELETE语句删除数据:Delete talbe_nameWhere search_conditions2)使用TRUNCA TE清空表格:Truncate table table_name4、简单查询SELECT语句的基本语法格式:Select select_listInto new_table_nameFrom talbe_listWhere search_conditionsGroup by group_by_listHaving search_conditionsOrder by order_list[ASC | DESC]选择表中的若干列:1)输出表中的部分列:Select column1,column2,…From talbe_name2)输出表中的所有列:Select *From table_name3)输出计算列:(例)Select 姓名,year(getdate()) - year(出生日期)From 学生4)为结果集内的列指定别名:Select 列名(表达式)列别名FROM 数据源Select 列名(表达式)AS 类别名FROM 数据源Select 列别名=列名(表达式)FROM 数据源5、选择表中的若干记录(以实例为例)1)消除取值重复的行Select distinct 学号From 课程Go2)限制返回行数Select top 3 * 或select n percent *From 课程注册返回前三条记录或者表中前20%的记录Go3)查询满足条件的元组比较大小:Where + 条件表达式确定范围:列表达式【NOT】BETWEEN 起始值AND 终止值例:Where 出生日期between ‘1971-01-01’ and ’1980-12-31’确定集合:where [not] in (列表值1,列表值2……)字符匹配:[not] like ‘<匹配串>’【ESCAPE’<换码字符>’】涉及空值的查询:[not] column_name IS NULL多重条件查询:[not] 逻辑表达式and | or [not] 逻辑表达式6、对查询结果排序order by column1[ASC|DESC] , column[ASC|DESC] , …7、对数据进行统计1)使用集合函数Count ( [ distinct | all ] * ) 统计记录个数Count ( [ distinct | all ]<列名> )统计一列中值的个数Sum ( [ distinct | all ]<列名> )统计一列值的总和(此列必须是数值型)Avg ( [ distinct | all ]<列名> )统计一列值的平均值(此列必须是数值型)Max ( [ distinct | all ]<列名> )统计一列值的最大值Min ( [ distinct | all ]<列名> )统计一列值的最小值Distinct 是去掉制定列中的重复值,all是不取消重复值,默认状态下是all。

SQL server 2008 T-SQL语言

SQL server 2008 T-SQL语言
字 段 名 类 型
表5.6 表JY中借书证号字段的重新设计
字 段 名 类 型
借书证号
library_card_num
借书证号
library_card_num
创建用户自定义数据类型的方法如下: (1)使用“对象资源管理器”定义。步骤如下: ① 启动“SQL Server Management Studio”→在“对象资源管理器”中展开“数 据库”→“XSBOOK”→“可编程性”→右击“类型”,选择“新建”选项,再选择 “新建用户定义数据类型”,弹出“新建用户定义数据类型”窗口。 ② 在“名称”文本框中输入自定义的 数据类型名称,如Library_card_num。在 “数据类型”下拉框中选择自定义数据类型 所基于的系统数据类型char。在“长度”栏 中填写要定义的数据类型的长度8。其他选 项使用默认值,如图5.1所示,单击“确定” 按钮即可完成创建。
(5)利用用户自定义数据类型定义字段。 在定义类型后,接着应考虑定义这种类型的字段,同样可以利用“对象资源管 理器”和“T-SQL命令”两种方式实现。读者可以参照第2章进行定义,不同点只是 数据类型为用户自定义类型,而不是系统类型。 例如,在“对象资源管理器”中对于XS表借书证号字段的定义如图5.2所示。

1.系统数据类型 系统数据类型又称为基本数据类型。在第3章已详细地介绍了系统数据类型, 此处不再赘述。 2.用户自定义数据类型 例如:在图书借阅系统中XSBOOK数据库,创建了XS、BOOK、JY三个表,从三 个表的表结构可看出:表XS中的借书证号字段值与表JY中的借书证号字段值应有相 同的类型,均为字符型值、长度可定义为8,并且不允许为空值,为了使用方便, 并使含义明确,可以先定义一数据类型,命名为:library_card_num,用于描述借书 证号的类型属性,然后将表XS中的借书证号字段和表JY中的借书证号字段定义为 library_card_num数据类型。

SQL Server学习笔记--T-SQL语句

SQL Server学习笔记--T-SQL语句
use Mydatabase
select *from 网站职员表 order by 年龄 compute max(工资),min(工资),avg(工资) by 年龄
select *from 网站职员表 order by 毕业院校 compute max(工资),min(工资),avg(工资) by 毕业院校
--右连接(右边表中所有项目都显示,左边表中满足条件才显示)
select *from 网站职员表 right join 网站经营项目 on 网站职员表.职员姓名=网站经营项目.负责人
--全连接(两个表中所有项目都显示)
select *from 网站职员表 full join 网站经营项目 on 网站职员表.职员姓名=网站经营项目.负责人
select *from 网站职员表 where 工资>all(select 工资 from 网站职员表 where 毕业院校='武大')
--top查询
use Mydatabase
select top 6 *from 网站职员表
select top 20 percent *from 网站职员表
select *from 网站职员表 where 毕业院校 like '%大'
select *from 网站职员表 where 毕业院校 like '上%'
select *from 网站职员表 where 毕业院校 like '%海%'
--数据汇总分组查询(by后的字段必须为order by 后的一员)
select *from 网站职员表 where 毕业院校 in('武大','上海交大','华科')

关系数据库与SQL Server 2008第23讲 T-SQL基础知识

关系数据库与SQL Server 2008第23讲 T-SQL基础知识
课堂练习3:查找KC表中课程号为“103”的课程名称,并计算该课程名称的字符数目。
2.常用函数应用
实例7:统计xsqk表中的学生人数,要求显示信息为“学生表中共有XX名学生”。
use xscj --将xscj库切换为当前库
declare @rs smallint --声明变量
select @rs=count(*) from xsqk --给变量赋值
print ‘’ --显示1个空行
print ‘学生表中共有’ + convert(varchar(3), @rs) + ‘名学生’
实例8:已知变量@x中的值为“ABCDefghi”,要求将其转换为大写字母并显示。
declare @x varchar(20) --声明变量
select @x=‘ABCDefghi’ --给变量赋值
实例6:已知@msg的值为“欢迎使用SQL Server2000”,显示该字串的长度。
declare @msg varchar(50) - -声明变量
select @msg=‘欢迎使用SQL Server2000’- -给变量赋值
select len ( @msg ) as字符串的长度- -显示变量的值
print ‘现在的时间是:’+ convert(varchar(30), getdate( ))
六、运算符
1.类型
算术运算符:+ - * / %
位运算符:& (按位与)、| (按位或)、^ (按位互斥)、~(求反)
比较运算符:= < > >= <= <> != !< !>
逻辑运算符:And、or、not、between、in、like、exists、all、any、some

sql server2008,sql常用语句实例汇总

sql server2008,sql常用语句实例汇总

--[1]创建一个登录名pbMaster密码USE masterGO--创建登录名CREATE LOGIN pbMaster WITH PASSWORD='123456'GO--[2]创建数据库用户USE E_MarketGO--MasterDBUser是数据库用户名,pbMaster是登录名CREATE USER MasterDBUser FOR LOGIN pbMasterGO--[3]赋予用户操作权限USE E_MarketGO--为表UserInfo赋予查看,新增,修改的操作权限MasterDBUser数据库用户GRANT SELECT,INSERT,UPDATE ON UserInfo TO MasterDBUserGO--[4]收回新增的操作权限USE E_MarketGOREVOKE INSERT ON UserInfo TO MasterDBUserGO--使用sql语句来查看数据的状态,这里shuhan是数据库SELECT state_desc FROM sys.databases WHERE name='shuhan'--数据类型char和varchar:汉字点两个字节,英文、数字或字符占一个字节性别:男女char(2)或者是varchar(2)nchar和nvarchar:无论是汉字还是英文,数字或字符都占一个性别:男女nchar(1)或者nvarchar(1)固定长度与非固定长度:身份证号:18位长度固定,char(18)或nchar(18)住址:varchar(255)或nvarchar(255)如果住址中存在汉字、数字,nvarchar(255),小说或新闻:text,或ntext--新建数据库create database数据库名create database shuhanON PRIMARY--主文件组(NAME='E_Market_data',--逻辑文件名--物理文件名FILENAME='H:\project\E_Market_data.mdf', SIZE=5MB,--初始大小MAXSIZE=100MB,--最大容量FILEGROWTH=15%--增长率),FILEGROUP FG--创建了一个次文件组(日志) (NAME='E_Market2_data',FILENAME='H:\project\E_Market2_data.ndf', SIZE=4MB,FILEGROWTH=10%)LOG ON--日志文件(NAME='E_Market_log',FILENAME='H:\project\E_Market_log.ldf',SIZE=5MB,FILEGROWTH=0--未启用自动增长),(NAME='E_Market2_log',FILENAME='H:\project\E_Market2_log.ldf',SIZE=3MB,FILEGROWTH=10%,MAXSIZE=100MB)--建人物表的同时建字段create table renwu--create table表名(bianhao int,--编号xingming nvarchar(5),--姓名xingbie nchar(1),--性别zhiwu nvarchar(50),--职务nianling int,--年龄--numeric(),6表示一共占个字符,表示小数位占位gongzi numeric(6,2),--工资buzhu numeric(5,1)--补助)--添加记录--insert into表名values(添加数据)insert into renwu values(1,'刘备','男','主公',40,9999,1000) insert into renwu values(2,'甘夫人','女','夫人',28,8000,500) insert into renwu values(3,'诸葛亮','男','军师',38,9500,650) insert into renwu values(4,'关羽','男','将军',36,7000,700) insert into renwu values(5,'张飞','男','将军',37,6500,400) insert into renwu values(6,'赵子龙','男','将军',30,6500,600) --删除全部记录delete from renwu--按条件删除记录delete from表名where按什么条件--(含条件)删除delete from renwu where bianhao=2--将已删除的数据从新添加insert into renwu(bianhao,xingming,xingbie,zhiwu,nianling,gongzi)values(2,'甘夫人','女','夫人',28,8000) --删除表drop table表名drop table renwu--检测要删除的表是否存在USE shuhanGOSELECT*FROM renwu--如果存在就将其表删除,否则不执行删除语句IF EXISTS(SELECT*FROM sysobjects WHERE name='gsyg')DROP TABLE gsygGO--CHARINDEX:在一个字符串中查找另一个字符串,如果找到返回找到的位置,如果没有找到返回--两个参数,不指定开始位置,默认从开始SELECT CHARINDEX('zxw','')--三个参数,第一个是查找的,第二个是源字符串,第三个是开始查找的位置SELECT CHARINDEX('zxw','',10)--将函数放在查询语句中进行使用--查询“何双呈”的邮箱中"@"符号的位置SELECT CHARINDEX('@',Email)FROM UserInfoWHERE UserName='何双呈'SELECT*FROM UserInfo WHERE UserName='何双呈'--使用CHARINDEX的目的是想把邮箱中的用户名提取出来--LEN:求子符串的长度SELECT LEN(Email)FROM UserInfo WHERE UserName='何双呈'--LEFT从字符串的左边截取指定个数的字符SELECT LEFT(Email,CHARINDEX('@',Email)-1)FROM UserInfo WHERE UserName='何双呈'--REPLACE替换一个字符串的字符SELECT REPLACE('我最喜欢的颜色是白色','白色','绿色')SELECT REPLACE('我最喜欢的颜色是白色','白色','')--如果最后一个参数是空的话,相当于将第二个参数删除--STUFF--参数,源字符串,参数,开始位置,参数,删除的长度,参数是插入的新字符串SELECT STUFF('ABCDEF',2,3,'我要自学网')--查询表select*from表名select*from renwu--查询表中相应字段的数据--select要查询的数据(多个数据用逗号隔开)from表名select bianhao,gongzi from renwu--按条件查询--select要查询的数据(多个数据用逗号隔开)from表名where按什么条件select bianhao,gongzi from renwu--1、查询bianhao,xingming,gongzi并且查询工资大于的select bianhao,xingming,gongzi from renwu where gongzi>7000--查询不含有重复的记录select distinct要查询的数据form表名--distinct表示去除掉重复的select distinct要查询的数据form表名select distinct bianhao form renwu--更改字段的别名select bianhao编号,gongzi工资from renwu--或者select bianhao as'编号',gongzi as'工资'from renwu--显示每个员工的年薪并且把字段以中文的方式显示select xingming姓名,gongzi*12年工资from renwu--计算年总收入(含补助),和空值做四则运算--isnull(buzhu,0)判断是否为空,如果不为空执行逗号前面的,如果为空执行逗号后面的select xingming'姓名',gongzi*12+isnull(buzhu,0)*12'年总收入'from renwu--查询工资在到之间的员工select xingming'姓名',gongzi'工资'from renwu where gongzi>13000and gongzi<=18000 --查询性李的员工,查询第二个字是俊的员工select xingming from renwu where xingming like'李%'select xingming from renwu where xingming like'_俊%'--批量查询select xingming,bianhao from renwu where bianhao in(1,2,3,4,5,6)--查询一把手,也就是头头select xingming,zhiwu from renwu where bianhao is null--排序(order by)默认升序desc降序中文排序按照拼音顺序和音调select xingming,gongzi from renwu order by gongzi desc--降序select xingming,gongzi from renwu order by gongzi--升序--按部门编号升序,按工资降序select xingming,bianhao,gongzi from renwu order by bianhao,gongzi desc--用起临时名的方法算总收入并降序排序select xingming,gongzi*12+isnull(buzhu,0)*12nianxin from renwu order by nianxin desc --显示最高工资和最低工资select max(gongzi)from renwuselect min(gongzi)from renwu--即显示姓名又显示最高工资select xingming,gongzi from renwu where gongzi=(select max(gongzi)from renwu)--显示总工资和平均工资select sum(gongzi)'总工资',AVG(gongzi)'平均工资'from renwuselect xingming,gongzi,(select AVG(gongzi)from renwu)from renwu where gongzi>(select AVG(gongzi)from renwu) --统计有多少记录select count(*)from renwu--统计每个部门的平均工资和总工资,group by表示分类汇总的意思select bianhao,AVG(gongzi),SUM(gongzi)from renwu group by bianhao--按编号分类--显示每个部门每个职务的平均工资和最低工资select bianhao,AVG(gongzi),MIN(gongzi),zhiwu from renwu group by bianhao,zhiwu order by bianhao--显示平均工资低于的部门编号和平均工资.having表示二次筛选select bianhao,AVG(gongzi)from renwu group by bianhao having AVG(gongzi)<9999--日期函数--【1】获得当前系统时间SELECT GETDATE()--【2】DATEADD()参数,指定的日期部分,参数,整数值,参数,有效的日期格式SELECT DATEADD(MM,1,GETDATE())--参数的整数是否允许为负数,允许SELECT DATEADD(MM,-1,GETDATE())--参数的整数值是否允许为小数,直接舍点小数部分取整SELECT DATEADD(MM,1.5,GETDATE())SELECT DATEADD(MM,1.6,GETDATE())SELECT DATEADD(MM,1.4,GETDATE())--【3】DATEDIFF,求两个指定日期之间的差SELECT DATEDIFF(YY,'2008-8-8',GETDATE())--开始日期小于结束日期,那么如果开始日期大于结束日期,结果如何?SELECT DATEDIFF(YY,GETDATE(),'2008-8-8')--【4】DATENAME与DATEPART--DATENAME返回的是日期指定部分的一个字符形式,“+”起的是连接作用,因为“+”号左右都是字符形式SELECT DATENAME(YY,GETDATE())+DATENAME(DD,GETDATE())--DATEPART返回的是日期指定部分的一个数值形式,“+”起的作用是相加运算,是算术运算符SELECT DATEPART(YY,GETDATE())+DATEPART(DD,GETDATE())--数学函数--【1】随机数RAND,如果指定了随机种子,那么返回的随机数都相同,--如果没有指定随机种子,那么系统自动分配,所以每次的返回值都不相同SELECT RAND(100)SELECT RAND(100)SELECT RAND()SELECT RAND()--【2】CEILING:英文意思是天花板,正数进位取大值,负数舍小数取大值SELECT CEILING(9.000001)SELECT CEILING(-9.000001)--【3】FLOOR:英文意思是地板,正数舍小数取小值,负数进位取小值SELECT FLOOR(9.999999)SELECT FLOOR(-9.000001)--【4】ROUND:对数值进行四舍五入SELECT ROUND(123.565,2)SELECT ROUND(-123.434,2)--【5】ABS取绝对值,正数的绝对值是本身,负数的绝对值是相反数,的绝对值是SELECT ABS(434)SELECT ABS(-987)SELECT ABS(0)--【6】系统函数CONVERT用于数据类型转换--将字符型转为数值型SELECT CONVERT(int,'12')+CONVERT(int,'10')--+号起的是算术运算,相加运算--将数值型转为字符型SELECT CONVERT(varchar(2),12)+CONVERT(varchar(2),10)--+号是连接运算符,起连接作用--将日期型转为字符型SELECT CONVERT(varchar(10),GETDATE(),102)SELECT CONVERT(varchar(10),GETDATE(),112)--修改--update表明set修改数据(多数据的用逗号隔开)where按什么条件--如果条件是空则必须是where us nullupdate gsyg set nianling=23where bianhao=2--主键--primary Key表示主键,其特性是(不能重复,不能为空) create database shuihucreate table bumen(bianhao int primary Key,mingcheng nvarchar(10),didian nvarchar(20))create table renyuan(paihang int primary Key,xingming nvarchar(20),zhiwu nvarchar(20),shangji int,ruzhishijian datetime,gongzi numeric(6,1),buzhu numeric(5,1),--foreign Key references表示外键bianhao int foreign Key references bumen(bianhao))--多表查询--笛卡尔集现象--语法:select*from表名,表名select*from renwu,bumen--主、外键不相符的查询select*from renwu,bumen where bumen.mingcheng=条件--主、外键一致的查询select*from renwu,bumen where bumen.mingcheng=条件and renwu.bianhao=bumen.bianhao--显示编号相同的数据select*from renwu,bumen where renwu.bianhao=bumen.bianhao--显示姓名和所在部门以及部门编号select xingming,mingcheng,renwu.bianhao from renwu,bumen where renwu.bianhao=bumen.bianhao--复杂查询--如显示李逵的上级select shangji from renwu where xingming='李逵'--显示编号select xingming from renwu paihang=(select shangji from renwu where xingming='李逵')--显示姓名--子查询--1、单行子查询select ename,deptno,sal from emp where deptno=(select deptno from dept where loc='NEW YORK');--2、多行子查询SELECT ename,job,sal FROM EMP WHERE deptno in(SELECT deptno FROM dept WHERE dname LIKE'A%');--3、多列子查询SELECT deptno,ename,job,sal FROM EMP WHERE(deptno,sal)IN(SELECT deptno,MAX(sal)FROM EMP GROUP BY deptno);--4、内联视图子查询(1)SELECT ename,job,sal,rownum FROM(SELECT ename,job,sal FROM EMP ORDER BY sal);(2)SELECT ename,job,sal,rownum FROM(SELECT ename,job,sal FROM EMP ORDER BY sal)WHERE rownum<=5;--5、在HAVING子句中使用子查询SELECT deptno,job,AVG(sal)FROM EMP GROUP BY deptno,job HAVING AVG(sal)>(SELECT sal FROM EMP WHERE ename='MARTIN');--显示所有员工及上级的姓名,这里a和b是自定义的别名select a.xingming'姓名',b.xingming'上级'from renwu a,renwu b where a.shangji=b.paihang --分页查询--显示个到个入职的员工select top5xingming,zhiwu,gongzi from renwu order by gongzi--显示到个入职的员工,not in(不包含)select top3xingming,gongzi from renwu where bianhao not in(select top3bianhao from renwu order by gongzi)order by gongzi--删除重复记录--创建表create table xiaobiao(xbbh int,xbxm varchar(10))insert into xiaobiao values(1,'xb1')insert into xiaobiao values(2,'xb2')select*from xiaobiao--执行删除--这里的sb是临时表select distinct*into lsb from xiaobiaodelete from xiaobiaoinsert into xiaobiao select*from lsbdrop table lsb--内连接与外连接select a.xingming'姓名',b.xingming'上级'from renwu a,renwu b where a.shangji=b.paihang--左外连接和右外连接,left join左边的全部显示出来,右边跟着左边来有的显示,没有显示null select a.xingming'姓名',b.xingming'上级'from renwu a left join renwu b on a.shangji=b.paihang --约束--约束分为not null unique(唯一)primary Key(主键)foreign Key(外键)checkcreate table biao(dbbh int primary Key,dbxm varchar(20)unique,dbmm varchar(20)not null,nianling int)select*from biaoinsert into biao(dbxm,dbmm)values('贾宝玉','jiabaoyu')insert into biao(dbxm,nianling)values('贾宝玉',20)create table dabiao(dbbh int,dbxm varchar(20)unique,nianling int check(nianling>=20and nianling<=30))select*from dabiaoinsert into dabiao values(1,'贾宝玉',20)--默认defaultcreate table zhongbiao(dbbh int primary Key,nianling int check(nianling>=20and nianling<=30)default25) select*from zhongbiaoinsert into zhongbiao(dbbh)values(1001)insert into zhongbiao values(1002,25)insert into zhongbiao values(1003,20)--备份数据库backup database数据库名to disk='e:/数据库名.bak'--还原数据库restore database数据库名from disk='e:/数据库名.bak'--附加和分离数据库--分离数据库exec sp_detach_db'MySchool'--附加数据库exec sp_attach_db@dbname='MySchool',@filename1='e:\MyApp\MySchool.mdf',@filename2='e:\MyApp\MySchool_log.ldf'Binary类型:。

第7章 SQL Server 2008的T-SQL I

第7章 SQL Server 2008的T-SQL I

2.数据库文件
(1)主数据文件Primary:存放数据,每个数 据库都必须有一个主数据文件。 (2)其他数据文件(Secondary):也用来存 放数据,一个数据库可以没有也可以有多个 Secondary文件。 (3)事务日志文件(Transaction Log):存放 事务日志,每个数据库必须有一个或多个日志 文件。
第7章 SQL Server 2008的T-SQL I
Chapter 7 T-SQL I of SQL Server 2008
本章重点 本章主要介绍了SQL Server的数据库、 数据表、数据更新、数据查询、视图和函 数,要求学生重点掌握T-SQL语言的数据 定义和数据操纵功能,掌握视图的作用和 用法,了解函数的使用方法。
4)Msdb数据库:它主要被SQL Server Agent用 来进行复制、作业调度以及管理报警等活动,也 可通过调度任务来排除故障。
(2)用户数据库 用户数据库可以利用CREATE
DATABASE语句来建立;也可以在进入SQL Server Management Studio后,通过右击 对象资源管理器中的“数据库”,再选 “新建数据库”来建立。
SQL Server 2008在安装时还自动创建 了另外两个数据库:AdventureWorks和 AdventureWorksDW,它们是SQL Server的 样本数据库。
7.1.2 创建用户数据库
1、在查询分析器中创建数据库
Create database 15480030201 ON ( NAME =15480030201,
2、在对象资源管理器中管理数据库
在进入SQL Server Management Studio后,通过点击对象资源管理器中 “数据库”左边的+符号,展开“数据 库”,选中要管理的用户数据库并右击 此数据库,在弹出的快捷菜单中根据需 要选择要管理的项目即可。

Sqlserver2008 学习笔记(自己总结)

Sqlserver2008  学习笔记(自己总结)
1
2、SQL 2008 视频教程-系统数据库 Master(主) Model(模型) Tempdb (临时数据库) Msdb(MS 数据库) 3、T-SQL 创建数据库详解
4、T-SQL 语句 3 (T-SQL 语句浏览表格(教师表)) Select * from 教师表 --表示浏览教师表里所有的信息
运行结果对比:
8
9
10
查询的顺序 (非常重要!!!)
11
习题集 第一个习题 求出每个员工的 姓名 部门编号 薪水 和 薪水的等级
第二个习题 查找每个部门的编号 该部门所有员工的平均工资 平均工资的等级
第三个习题 查找每个部门的编号 部门名称 该部门所有员工的平均工资 平均工资的等级
第四个习题 求出 emp 表中所有领导的信息
15
8. 约束、索引和视图
约束(主键(即关键字),外键(外部关键字),唯一键,非空,
check,default ,触发器)
索引
唯一的索引 (Unique Index) 在表格上面创建某一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
16
CREATE UNIQUE INDEX 索引名称 ON 表名称 (列名称) create unique index teacher_index on teacher (teacher_address) --在 teacher 表中 teacher_address 字段创建了一个唯一的索引 (名称为 teacher_index)
视图
为什么需要视图:
17
注意:不能一次执行,应该创建完视图后执行以下,再执行下面的 代码
9.T-SQL 编程
所以一般来说,如果含有中文字符,用 nchar/nvarchar,如果 纯英文和数字,用 char/varchar。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL Server 2008中T-SQL语句操作总结---【创建数据库】---(1)一个数据文件、一个日志文件create database db1on(name=RShDB_Data, ----数据库文件的逻辑名称filename='D:\RShDB_Data.mdf', ------数据库文件的物理名称(带路径)size=10MB, -----初始大小maxsize=30MB, ------最大大小filegrowth=5MB -----自增长大小)log on(name=RShDB_Log,filename='D:\RShDB_Log.ldf',size=3MB,maxsize=12MB,filegrowth=2MB)(2)多个数据文件、多个日志文件create database studentson primary(name=students_data1,filename='D:\students_data1.mdf',size=5MB,maxsize=unlimited),(name=students_data2,filename='D:\students_data2.ndf', size=5MB,maxsize=20MB,filegrowth=2MB)log on(name=students_log1,filename='D:\students_log1.ldf', size=2MB,maxsize=6MB,filegrowth=10%),(name=students_log2,filename='D:\students_log2.ldf', size=3MB,maxsize=8MB,filegrowth=1MB)(3)创建具有文件组的数据库create database saleson primary(name=spri1_dat,filename='D:\spri1_dat.mdf',size=10,maxsize=50,filegrowth=10%),(name=spri2_dat,filename='D:\spri2_dat.ndf', size=10,maxsize=50,filegrowth=15%),filegroup salesGroup1(name=SGrp1Fil_dat,filename='D:\SGrp1Fil_dat.ndf', size=10,maxsize=50,filegrowth=5),(name=SGrp1Fi2_dat,filename='D:\SGrp1Fi2_dat.ndf', size=10,maxsize=50,filegrowth=5),filegroup salesGroup2(name=SGrp2Fi1_dat,filename='D:\SGrp2Fi1_dat.ndf', size=10,maxsize=50,filegrowth=5),(name=SGrp2Fi2_dat,filename='D:\SGrp2Fi2_dat.ndf', size=10,maxsize=50,filegrowth=5)log on(name=sales_log,filename='D:\sales_log.ldf',size=5,maxsize=25,filegrowth=5)总结:(i)先创建数据库文件,再创建日志文件,两者之间不需要逗号隔开,因为日志文件的创建是以log on开头,但是多个数据库文件(包括文件组)或在多个日志文件之间要用逗号隔开,(ii)create database语句中列出的第一个数据库文件将成为主要数据库文件,后缀名是mdf,其他的数据库文件均为次数据库文件,后缀名为ndf;日志文件的后缀名为ldf(iii)在指定涉及大小的参数时(如size\maxsize\filegrowth)要注意的几点:单位:如果没有指定单位只是给出数字的话,那么默认单位就为MB,比较特殊的filegrowth 还可以是百分数,表示增长按发生增长时文件大小的百分比增长,总之大小不能超过maxsize 就行;取值:(1)filegrowth=0说明不允许自增长;若没有指定filegrowth,那么对于数据文件来说默认都是1MB,而对于日志文件来说默认增长比例是10%,最小值为64KB;(2)maxsize不指定的话默认表示大小无限制,文件可以一直增大,直到磁盘空间满;maxsize=unlimited表示不限制增长,但这个是相对的,对于数据文件最大大小为16TB,对于日志文件最大大小为2TB;(3)size如果是在主数据库文件中未指定,那么默认使用model数据库中主数据库文件的大小,即使指定了那也不能小于model数据库中主数据库文件的大小,而在次数据库文件和日志文件中默认为1MB(4)size\maxsize都要是整数不能是小数---【修改数据库】---(1)扩大数据库空间(之前创建数据库时没有设置自增长,那么时间久了会出现这样的情况)方法一:扩大已有的数据文件或日志文件alter database studentsmodify file(name=students_data1,size=8MB)实现了对数据库students下的主数据文件students_data1由原来的5MB增大到现在的8MB 的过程方法二:为数据库添加新的数据文件或日志文件alter database studentsadd file(name=students_data3,filename='D:\students_data3_ndf',size=6MB,filegrowth=0)alter database studentsadd log file(name=students_log3,filename='D:\students_log3.ldf',size=3MB,maxsize=8MB,filegrowth=1MB)(2)收缩数据库空间(指的是释放数据库中未使用的空间)方法一:收缩整个数据库的大小DBCC shrinkdatabase(students,20)实现对数据库students的收缩,是该数据库中所有文件都有20%的可用空间方法二:收缩指定文件的大小DBCC shrinkfile(students_data1,4)将students数据库中的students_data1文件收缩到4MB----【删除数据库文件或数据库】---(1)删除数据文件alter database students remove file students_data1(2)删除日志文件alter database students remove file students_Log1(3)删除整个数据库drop database students---【分离和附加数据库】----实现数据库从一台数据库服务器转移到另一台数据库服务器,而不需要重新创建数据库的目的分离:是指将数据库从SQL Server实例中删除,但不删除数据库中的数据文件以及日志文件,这与删除数据库不同附加:与分离对应(1)分离students数据库,并跳过“更新统计信息”exec sp_detach_db 'students','true'(2)附加之前已经分离的students数据库create database students on(filename='F:\students_data1.mdf') for attach(3)如果之前分离的数据库中主数据库文件和次数据库文件以及日志文件不是在同一目录下create database studentson(filename='F:\students_data1.mdf'),(filename='F:\students_data2.ndf'),(filename='F:\students_Log1.ldf')for attachuse Test;--【Create】----创建一个学生表--create table student(sno char(9) primary key,sname char(20) unique,----(用户自定义完整性,还有not null、check)ssex char(2),sage smallint,sdept char(20),sxxx as (sage-2),---SQL Server支持”计算列“的创建check(ssex in('M','F') and sname not like 'Ms.%')--SQL中的字符、字符串都要用单引号;注意check约束的写法);注意:check约束只能实现同一个表中各列之间的取值约束,要实现更为复杂的check约束就要用到后面讲到的触发器了注意:在向含有计算列的表中执行插入数据操作时候要注意如下insert into student values('10003','张网','F',20,'计科系');---插入成功(计算列不用管,因为它是系统自动计算出来的)insert into student(sno,sname,ssex,sage,sdept) values('10003','张网','F',20,'计科系');---效果同上insert into student(sno,sname,ssex,sage,sdept,sxxx) values('10004','李丽','F',20,'计科系',12);---会报错,计算列不能认为指定值--创建”课程“表(参照表和被参照表可以是同一个表)--create table course(id int identity(1,1),--设置自增长,种子值为1,增量值为1即1、2、3、4...依此类推cno char(4) primary key,----(主码约束--->实体完整性)cname char(40),cpno char(4),ccredit smallint not null check(ccredit>=0) default 0,---一个字段若有多个约束时要以“空格”隔开foreign key (cpno) references course(cno)----(外码约束--->参照完整性)注意这里都要有括号,关键字是references而不是reference,而且后面没有from------);--建立选课表--create table sc(sno char(9),cno char(4),grade smallint,primary key (sno,cno),---主码由2个属性组成,所以要定义才表级完整性约束----foreign key (sno) references student(sno),--on delete cascade表示删除被参照表student表中的元组时,会级联删除该表中相应的元组(默认不写的情况下是no action即不级联操作)--on update cascade表示更新被参照表student表中的元组时,会级联更新该表中相应的元组(默认不写的情况下是no action即不级联操作)foreign key (cno) references course(cno)--on delete cascade同上--on update cascade同上);--【Alter】----向student表中增加“入学时间列”,数据类型为日期--alter table student add s_entrance date;---默认追加到末尾字段-----将student表中“年龄”的数据类型修改为整数型(不管原来该字段的约束是什么,该句执行后产生的是覆盖的效果)--alter table student alter column sage int;--注意有2个alter----对course表中的“课程名”字段增加取值唯一的约束条件--alter table course add unique(cname);--【Drop】----删除student表--drop table student;--如果同时删除多个表,中间用逗号隔开----执行该句会报错,因为该表正由一个FOREIGN KEY 约束引用(也就是说student表是主表,sc表是从表)。

相关文档
最新文档