sql常用语句100例
- 格式:doc
- 大小:25.50 KB
- 文档页数:2
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语句与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语句⼤全完整版--========================--设置内存选项--========================--设置 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语句常用公式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(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语句用于修改现有的数据库表。
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建表语句binary篇一:常用的sql建表语句新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6] Decimal (12,4) default 0,[字段7] image null ,)删除表:Drop table [表名]插入数据:INSERT INTO [表名] (字段1,字段2) VALUES (100,\'\') 删除数据:DELETE FROM [表名] WHERE [字段名]>100更新数据:UPDATE [表名] SET [字段1] = 200,[字段2] = \'\' WHERE[字段三] = \'HAIWA\'新增字段:ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL删除字段:ALTER TABLE [表名] DROP COLUMN [字段名]修改字段:ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL 重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表) sp_rename \'表名\', \'新表名\', \'OBJECT\'新建约束:ALTER TABLE [表名] ADD CONSTRAINT 约束名CHECK ([约束字段] <= \'2000-1-1\') 删除约束:ALTER TABLE [表名] DROP CONSTRAINT 约束名新建默认值ALTER TABLE [表名] ADD CONSTRAINT 默认值名DEFAULT\'\' FOR [字段名]删除默认值ALTER TABLE [表名] DROP CONSTRAINT 默认值名删除Sql Server 中的日志,减小数据库文件大小dump transaction 数据库名with no_logbackup log 数据库名with no_logdbcc shrinkdatabase(数据库名)exec sp_dboption \'数据库名\', \'autoshrink\', \'true\'\\\'添加字段通用函数Sub AddColumn(TableName,ColumnName,ColumnType)Conn.Execute(\Alter Table \&TableName&\ Add \&ColumnName&\ \&ColumnType&\\)End Sub\\\'更改字段通用函数Sub ModColumn(TableName,ColumnName,ColumnType)Conn.Execute(\Alter Table \&TableName&\ Alter Column\&ColumnName&\ \&ColumnType&\\) End Sub\\\'检查表是否存在sql=\select count(*) as dida from sysobjects where id = object_id(N\'[所有者].[表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1\set rs=conn.execute(sql)response.write rs(\dida\)\'返回一个数值,0代表没有,1代表存在判断表的存在:select * from sysobjects where id = object_id(N\'[dbo].[tablename]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1 某个表的结构select * from syscolumns where id = object_id(N\'[dbo].[你的表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1篇二:数据库建表操作SQL语句大全新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default '默认值' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6] Decimal (12,4) default 0,[字段7] image null ,)删除表:Drop table [表名]插入数据:INSERT INTO [表名] (字段1,字段2) VALUES (100,'')删除数据:DELETE FROM [表名] WHERE [字段名]>100更新数据:UPDATE [表名] SET [字段1] = 200,[字段2] = '' WHERE [字段三] = 'HAIWA'新增字段:ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL删除字段:ALTER TABLE [表名] DROP COLUMN [字段名]修改字段:ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL重命名表:(Access 重命名表,请参考文章:在Access 数据库中重命名表)sp_rename '表名', '新表名', 'OBJECT'新建约束:ALTER TABLE [表名] ADD CONSTRAINT 约束名CHECK ([约束字段] <= '2000-1-1')删除约束:ALTER TABLE [表名] DROP CONSTRAINT 约束名新建默认值ALTER TABLE [表名] ADD CONSTRAINT 默认值名DEFAUL T '' FOR [字段名] 删除默认值ALTER TABLE [表名] DROP CONSTRAINT 默认值名删除sql server 中的日志,减小数据库文件大小dump transaction 数据库名with no_logbackup log 数据库名with no_logdbcc shrinkdatabase(数据库名)exec sp_dboption '数据库名', 'autoshrink', 'true'\'添加字段通用函数Sub AddColumn(TableName,ColumnName,ColumnType)Conn.Execute(Alter Table &TableName& Add &ColumnName& &ColumnType&) End Sub\'更改字段通用函数Sub ModColumn(TableName,ColumnName,ColumnType)Conn.Execute(Alter Table &TableName& Alter Column &ColumnName& &ColumnType&&q(转载于: 博威范文网:sql建表语句binary)uot;) End Sub\'检查表是否存在sql=select count(*) as dida from sysobjects where id = object_id(N'[所有者].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1 set rs=conn.execute(sql)response.write rs(dida)'返回一个数值,0代表没有,1代表存在判断表的存在:select * from sysobjects where id = object_id(N'[dbo].[tablename]') and OBJECTPROPERTY(id, N'IsUserTable') = 1某个表的结构select * from syscolumns where id = object_id(N'[dbo].[你的表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1篇三:SQL建表语句约束一、基础(建表、建约束、关系)约束(constraint)是microsoft sql server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。
gis常用的SQL语句GIS是地理信息系统的缩写,它是一种将地理空间数据与属性数据结合起来进行分析、管理和展示的技术。
在GIS中,SQL语句被广泛应用于数据的查询、分析和管理。
本文将介绍GIS常用的SQL语句,包括查询、空间分析、数据管理等方面。
一、查询语句1. SELECT语句SELECT语句是SQL语句中最常用的语句之一,它用于从表中选择数据。
SELECT语句的基本语法如下:SELECT column1,column2,... FROM table_name;其中,column1、column2等表示要选择的列名,table_name表示要选择的表名。
例如,要从表“city”中选择“name”和“population”两列数据,可以使用以下语句:SELECT name,population FROM city;2. WHERE语句WHERE语句用于从表中选择满足条件的数据。
WHERE语句的基本语法如下:SELECT column1,column2,... FROM table_name WHERE condition;其中,condition表示要满足的条件。
例如,要从表“city”中选择人口大于100万的城市,可以使用以下语句:SELECT name,population FROM city WHEREpopulation>1000000;3. ORDER BY语句ORDER BY语句用于对查询结果进行排序。
ORDER BY语句的基本语法如下:SELECT column1,column2,... FROM table_name ORDER BY column_name [ASC|DESC];其中,column_name表示要排序的列名,ASC表示升序排列,DESC 表示降序排列。
例如,要从表“city”中选择人口最多的前10个城市,可以使用以下语句:SELECT name,population FROM city ORDER BY population DESC LIMIT 10;二、空间分析语句1. ST_Distance语句ST_Distance语句用于计算两个几何对象之间的距离。
查询表空间使用情况的sql语句查询表空间使用情况的SQL语句可以根据不同的数据库管理系统而有所不同。
以下是针对不同数据库管理系统的查询表空间使用情况的SQL语句示例:对于Oracle数据库:sql.SELECT tablespace_name,。
ROUND(SUM(bytes) / 1024 / 1024, 2)total_space_mb,。
ROUND(SUM(bytes NVL(used_bytes, 0)) / 1024 / 1024, 2) free_space_mb,。
ROUND(NVL(used_bytes, 0) / 1024 / 1024, 2) used_space_mb,。
ROUND((NVL(used_bytes, 0) / SUM(bytes)) 100, 2) used_percent.FROM (SELECT tablespace_name, bytes,。
(SELECT SUM(bytes)。
FROM dba_free_space.WHERE tablespace_name =df.tablespace_name) used_bytes.FROM dba_data_files df)。
GROUP BY tablespace_name;对于MySQL数据库:sql.SELECT table_schema "Database Name",。
SUM(data_length + index_length) / 1024 / 1024 "Database Size (MB)",。
SUM(data_free) / 1024 / 1024 "Free Space (MB)"FROM information_schema.tables.GROUP BY table_schema;对于SQL Server数据库:sql.SELECT.name AS [File Name],。
1.对单个表进行查询⑴使用SQL进行投影投影是指取表的某些列的字段值。
下面是使用SQL语句进行投影的例子,从ST表中列出需要的学号、姓名和主修:SELECT 主修 FROM STSELECT 学号,姓名,主修 FROM STSELECT DISTINCT 主修 FROM ST⑵使用SQL进行选择选择是指到表的某些行的记录值。
请看下面的例子:SELECT 学号,姓名,主修,年龄 FROM ST WHERE 主修="MATH"SELECT * FROM ST WHERE 主修="MATH"SELECT 姓名,主修,年龄 FROM ST WHERE 主修="MATH"AND 年龄>21SELECT 姓名,主修,年龄 FROM ST WHERE 主修 IN("MATH","ACCOUNTING")SELECT 姓名,主修,年龄 FROM ST WHERE 主修 NOT IN("MATH","ACCOUNTING")⑶ SQL排序SELECT 姓名,主修,年龄 FROM ST WHERE 主修="ACCOUNTING" ORDER BY 姓名SELECT 姓名,主修,年龄 FROM ST WHERE 主修 IN("MATH","ACCOUNTING") ORDER BY 姓名 DESC,年龄 ASC⑷ SQL内置函数SQL主要提供了前面我们提到的五个内置函数:COUNT、SUM、AVG、MAX、MIN。
在上面的查询中,还可以对查询的学生进行条件选择,使用关键字WHERE进行查询,但是这样会产生一定的模糊性,请看下例的结果,分析之:SELECT COUNT(主修) FROM STSELECT COUNT(DISTINCT 主修) FROM ST⑸ SQL内置函数和分组为了增强统计内置函数的功能,内置函数可以和分组函数合用,将源表中的数据分组,再对每一分组生成一个汇总行。
sql常⽤语句及⽇期格式⼀、字符转换函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。
在ASCII()函数中,纯数字的字符串可不⽤‘’括起来,但含其它字符的字符串必须⽤‘’括起来使⽤,否则会出错。
2、CHAR()将ASCII 码转换为字符。
如果没有输⼊0 ~ 255 之间的ASCII 码值,CHAR()返回NULL 。
3、LOWER()和UPPER()LOWER()将字符串全部转为⼩写;UPPER()将字符串全部转为⼤写。
4、STR()把数值型数据转换为字符型数据。
STR (<float_expression>[,length[, <decimal>]])length 指定返回的字符串的长度,decimal 指定返回的⼩数位数。
如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。
当length 或者decimal 为负值时,返回NULL;当length ⼩于⼩数点左边(包括符号位)的位数时,返回length 个*;先服从length ,再取decimal ;当返回的字符串位数⼩于length ,左边补⾜空格。
⼆、去空格函数1、LTRIM() 把字符串头部的空格去掉。
2、RTRIM() 把字符串尾部的空格去掉。
三、取⼦串函数1、left()LEFT (<character_expression>, <integer_expression>)返回character_expression 左起 integer_expression 个字符。
2、RIGHT()RIGHT (<character_expression>, <integer_expression>)返回character_expression 右起 integer_expression 个字符。
3、SUBSTRING()SUBSTRING (<expression>, <starting_ position>, length)返回从字符串左边第starting_ position 个字符起length个字符的部分。
SQL语句大全--语句功能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据-数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域--数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限--事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询---局部变量declare @id char(10)--set @id = '10010001'select @id = '10010001'---全局变量---必须以@@开头--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x > @yprint 'x > y' --打印字符串'x > y'else if @y > @zprint 'y > z'else print 'z > y'--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08 when job_level = ’2’ then e_wage*1.07 when job_level = ’3’ then e_wage*1.06 else e_wage*1.05end--WHILE CONTINUE BREAK declare @x int @y int @c intselect @x = 1 @y=1while @x < 3beginprint @x --打印变量x 的值while @y < 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例等待1 小时2 分零3 秒后才执行SELECT 语句w aitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator value ex:(宿主)select * from stock_information where stockid = str(nid)stockname = 'str_name'stockname like '% find this %'stockname like '[a-zA-Z]%' --------- ([]指定值的范围)stockname like '[^F-M]%' --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用通配符)or stockpath = 'stock_path'or stocknumber < 1000and stockindex = 24not stock*** = 'man'stocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameselect stockname , "stocknumber" = count(*) from table_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select *from table1, table2where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber from Stock_table2)---value为select语句***update***update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表***alter table*** --- 修改数据库表结构alter table database.owner.table_name add column_name char(2) null .....sp_help table_name ---- 显示表已有特征create table table_name (name char(20), age smallint, lname varchar(30))insert into table_name select ......... ----- 实现删除列的方法(创建新表)alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束***function(/*常用函数*/)***----统计函数----AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)--STDEV()--STDEV()函数返回表达式中所有数据的标准差--STDEVP()--STDEVP()函数返回总体标准差--VAR()--VAR()函数返回表达式中所有值的统计变异数--VARP()--VARP()函数返回总体变异数----算术函数----/***三角函数***/SIN(float_expression) --返回以弧度表示的角的正弦COS(float_expression) --返回以弧度表示的角的余弦TAN(float_expression) --返回以弧度表示的角的正切COT(float_expression) --返回以弧度表示的角的余切/***反三角函数***/ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expression1,float_expression2)--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expression)--把弧度转换为角度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expression) --返回表达式的指数值LOG(float_expression) --返回表达式的自然对数值LOG10(float_expression)--返回表达式的以10 为底的对数值SQRT(float_expression) --返回表达式的平方根/***取近似值函数***/CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() --返回值为π 即3.1415926535897936RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数----字符串函数----ASCII() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() --函数把字符串全部转换为小写UPPER() --函数把字符串全部转换为大写STR() --函数把数值型数据转换为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置SOUNDEX() --函数返回一个四位字符码--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异--0 两个SOUNDEX 函数返回值的第一个字符不同--1 两个SOUNDEX 函数返回值的第一个字符相同--2 两个SOUNDEX 函数返回值的第一二个字符相同--3 两个SOUNDEX 函数返回值的第一二三个字符相同--4 两个SOUNDEX 函数返回值完全相同QUOTENAME() --函数返回被特定字符括起来的字符串/*select quotename('abc', '{') quotename('abc')运行结果如下----------------------------------{{abc} [abc]*/REPLICATE() --函数返回一个重复character_expression 指定次数的字符串/*select replicate('abc', 3) replicate( 'abc', -2)运行结果如下----------- -----------abcabcabc NULL*/REVERSE() --函数将指定的字符串的字符排列顺序颠倒REPLACE() --函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def')运行结果如下----------- -----------abcdefg*/SPACE() --函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() (<expression> AS <data_ type>[ length ])CONVERT() 函数语法如下CONVERT() (<data_ type>[ length ], <expression> [, style])select cast(100+99 as char) convert(varchar(12), getdate())运行结果如下------------------------------ ------------199 Jan 15 2000----日期函数----DAY() --函数返回date_expression 中的日期值MONTH() --函数返回date_expression 中的月份值YEAR() --函数返回date_expression 中的年份值DATEADD(<datepart> ,<number> ,<date>)--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)--函数返回两个指定日期在datepart 方面的不同之处DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间----系统函数----APP_NAME() --函数返回当前执行的应用程序的名称COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名DATALENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['database_name']) --函数返回数据库的编号DB_NAME(database_id) --函数返回数据库的名称HOST_ID() --函数返回服务器端计算机的名称HOST_NAME() --函数返回服务器端计算机的名称IDENTITY(<data_type>[, seed increment]) [AS column_name])--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefrom oldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达式是否为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expression1>, <expression2>)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值sql中的保留字action add aggregate allalter after and asasc avg avg_row_length auto_incrementbetween bigint bit binaryblob bool both bycascade case char characterchange check checksum columncolumns comment constraint createcross current_date current_time current_timestampdata database databases datedatetime day day_hour day_minuteday_second dayofmonth dayofweek dayofyeardec decimal default delayeddelay_key_write delete desc describedistinct distinctrow double dropend else escape escapedenclosed enum explain existsfields file first floatfloat4 float8 flush foreignfrom for full functionglobal grant grants grouphaving heap high_priority hourhour_minute hour_second hosts identifiedignore in index infileinner insert insert_id intinteger interval int1 int2int3 int4 int8 intoif is isam joinkey keys kill last_insert_idleading left length likelines limit load locallock logs long longbloblongtext low_priority max max_rowsmatch mediumblob mediumtext mediumintmiddleint min_rows minute minute_secondmodify month monthname myisamnatural numeric no notnull on optimize optionoptionally or order outeroutfile pack_keys partial passwordprecision primary procedure processprocesslist privileges read realreferences reload regexp renamereplace restrict returns revokerlike row rows secondselect set show shutdownsmallint soname sql_big_tables sql_big_selectssql_low_priority_updates sql_log_off sql_log_update sql_select_limit sql_small_result sql_big_result sql_warnings straight_joinstarting status string tabletables temporary terminated textthen time timestamp tinyblobtinytext tinyint trailing totype use using uniqueunlock unsigned update usagevalues varchar variables varyingvarbinary with write whenwhere year year_month zerofill查看全文常用SQL命令和ASP编程在进行数据库操作时,无非就是添加、删除、修改,这得设计到一些常用的SQL 语句,如下:SQL常用命令使用方法:(1) 数据记录筛选:sql="select * from 数据表where 字段名=字段值order by 字段名[desc]"sql="select * from 数据表where 字段名like %字段值% order by 字段名[desc]"sql="select top 10 * from 数据表where 字段名order by 字段名[desc]"sql="select * from 数据表where 字段名in (值1,值2,值3)"sql="select * from 数据表where 字段名between 值1 and 值2"(2) 更新数据记录:sql="update 数据表set 字段名=字段值where 条件表达式"sql="update 数据表set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"(3) 删除数据记录:sql="delete from 数据表where 条件表达式"sql="delete from 数据表" (将数据表所有记录删除)(4) 添加数据记录:sql="insert into 数据表(字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"sql="insert into 目标数据表select * from 源数据表" (把源数据表的记录添加到目标数据表)(5) 数据记录统计函数:AVG(字段名) 得出一个表格栏平均值COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名) 取得一个表格栏最大的值MIN(字段名) 取得一个表格栏最小的值SUM(字段名) 把数据栏的值相加引用以上函数的方法:sql="select sum(字段名) as 别名from 数据表where 条件表达式"set rs=conn.excute(sql)用rs("别名") 获取统的计值,其它函数运用同上。
在成绩表中,效率60分为不及格,大于60分为及格,大于80分为优秀,请用一条SQL语句查询。
答:设有成绩表Scores 包含字段ScoreId Score查询语句如下:Select 成绩=caseWhen score between(0 and 59) then ‘不及格’When score between(60 and 79) then ‘及格’When score between(80 and 100) then ‘优秀’Else ‘无效成绩’EndFrom Score请用SQL语句查处当天所有记录.答:select * from tb_send where datediff(day,sendTime, getdate())=0sql查询,表table(id,lastUpdateDate);使用一条sql语句查出最近一次的修改时间答:select top 1 lastUpdateDate from [table] order by lastUpdateDate desc游标的声明与使用,如何判断记录已到达最末尾declare @myCur Cursordeclare mySet Cursor forselect * from 表名set @muCur=mySetopen mySetfetch next from mySetwhile @@FETCH_STA TUS=0beginfetch next from mySetendclose mySetdeallocate mySet看表写SQLId 1 自动增长,主键Name AccpTel 1111111111Datetime 2008-1-1查询出时间在2008-1-1到2009-3-3的所有信息更新id=8的name为你的姓名,tel为你的电话号码插入一行数据答:1)select * from 表where Datetime>=2008-1-1 and Datetime<=2009-3-32)select name as 姓名,tel as 电话号码from 表where id=83)insert into 表(name,tel,datetime) values(‘ss’,’111111111’,’2009-01-01’)1. 查询表中stuAge字段有重复值的数据:例:输出结果如下:答:select*from stuinfowhere stuAge in(select stuAge from stuinfogroup by stuAge having count(*)>1)2.用 table2中科目余额更新table1中的科目余额,不在table2中出现的科目不更新。
SQL语句-创建索引语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因⼦值0~100GOUSE 库名GOIF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除--创建索引CREATE NONCLUSTERED INDEX IX_TEST_TNAME --创建⼀个⾮聚集索引ON TEST(TNAME) --为TEST表的TNAME字段创建索引WITH FILLFACTOR = 30 --填充因⼦为30%GOSELECT * FROM TEST(INDEX = IX_TEST_TNAME) WHERE TNAME = 'A' --指定按‘IX_TEST_TNAME’索引查询总结:1.什么是索引:数据库中的索引是某个表中⼀列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
2.分类:唯⼀索引(UNIQUE):不允许两⾏具有相同的索引值(创建了唯⼀约束,系统将⾃动创建唯⼀索引)主键索引:主键索引要求主键中的每个值是唯⼀的,(创建主键⾃动创建主键索引)聚集索引(CLUSTERED):表中各⾏的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含⼀个聚集索引,主键列默认为聚集索引⾮聚集索引(NONCLUSTERED):表中各⾏的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个⾮聚集索引3.创建索引的标准:⽤于频繁搜索的列;⽤于对数据进⾏排序的列注意:如果表中仅有⼏⾏,或列中只包含⼏个不同的值,不推荐创建索引,因为SQL Server 在⼩型表中⽤索引搜索数据所花的时间⽐逐⾏搜索更长。
实际上,您可以把索引理解为⼀种特殊的⽬录。
SQL基本语句及示例1 . SQL SELECT 语句SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法以及:2. SQL SELECT DISTINCT 语句在表中,可能会包含重复值。
这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词DISTINCT 用于返回唯一不同的值。
语法:使用DISTINCT 关键词如果要从"Company" 列中选取所有的值,我们需要使用SELECT 语句:现在,在结果集中,"W3School" 仅被列出了一次。
3. WHERE 子句如需有条件地从表中选取数据,可将WHERE 子句添加到SELECT 语句。
语法引号的使用请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
如果是数值,请不要使用引号。
文本值:数值:5. ORDER BY 语句ORDER BY语句用于对结果集进行排序实例4以逆字母顺序显示公司名称,并以数字顺序显示顺序号:6. INSERT INTO 语句INSERT INTO 语句用于向表格中插入新的行。
语法我们也可以指定所要插入数据的列:SQL 语句:SQL 语句:7. DELETE 语句DELETE 语句用于删除表中的行。
语法删除某行"Fred Wilson" 会被删除:删除所有行可以在不删除表的情况下删除所有的行。
这意味着表的结构、属性和索引都是完整的:1.SQL AVG() 语法例子1现在,我们希望计算"OrderPrice" 字段的平均值。
我们使用如下SQL 语句:例子2现在,我们希望找到OrderPrice 值高于OrderPrice 平均值的客户。
我们使用如下SQL 语句:2.SQL COUNT() 函数COUNT() 函数返回匹配指定条件的行数。
oracle创建数据库sql语句Oracle是一个常用的关系型数据库管理系统,通过SQL语句可以完成数据库的创建,下面介绍几种常见的创建数据库的SQL语句。
1. 创建一个新的Oracle数据库实例。
CREATE DATABASE mynewdb;2. 指定数据库文件的位置和大小。
CREATE DATABASE mynewdbDATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 100MDEFAULT TEMPORARY TABLESPACE tempDEFAULT TABLESPACE users;3. 指定数据库字符集和语言。
CREATE DATABASE mynewdbCHARACTER SET WE8MSWIN1252NATIONAL CHARACTER SET UTF8;4. 指定数据库的工作方式。
CREATE DATABASE mynewdbENABLE PLUGGABLE DATABASESEED PLUGGABLE DATABASE pdbseedCREATE SPFILEMAXINSTANCES 4MAXLOGHISTORY 1MAXLOGFILES 5MAXLOGMEMBERS 5MAXDATAFILES 100ARCHIVELOG;5. 指定数据库实例的名称和端口号。
CREATE DATABASE mynewdbUSER SYS IDENTIFIED BY mypasswordUSER SYSTEM IDENTIFIED BY mypasswordLOGFILE GROUP 1 '/u01/app/oracle/oradata/mynewdb/redo01.log' SIZE 50M,GROUP 2 '/u01/app/oracle/oradata/mynewdb/redo02.log' SIZE 50M, GROUP 3 '/u01/app/oracle/oradata/mynewdb/redo03.log' SIZE 50M STORAGE (INITIAL 500MNEXT 500MMAXSIZE UNLIMITED)CHARACTER SET AL32UTF8NATIONAL CHARACTER SET AL16UTF16EXTENT MANAGEMENT LOCALDATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 2000MSYSAUX DATAFILE'/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 500M DEFAULT TABLESPACE usersTEMPORARY TABLESPACE tempUNDO TABLESPACE undoLOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/archive'LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'DB_BLOCK_SIZE=8192DB_CREATE_FILE_DEST='/u01/app/oracle/oradata'DB_CREATE_ONLINE_LOG_DEST='/u01/app/oracle/oradata';以上是常见的几种创建Oracle数据库的SQL语句,在实际应用中我们根据需要进行相应的修改。
oracle维护常用SQL语句(查看系统表和视图)oracle维护常用SQL语句(查看系统表和视图)1.查看表空间的名称及大小select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom dba_tablespaces t, dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name2.查看表空间物理文件的名称及大小selecttablespace_name,file_id,file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;3.查看回滚段名称及大小select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,max_extents, v.curext CurExtentFrom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)order by segment_name ;4.查看控制文件select name from v$controlfile;5.查看日志文件select member from v$logfile;6.查看表空间的使用情况select sum(bytes)/(1024*1024) as free_space,tablespace_namefrom dba_free_spacegroup by tablespace_name;SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE CWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;7.查看数据库库对象select owner, object_type, status, count(*) count#from all_objectsgroup by owner, object_type, status;8.查看数据库的版本Select version FROM Product_component_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';9.查看数据库的创建日期和归档方式Select Created, Log_Mode, Log_Mode From V$Database;10.捕捉运行很久的SQLcolumn username format a12column opname format a16column progress format a8select username,sid,opname,round(sofar*100 / totalwork,0) || '%' as progress,time_remaining,sql_textfrom v$session_longops , v$sqlwhere time_remaining <> 0and sql_address = addressand sql_hash_value = hash_value/11.查看数据表的参数信息SELECT partition_name, high_value, high_value_length, tablespace_name,pct_free, pct_used, ini_trans, max_trans, initial_extent,next_extent, min_extent, max_extent, pct_increase, FREELISTS, freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size,last_analyzedFROM dba_tab_partitions--WHERE table_name = :tname AND table_owner = :towner ORDER BY partition_position12.查看还没有提交的事务select * from v$locked_object;select * from v$transaction;13.查找object为那些进程所用selectp.spid,s.sid,s.serial# serial_num,ername user_name,a.type object_type,s.osuser os_user_name,a.owner,a.object object_name,decode(sign(48 - command),1,to_char(command), 'Action Code #' || to_char(command) ) action,p.program oracle_process,s.terminal terminal,s.program program,s.status session_statusfrom v$session s, v$access a, v$process pwhere s.paddr = p.addr ands.type = 'USER' anda.sid = s.sid anda.object='SUBSCRIBER_ATTR'order by ername, s.osuser14.回滚段查看select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extentsExtents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs, v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes,sys.dba_rollback_segs.status status from v$rollstat, sys.dba_rollback_segs,v$rollname where v$(+) = sys.dba_rollback_segs.segment_name andv$n (+) = v$n order by rownum15.耗资源的进程select s.schemaname schema_name, decode(sign(48 - command), 1,to_char(command), 'Action Code #' || to_char(command) ) action, statussession_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num,nvl(ername, '[Oracle process]') user_name, s.terminal terminal,s.program program, st.value criteria_value from v$sesstat st, v$session s , v$process pwhere st.sid = s.sid and st.statistic# = to_number('38') and ('ALL' = 'ALL'or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc, ername asc, s.osuser asc16.查看锁(lock)情况select /*+ RULE */ ls.osuser os_user_name, ername user_name,decode(ls.type, 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock', 'TX','Transaction enqueue lock', 'UL', 'User supplied lock') lock_type,o.object_name object, decode(ls.lmode, 1, null, 2, 'Row Share', 3,'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', null)lock_mode, o.owner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2 from sys.dba_objects o, ( select s.osuser, ername, l.type, l.lmode, s.sid, s.serial#, l.id1, l.id2 from v$session s,v$lock l where s.sid = l.sid ) ls where o.object_id = ls.id1 and o.owner<> 'SYS' order by o.owner, o.object_name17.查看等待(wait)情况SELECT v$waitstat.class, v$waitstat.count count, SUM(v$sysstat.value) sum_valueFROM v$waitstat, v$sysstat WHERE v$ IN ('db block gets','consistent gets') group by v$waitstat.class, v$waitstat.count18.查看sga情况SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC19.查看catched objectSELECT owner, name, db_link, namespace,type, sharable_mem, loads, executions,locks, pins, kept FROM v$db_object_cache20.查看V$SQLAREASELECT SQL_TEXT, SHARABLE_MEM, PERSISTENT_MEM, RUNTIME_MEM, SORTS,VERSION_COUNT, LOADED_VERSIONS, OPEN_VERSIONS, USERS_OPENING, EXECUTIONS,USERS_EXECUTING, LOADS, FIRST_LOAD_TIME, INVALIDATIONS, PARSE_CALLS, DISK_READS,BUFFER_GETS, ROWS_PROCESSED FROM V$SQLAREA21.查看object分类数量select decode (o.type#,1,'INDEX' , 2,'TABLE' , 3 , 'CLUSTER' , 4, 'VIEW' , 5 ,'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) object_type , count(*) quantity fromsys.obj$ o where o.type# > 1 group by decode (o.type#,1,'INDEX' , 2,'TABLE' , 3, 'CLUSTER' , 4, 'VIEW' , 5 , 'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) union select'COLUMN' , count(*) from sys.col$ union select 'DB LINK' , count(*) from22.按用户查看object种类select schema, sum(decode(o.type#, 1, 1, NULL)) indexes,sum(decode(o.type#, 2, 1, NULL)) tables, sum(decode(o.type#, 3, 1, NULL))clusters, sum(decode(o.type#, 4, 1, NULL)) views, sum(decode(o.type#, 5, 1,NULL)) synonyms, sum(decode(o.type#, 6, 1, NULL)) sequences,sum(decode(o.type#, 1, NULL, 2, NULL, 3, NULL, 4, NULL, 5, NULL, 6, NULL, 1))others from sys.obj$ o, er$ u where o.type# >= 1 and er# =o.owner# and <> 'PUBLIC' group by order bysys.link$ union select 'CONSTRAINT' , count(*) from sys.con$23.有关connection的相关信息1)查看有哪些用户连接select s.osuser os_user_name, decode(sign(48 - command), 1, to_char(command),'Action Code #' || to_char(command) ) action, p.program oracle_process,status session_status, s.terminal terminal, s.program program,ername user_name, s.fixed_table_sequence activity_meter, '' query,0 memory, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_numfrom v$session s, v$process p where s.paddr=p.addr and s.type = 'USER'order by ername, s.osuser2)根据v.sid查看对应连接的资源占用等情况select ,v.value,n.class,n.statistic#from v$statname n,v$sesstat vwhere v.sid = 71 andv.statistic# = n.statistic#order by n.class, n.statistic#3)根据sid查看对应连接正在运行的sql select /*+ PUSH_SUBQ */ command_type,sql_text,sharable_mem,persistent_mem,runtime_mem,sorts,version_count,loaded_versions,open_versions,users_opening,executions,users_executing,loads,first_load_time,invalidations,parse_calls,disk_reads,buffer_gets,rows_processed,sysdate start_time,sysdate finish_time,'>' || address sql_address,'N' statusfrom v$sqlareawhere address = (select sql_address from v$session where sid = 71)24.查询表空间使用情况select a.tablespace_name "表空间名称",100-round((nvl(b.bytes_free,0)/a.bytes_alloc)*100,2) "占用率(%)",round(a.bytes_alloc/1024/1024,2) "容量(M)",round(nvl(b.bytes_free,0)/1024/1024,2) "空闲(M)",round((a.bytes_alloc-nvl(b.bytes_free,0))/1024/1024,2) "使用(M)",Largest "最大扩展段(M)",to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "采样时间"from (select f.tablespace_name,sum(f.bytes) bytes_alloc,sum(decode(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) maxbytesfrom dba_data_files fgroup by tablespace_name) a,(select f.tablespace_name,sum(f.bytes) bytes_freefrom dba_free_space fgroup by tablespace_name) b,(select round(max(ff.length)*16/1024,2) Largest, tablespace_namefrom sys.fet$ ff, sys.file$ tf,sys.ts$ tswhere ts.ts#=ff.ts# and ff.file#=tf.relfile# and ts.ts#=tf.ts#group by , tf.blocks) cwhere a.tablespace_name = b.tablespace_name anda.tablespace_name = c.tablespace_name25. 查询表空间的碎片程度select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_namehaving count(tablespace_name)>10;alter tablespace name coalesce;alter table name deallocate unused;create or replace view ts_blocks_v asselect tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_spaceunion allselecttablespace_name,block_id,bytes,blocks,segment_name from dba_extents;select * from ts_blocks_v;selecttablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_spacegroup by tablespace_name;26.查询有哪些数据库实例在运行select inst_name from v$active_instances;。
sql区间查询语句SQL区间查询语句是一种常用的查询语句,用于在数据库中检索满足特定范围条件的数据。
区间查询可以基于数值、日期或者字符类型的列进行。
以下是几种常见的SQL区间查询语句及其使用示例。
1. 数值区间查询:SELECT * FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;例如,要查询价格在100到200之间的商品,可以使用以下语句: SELECT * FROM products WHERE price BETWEEN 100 AND 200;2. 日期区间查询:SELECT * FROM 表名 WHERE 列名 BETWEEN '日期1' AND '日期2';例如,要查询注册日期在2021年1月1日到2022年1月1日之间的用户,可以使用以下语句:SELECT * FROM users WHERE registration_date BETWEEN'2021-01-01' AND '2022-01-01';3. 字符区间查询:SELECT * FROM 表名 WHERE 列名 >= '值1' AND 列名 <= '值2';例如,要查询姓氏在'A'到'E'之间的员工,可以使用以下语句: SELECT * FROM employees WHERE last_name >= 'A' ANDlast_name <= 'E';在使用区间查询时,需要注意以下几点:- 区间查询语句中的列名必须是数值、日期或者字符类型的列; - BETWEEN关键字后面的值1必须小于或等于值2;- 区间查询语句可以与其他条件语句结合使用,例如使用AND或者OR关键字。
除了上述示例,SQL区间查询语句还可以根据具体的业务需求进行拓展。
--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。