内容发布更新时间 : 2024/11/2 15:32:51星期一 下面是文章的全部内容请认真阅读。
mssql sql简明教程
mssql sql简明教程2010-07-23 18:20/*下面的例子将创建表S。*/CREATE TABLE S(sno char(10)NOT NULL/*学号字段*/CONSTRAINT PK_sno PRIMARY KEY CLUSTERED/*主键约束*/CHECK(sno like'31300501[0-9][0-9]')/*检查约束*/,sname char(8)NULL,/*姓名字段*/sex char(2)NULL,/*性别字段*/age int NULL,/*年龄字段*/dept varchar(20)NULL/*系别字段*/)/*修改S表,增加一个班号列。*//*程序清单如下:*/ALTER TABLE SADD CLASS_NO CHAR(6)/*删除S表。*//*程序清单如下:*/DROP table S/*在S表中插入一条学生记录(学号:S7;姓名:郑冬;性别:女;年龄:21;系别:计算机)。*//*程序清单如下:*/INSERT INTO SVALUES('3130050107','郑冬','女',21,'计算机')/*创建SC表(学生选课表),并向SC表中插入一条选课记录('S7','C1')。*//*程序清单如下:*/CREATE TABLE SC(sno char(10)NOT NULL,cno char(2)NULL,/*课程编号字段*/score numeric(4,1)NULL/*成绩字段*/)Go INSERT INTO
SC(sno,cno)VALUES('3130050101','c1')Go/*使用column_list及VALUES列表显式地指定将被插入每个列的值。*//*程序清单如下:*/CREATE TABLE T1(column_1 int,column_2 varchar(30))Go INSERT T1(column_2,column_1)VALUES('This is atest',1)/*求出各位学生的平均成绩,把结果存放在新表AVGSCORE中。程序清单如下:*//*首先建立新表AVGSCORE,用来存放学号和学生的平均成绩。*/CREATE TABLE AVGSCORE(SNO CHAR(10),AVGSCORE SMALLINT)Go/*利用子查询求出SC表中各位学生的平均成绩,把结果存放在新表AVGSCORE中。*/INSERT INTO AVGSCORE SELECT SNO,AVG(SCORE)FROM SC GROUP BY SNO/*一个带有WHERE条件的修改语句。*//*程序清单如下:*/use adventureworks go update person.address set city='Boston'where addressid=1/*将所有学生年龄增加1岁*//*程序清单如下:*/UPDATE SSET AGE=AGE+1/*下面的示例修改SalesPerson表中的SalesYTD列,以反映SalesOrderHeader表中记录的最近销售情况。*//*程序清单如下:*/USE AdventureWorks;GO UPDATE Sales.SalesPerson SET
SalesYTD=SalesYTD+SubTotal FROM Sales.SalesPerson AS sp JOIN
Sales.SalesOrderHeader AS so ON sp.SalesPersonID=so.SalesPersonID AND so.OrderDate=(SELECT MAX(OrderDate)FROM Sales.SalesOrderHeader WHERE SalesPersonID=sp.SalesPersonID)/*将UPDATE语句与TOP子句一起使用,更新Employee表中10个随机行的VacationHours列,使之变成原来的1.25倍。*//*程序清单如下:*/USE AdventureWorks;GO UPDATE
TOP(10)HumanResources.Employee SET VacationHours=VacationHours*1.25/*创建T表(教师基本情况表)的结构为T(TNO,TN,SEX,AGE,PROF,SAL,DEPT)分别表示教师的编号,姓名,性别,年龄,职称,工资,系别。TC表(教师授课表)的结构为
TC(TNO,CNO)分别表示教师的编号,课程编号。*/USE example GO CREATE TABLE t(TNO char(10)NOT NULL CONSTRAINT PK_TNO PRIMARY KEY,/*教师编号字段*/TN char(10)NULL,/*教师姓名字段*/SEX char(2)NULL,/*教师性别字段*/AGE int NULL,/*教师年龄字段*/PROF char(20)NULL,/*教师职称字段*/SAL int NULL,/*教师工资字段*/DEPT char(10)NULL,/*教师所在系别字段*/)GO INSERT INTO tVALUES('0001','张老师','男',41,'副教授',2200,'电力系')GO INSERT INTO tVALUES('0002','张益琳','女',32,'讲师',1500,'动力系')GO CREATE TABLE TC(TNO char(10)NOT NULL,/*教师编号字段*/CNO char(10)NULL,/*教师执教课程字段*/)GO INSERT INTO tc VALUES('0001','C5')GO/*把讲授C5课程的教师的工资增加100元。*//*程序清单如下:*/UPDATE TSET SAL=SAL+100 WHERE TNO IN(SELECT T.TNO FROM T,TC WHERE T.TNO=TC.TNO AND TC.CNO='C5')/*通过连接查询找到讲授C5课程的教师编号。*//*把所有教师的工资提高到平均工资的1.2倍*//*程序清单如下:*/UPDATE TSET SAL=(SELECT 1.2*AVG(SAL)FROM T)/*删除张益琳教师的记录。*//*程序清单如下:*/DELETE FROM TWHERE TN='张益琳'/*删除所有教师的授课记录。*//*程序清单如下:*/DELETE FROM TC/*删除李明同学选课的记录。*/DELETE FROM SC WHERE SNO=(SELECT SNO FROM SWHERE sname='李明')/*给用户Mary授予多个语句权限。*//*程序清单如下:*/GRANT CREATE
DATABASE,CREATE TABLE TO Mary/*为用户ZhangYiLin授予CREATE TABLE的语句权限。*//*程序清单如下:*/GRANT CREATE TABLE TO ZhangYiLin/*在权限层次中授予对象权限。首先,给所有用户授予SELECT权限,然后,将特定的权限授予用户Mary、John和Tom*//*程序清单如下:*/GRANT SELECT ON s/*需先创建s表*/TO public GO GRANT INSERT,UPDATE,DELETE ON sTO Mary,John,Tom/*需首先创建用户Mary,John,Tom*/GO/*将查询T表和修改教师职称的权限授予USER3,并允许将此权限授予其他用户。*//*程序清单如下:*/GRANT SELECT,UPDATE ON TTO user3 WITH grant OPTION/*上例中,USER3具有此对象权限,并可使用GRANT命令给其他用户授权,如下例,USER3将此权限授予USER4:*/GRANT
SELECT,UPDATE(PROF)ON TTO USER4/*收回用户USER1对jobs表的查询权限。*//*程序清单如下:*/REVOKE SELECT ON jobs FROM mary/*收回用户mary查询T表和修改教师职称的权限。*//*程序清单如下:*/REVOKE SELECT,UPDATE(PROF)ON TFROM mary/*首先从public角色中收回SELECT权限,然后,收回用户Mary,Jhon和Tom的特定权限。*//*程序清单如下:*/REVOKE SELECT ON sFROM public GO REVOKE INSERT,UPDATE,DELETE ON sFROM Mary,John,Tom/*首先给public角色授予SELECT权限,然后拒绝用户Mary、John和Tom的特定权限*//*程序清单如下:*/GRANT SELECT ON sTO public GO DENY SELECT,INSERT,UPDATE,DELETE ON sTO Mary,John,Tom/*使用两种注释类型的例子。*//*程序清单如下:*/USE
AdventureWorks GO--First line of amultiple-line comment.--Second line of amultiple-line comment.SELECT*FROM person.address GO/*注释语句的第一行.注释语句的第二行.*/SELECT*FROM Production.Product GO--在Transact-SQL语言调试过程中使用注释语句。SELECT title,/*birthdate,*/hiredate FROM humanresources.employee--在代码后面加上注释。USE AdventureWorks GO
UPDATE sales.salesorderdetail SET unitprice=unitprice*.9--降低价格以提高
市场份额。GO/*创建一个@myvar变量,然后将一个字符串值放在变量中,最后输出@myvar变量的值。*//*程序清单如下:*/DECLARE@myvar
char(20)select@myvar='This is atest'SELECT@myvar GO/*通过查询给变量赋值。*//*程序清单如下:*/USE adventureworks GO DECLARE@rows int
SET@rows=(SELECT COUNT(*)FROM humanresources.employee)/*在SELECT语句中使用由SET赋值的局部变量。*//*程序清单如下:*/USE adventureworks GO DECLARE@phone char(12)SET@phone='398-555-0132'SELECT
RTRIM(firstname)+''+RTRIM(lastname)AS Name,phone FROM person.contact WHERE phone=@phone GO/*显示到当前日期和时间为止试图登录SQL Server的次数。*//*程序清单如下:*/SELECT GETDATE()AS'当前的时期和时间
',@CONNECTIONS AS'试图登录的次数'/*在FirstColumnHeading列标题中为所有的行都显示字符串xyz,然后,在SecondColumnHeading列标题中列出来自Products表的每个产品ID。*//*程序清单如下:*/USE adventureworks GO DECLARE@phone char(12)SET@phone='398-555-0132'SELECT
RTRIM(firstname)+''+RTRIM(lastname)AS Name,phone FROM person.contact WHERE phone=@phone GO/*创建一个具有int数据类型的表以显示值,并将该表放入一行中。*//*程序清单如下:*/CREATE TABLE t1(a int NOT NULL,b int NOT NULL)INSERT t1 VALUES(170,75)/*下面的查询在a列和b列上执行按位AND运算。*/SELECT a&b FROM t1/*在SET语句使用的表达式中,括号使其首先执行加法,表达式的结果为18。*//*程序清单如下:*/DECLARE@MyNumber int
SET@MyNumber=2*(4+5)SELECT@MyNumber/*通过行集函数OPENQUERY()执行一个分布式查询,以便从服务器local中提取表department中的记录。*//*程序清单如下:*/select*from openquery(SERVER,'select*from Northwind.customers')/*计算Adventure Works Cycles的副总所用的平均休假小时数以及总的病假小时数。对检索到的所有行,每个聚合函数都生成一个单独的汇总值。*//*程序清单如下:*/USE AdventureWorks;GO SELECT AVG(VacationHours)as'Average vacation hours',SUM(SickLeaveHours)as'Total sick leave hours'FROM
HumanResources.Employee WHERE Title LIKE'Vice President%'/*下列语句返回产品的平均标价。如果不使用DISTINCT,AVG函数将计算出Production.Product表中所有产品的平均价格*//*程序清单如下:*/USE AdventureWorks;GO SELECT AVG(DISTINCT ListPrice)FROM Production.Product/*下面的示例查找居住在不同城市的人员数量*//*程序清单如下:*/USE adventureworks GO SELECT
COUNT(DISTINCT city)FROM person.address GO/*返回production.product表中成本最高的产品以及价格的标准偏差。*//*程序清单如下:*/USE adventureworks GO SELECT MAX(standardcost),STDEV(listprice)FROM production.product/*使用LTRIM函数删除字符变量中的起始空格。*//*程序清单如下:
*/DECLARE@string_to_trim varchar(60)SET@string_to_trim='Five spaces are at the beginning of this string.'SELECT'Here is the string without the leading spaces:'+LTRIM(@string_to_trim)/*使用可选的start_location参数从addressline1列的第2个字符开始查找\程序清单如下:*/USE adventureworks SELECT CHARINDEX('shoe',addressline1,2)FROM