sql常用语句100例
常用sol语句

else
response.write "数字"
end if
SELECT 值,值,值... UNION
SELECT 值,值,值... UNION
SELECT 值,值,值...
比如:INSERT INTO Student
SELECT 'jack','男',24,'jack@','starRoad 100#' UNION
SELECT 'tom','女',23,'tom@','starRoad 198#'
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
--对列更名方式有3种
--第一种
SELECT StuID AS 学号,StuName AS 姓名, Sex AS 性别
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
SQL常用语句,子查询整理

SQL常用语句,子查询整理一、SQL子查询语句1、单行子查询select ename,deptno,salfrom empwhere deptno=(select deptno from dept where loc='NEW YORK');2、多行子查询SELECT ename,job,salFROM EMPWHERE deptno in ( SELECT deptno FROM dept WHERE dname LIKE 'A%');3、多列子查询SELECT deptno,ename,job,salFROM EMPWHERE (deptno,sal) IN (SELECT deptno,MAX(sal) FROM EMP GROUP BY deptno);4、内联视图子查询(1)SELECT ename,job,sal,rownumFROM (SELECT ename,job,sal FROM EMP ORDER BY sal);(2)SELECT ename,job,sal,rownumFROM ( SELECT ename,job,sal FROM EMP ORDER BY sal)WHERE rownum<=5;5、在HA VING子句中使用子查询SELECT deptno,job,A VG(sal) FROM EMP GROUP BY deptno,job HA VING A VG(sal)>(SELECT sal FROM EMP WHERE ename='MARTIN');6、内连接左连接右连接举例;select sys_er_id ,sys_er_code from sys_user inner join XZFW_BANJIE on sys_er_id=XZFW_erid小例子:select top 10 * from sys_user where user_code not in (select user_code from sys_user where user_code like '%yzj%')select top 2 * from (select top 2 * from ers order by us_username desc) users order by us_username desc7、删除约束语句:alter table dbo.XZFW_SYS_USER drop CONSTRAINT FK1772E1891324F6788、记录数查询select count(user_pass) from sys_userselect count(*) from sys_user where user_code!='admin'9、在范围之间取值( between ... and ..用法)select sys_er_id,sys_er_name,xzfw_shoujian.caseid from sys_user inner join xzfw_shoujian on sys_er_id=xzfw_erid where user_id between 5 and 100或select * from sys_user where user_id<10 and user_id>1二、SQL基本语句下列语句部分是Mssql语句,不可以在access中使用。
SQL操作语句

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 约束)或者绑定到别名数据类型。
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。
sql语句常用公式

sql语句常用公式1. 嘿,你知道吗?查询所有数据的SQL语句就像打开一个装满宝藏的宝箱,那就是“SELECT * FROM 表名;”。
比如说我有个学生信息表叫students,我想看看所有学生的信息,就用“SELECT * FROM students;”,一下子所有信息都出来啦,超方便的!2. 要按条件查询数据啊,这就好比在一群人中找特定的小伙伴。
“SELECT 列名 FROM 表名 WHERE 条件;”。
像在商品表products里找价格大于50元的商品,就写“SELECT name FROM products WHERE price > 50;”,是不是很简单?3. 想给查询结果排序吗?这就像整理书架,把书按顺序排好。
“SELECT 列名 FROM 表名 ORDER BY 列名[ASC|DESC];”。
要是在成绩表scores里按分数从高到低排,就是“SELECT student_name, score FROM scores ORDER BY score DESC;”,哇,这样看成绩排名就很清晰了。
4. 限定查询结果的数量就像从一大袋糖果里只拿几颗。
“SELECT 列名 FROM 表名 LIMIT 数量;”。
例如我在新闻表news里只想看最新的5条新闻,那就“SELECT title FROM news LIMIT 5;”,超酷的操作呢!5. 对查询结果进行分组?这就好比把动物按种类分类。
“SELECT 列名, 聚合函数(列名) FROM 表名 GROUP BY 列名;”。
在销售表sales 里按产品类别统计销售额,就用“SELECT product_type,SUM(sales_amount) FROM sales GROUP BY product_type;”,感觉自己像个数据小管家呢。
6. 多表联合查询就像是把不同家庭的信息合并起来。
“SELECT 列名 FROM 表1 JOIN 表2 ON 表1.列名 = 表2.列名;”。
sql包含的语句

sql包含的语句SQL(Structured Query Language)是用于管理关系型数据库的标准化语言。
它可以用于查询、插入、更新和删除数据库中的数据。
下面将列举10个常见的SQL语句及其用途。
1. SELECT语句:SELECT语句用于从数据库中检索数据。
它可以检索特定的列或所有列,并可以进行条件筛选、排序和分组。
例如:SELECT * FROM employees;SELECT name, age FROM customers WHERE country='China';2. INSERT INTO语句:INSERT INTO语句用于向数据库中插入新的行。
可以指定要插入的表、要插入的列和要插入的值。
例如:INSERT INTO customers (name, age, country) VALUES ('Alice', 25, 'USA');3. UPDATE语句:UPDATE语句用于更新数据库中的现有行。
可以指定要更新的表、要更新的列和更新的值,还可以使用WHERE子句来指定更新的条件。
例如:UPDATE employees SET salary=5000 WHERE department='IT';4. DELETE FROM语句:DELETE FROM语句用于从数据库中删除行。
可以指定要删除的表和要删除的条件。
例如:DELETE FROM customers WHERE country='China';5. CREATE TABLE语句:CREATE TABLE语句用于创建新的数据库表。
可以指定表的名称、列的名称和数据类型以及其他约束。
例如:CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),age INT,department VARCHAR(50));6. ALTER TABLE语句:ALTER TABLE语句用于修改现有的数据库表。
50个常用sql语句实例(学生表 课程表 成绩表 教师表)

Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2))前面加一列序号:ifexists(select table_name from information_schema.tableswhere table_name='Temp_Table')drop table Temp_Tablegoselect 排名=identity(int,1,1),* INTO Temp_Table from Studentgoselect * from Temp_Tablegodrop database [ ] --删除空的没有名字的数据库问题:1、查询“”课程比“”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“”并且也学过编号“”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC whereStudent.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher whereTeacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“”的成绩比课程编号“”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002') group by S# having count(*)=(select count(*) from SC whereS#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“”课程的同学学号、、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(),马克思(),OO&UML (),数据库()SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第名到第名的学生成绩单:企业管理(),马克思(),UML (),数据库()[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩> T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname havingcount(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) as agefrom studentwhere CONVERT(char(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname havingavg(score)>85;34、查询课程名称为“数据库”,且分数低于的学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C# ;38、查询课程编号为且课程成绩在分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC whereC#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过人的课程才统计)。
SQL语句-创建索引

实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:
我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。
我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
通过以上例子,我们可以理解到什么是“聚集索引”和“非聚集索引”。
SQL语句-创建索引 语法:
CREATE [索引类] INDEX 索引名称
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO
/*实例*/
USE 库名
GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--update phoneinfo set cityname = '克孜勒苏柯尔克孜' where cityname = '克孜勒苏柯尔克孜州'
--update phoneinfo set cityname = '湘西' where pad1 = '湖南 吉首'
select * from dbo.PhoneInfo
--update dbo.PhoneInfo set provincename=b.provincename,cityname=b.cityname from dbo.PhoneInfo a,PhoneInfo_hl b
--where a.phonebound=b.phonebound
--select * from dbo.UnknowPhoneBound
--select * from dbo.Area
--select * from phoneinfo a, phoneinfo_old b, phoneinfo_hl c where a.phonebound = b.phonebound and a.phonebound = c.phonebound and (a.cityname <> b.cityname or a.cityname <> c.cityname)
--select * from phoneinfo a, phoneinfo_hl b where a.phonebound = b.phonebound and a.cityname <> b.citynameselect * from phoneinfo a, phoneinfo_old b where a.phonebound = b.phonebound and a.cityname <> b.cityname
--select * into phoneinfo_bak from phoneinfo
--select * from phoneinfo_bak
select * from phoneinfo a, phoneinfo_old b where a.phonebound = b.phonebound and a.cityname <> b.cityname
--select * from dbo.PhoneInfo_Telecom
--update PhoneInfo_Telecom set provincename = '内蒙古' where pad1 = '内蒙兴安盟'
update PhoneInfo set cityname = '酒泉' where pad1 = '甘肃 酒泉嘉峪关'
--update dbo.PhoneInfo_old set provincename=b.provincename,cityname=b.cityname from dbo.PhoneInfo_old a,PhoneInfo_Telecom b
--where a.phonebound=b.phonebound
create table client_all
as
select t2.mobilephone,
t2.clientName,
t2.sex,
t2.birthdayyear,
t2.birthdaymonth,
t2.birthdaydate,
t2.cardtype,
t2.FundPurchaseTotalFee,
t2.InsurePurchaseTotalFee,
t2.FundSource,
t2.InsureSource,
t2.BankSource
from (select mobilephone,
clientName,
Sex,
birthdayyear,
birthdaymonth,
birthdaydate,
cardtype,
fund_sum_fee FundPurchaseTotalFee,
insure_sum_fee InsurePurchaseTotalFee,
case when sourceindustry = '±£ÏÕ'then'±£ÏÕ'end as FundSource,
case when sourceindustry = '»ù½ð'then'»ù½ð'end as InsureSource,
case when sourceindustry = 'ÒøÐÐ'then'ÒøÐÐ'end as BankSource from (select c.*, f.fund_sum_fee, insure_sum_fee
from client_55 c
left join (select sum(cast(fee as float)) fund_sum_fee,
mobilephone
from fund_client_behavior_55
group by mobilephone) f on c.mobilephone =
f.mobilephone
left join (select sum(cast(fee as float)) insure_sum_fee,
mobilephone
from client_purchase_55
group by mobilephone) i on i.mobilephone =
c.mobilephone
) t
) t2。