数据库常用的SQL

合集下载

oracle常用SQL语句(汇总版)

oracle常用SQL语句(汇总版)

Oracle数据库常用sql语句ORACLE 常用的SQL语法和数据对象一.数据控制语句(DML) 部分1.INSER T (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式, 可以参看OR ACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WI TH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE (删除数据表里记录的语句)DELETE FROM表名 WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.3.UPDATE (修改数据表里记录的语句)UPDATE表名SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..注意事项:A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作, 可以用命令ROLLBACK 复原.B. 在运行INSERT, DELETE 和UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理.二.数据定义(DDL) 部分1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER(M,N) 数字型M是位数总长度, N是小数的长度DATE 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如DEFAUL T SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE, 关键字PRIMAR Y KEY2.AL TER (改变表, 索引, 视图等)改变表的名称AL TER TABLE 表名1 TO 表名2;在表的后面增加一个字段AL TER TABLE表名ADD 字段名字段名描述;修改表里字段的定义描述AL TER TABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件AL TER TABLE 表名ADD CONSTRAINT 约束名PRIMAR Y KEY (字段名);AL TER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);把表放在或取出数据库的内存区AL TER TABLE 表名CACHE;AL TER TABLE 表名NOCACHE;3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名CASCADE CONSTRAINTS;4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;三.查询语句(SELECT) 部分SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULLRETURN EXPR2ELSERETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如: (字段名1*字段名1)/3查询语句可以嵌套例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;两个查询语句的结果可以做集合操作例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT分组查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1[HAVING 条件] ;两个以上表之间的连接查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名[ AND ……] ;SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名(+) [ AND ……] ;有(+)号的字段位置自动补空值查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象 (SCHEMA)1.索引(INDEX)CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );AL TER INDEX 索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节2.视图(VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;AL TER VIEW视图名COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词(SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;4.数据库链接(DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名IDENTIFIED BY 密码USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT …… FROM 表名@数据库链接名;五.权限管理(DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSER T ON 数据对象名, AL TER ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名 TO 用户名;GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名FROM 用户名1, 用户名2;查询数据库中第63号错误:select orgaddr,destaddr from sm_histable0116 where error_code='63';查询数据库中开户用户最大提交和最大下发数:select MSISDN,TCOS,OCOS from ms_usertable;查询数据库中各种错误代码的总和:select error_code,count(*) from sm_histable0513 group by error_code orderby error_code;查询报表数据库中话单统计种类查询。

数据库常用sql语句有哪些

数据库常用sql语句有哪些

数据库常用sql语句有哪些数据库常用sql语句有哪些结构化查询语言简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

下面是店铺整理的数据库常用sql语句有哪些,欢迎大家分享。

数据库常用sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;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、查询平均成绩大于60分的同学的学号和平均成绩;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、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.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 where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;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、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC whereS.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、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;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、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;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行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)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 0END)/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、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生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 having count(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、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) asagefrom studentwhere CONVERT(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的`学生姓名和分数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、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;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、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;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 where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B whereA.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、统计每门课程的学生选修人数(超过10人的课程才统计)。

常用的SQL语句

常用的SQL语句

Company
Area
汉能A
北京
汉能B
禹城
汉能C 汉能D
四川 江苏
执行结果
Update
Update 语句用于修改表中的数据。
语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 例如: 将表A中的Area列的是川更新为四川
Id Company
Area
1 汉能A
北京
2 汉能B 3 汉能C
显示一条记录。
Id Company
Area Production
ቤተ መጻሕፍቲ ባይዱIntFlag
1 汉能A
北京 200W
1
表:A
2 汉能C
禹城 250W
1
3 汉能C
禹城 300W
0
SELECT * FROM A WHERE (company=‘汉能A’ OR company=‘汉能C') AND IntFlag=‘1'
✓CREATE INDEX 语法 在表上创建一个简单的索引。允许使用重复的值: CREATE INDEX 索引名称 ON 表名(列名)
例如对表A中的列A_a创建可重复的索引 create index index_name on A (A_a)
✓ CREATE UNIQUE INDEX 语法 在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同 的索引值。索引名称 ON CREATE UNIQUE INDEX 表名(列名,列名)
用于创建数据库中的表
CREATE TABLE 创建表语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... )

sql数据库常用类型

sql数据库常用类型

sql数据库常用类型SQL数据库中有几种常用的数据类型,这些数据类型允许您在表中存储不同种类的数据。

这里列举了一些常见的SQL数据类型:1. 整数类型(Integer Types):- `INT`:用于存储整数值。

- `SMALLINT`:用于存储较小范围的整数值。

- `BIGINT`:用于存储较大范围的整数值。

2. 小数/浮点类型(Decimal/Floating-Point Types):- `DECIMAL(precision, scale)` 或`NUMERIC(precision, scale)`:用于存储精确的小数值,`precision` 表示总位数,`scale` 表示小数位数。

- `FLOAT` 或`REAL`:用于存储浮点数值,通常用于需要近似值的情况。

3. 字符类型(Character Types):- `CHAR(n)`:用于存储固定长度的字符串,最多可以存储`n` 个字符。

- `V ARCHAR(n)` 或`V ARCHAR2(n)`:用于存储可变长度的字符串,最多可以存储`n` 个字符。

- `TEXT`:用于存储大文本对象((长字符串),适合存储大段文本。

4. 日期和时间类型(Date and Time Types):- `DATE`:用于存储日期。

- `TIME`:用于存储时间。

- `DATETIME` 或`TIMESTAMP`:用于存储日期和时间。

- `INTERV AL`:用于存储时间间隔。

5. 二进制类型(Binary Types):- `BLOB`:用于存储二进制大对象,如图像、音频或视频文件等。

- `BYTEA`(PostgreSQL中):用于存储二进制数据。

6. 布尔类型(Boolean Type):- `BOOLEAN`:用于存储逻辑值(true或false)。

7. 枚举类型(Enum Types):- `ENUM`:允许您在有限的可能值列表中选择一个值。

创建数据库sql语句的几种常用写法

创建数据库sql语句的几种常用写法

创建数据库的SQL 语句可以根据不同的数据库管理系统(DBMS)有所不同。

以下是几种在常见数据库系统中创建数据库的SQL 语句写法:1.MySQL / MariaDB:sqlCopy codeCREATE DATABASE database_name;例如:sqlCopy codeCREATE DATABASE mydatabase;2.SQL Server:sqlCopy codeCREATE DATABASE database_name;例如:sqlCopy codeCREATE DATABASE mydatabase;3.PostgreSQL:sqlCopy codeCREATE DATABASE database_name;例如:sqlCopy codeCREATE DATABASE mydatabase;4.SQLite:在SQLite 中,数据库通常是在连接到一个文件时创建的。

因此,创建数据库的SQL 语句是连接到数据库文件的语句。

例如:sqlCopy codeATTACH DATABASE 'mydatabase.db' AS mydatabase;上述语句创建了一个名为mydatabase的数据库文件。

5.Oracle:在Oracle 中,数据库创建语句通常包括一些其他选项,例如数据文件的位置等。

例如:sqlCopy codeCREATE DATABASE mydatabase DATAFILE '/path/to/datafile.dbf' SIZE 10M AUTOEXTEND ON;上述语句创建了一个名为mydatabase的数据库,并定义了数据文件的位置、大小和自动扩展选项。

请注意,在实际应用中,你可能还需要指定字符集、校对规则、权限等其他选项,具体取决于数据库系统的要求和你的需求。

在执行创建数据库的SQL 语句之前,请确保你有足够的权限,并慎重考虑所有选项。

数据库sql语句大全

数据库sql语句大全

数据库sql语句大全数据库SQL语句大全。

数据库SQL语句是数据库操作的重要组成部分,掌握各种SQL语句对于数据库的管理和应用具有重要意义。

本文将介绍常用的数据库SQL语句,包括数据查询、数据更新、数据删除、数据插入等操作,希望能够帮助大家更好地理解和应用数据库SQL语句。

1. 数据查询。

数据查询是数据库操作中最常见的操作之一,通过SQL语句可以实现对数据库中数据的查询和检索。

常用的数据查询语句包括:SELECT FROM table_name; // 查询表中所有数据。

SELECT column1, column2 FROM table_name; // 查询表中指定列的数据。

SELECT FROM table_name WHERE condition; // 带条件的数据查询。

2. 数据更新。

数据更新是指对数据库中已有数据进行修改操作,通过SQL语句可以实现对数据的更新操作。

常用的数据更新语句包括:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition; // 更新表中符合条件的数据。

UPDATE table_name SET column = value; // 更新表中所有数据的指定列。

3. 数据删除。

数据删除是指对数据库中已有数据进行删除操作,通过SQL语句可以实现对数据的删除操作。

常用的数据删除语句包括:DELETE FROM table_name WHERE condition; // 删除表中符合条件的数据。

DELETE FROM table_name; // 删除表中所有数据。

4. 数据插入。

数据插入是指向数据库中插入新的数据,通过SQL语句可以实现对数据的插入操作。

常用的数据插入语句包括:INSERT INTO table_name (column1, column2) VALUES (value1, value2); // 向表中插入指定列的数据。

关系数据库常用SQL语句语法大全

关系数据库常用SQL语句语法大全

关系数据库常⽤SQL 语句语法⼤全创建表语法CREATE TABLE <表名>(<列名> <数据类型>[列级完整性约束条件][,<列名> <数据类型>[列级完整性约束条件]]…);列级完整性约束条件有NULL[可为空]、NOT NULL[不为空]、UNIQUE[唯⼀],可以组合使⽤,但是不能重复和对⽴关系同时存在。

⽰例-- 创建学⽣表CREATE TABLE Student ( Id INT NOT NULL UNIQUE PRIMARY KEY, Name VARCHAR(20) NOT NULL, Age INT NULL, Gender VARCHAR(4) NULL);删除表语法DROP TABLE <表名>;⽰例-- 删除学⽣表DROP TABLE Student;清空表语法TRUNCATE TABLE <表名>;⽰例-- 删除学⽣表TRUNCATE TABLE Student;修改表######语法-- 添加列ALTER TABLE <表名> [ADD <新列名> <数据类型>[列级完整性约束条件]]-- 删除列ALTER TABLE <表名> [DROP COLUMN <列名>]-- 修改列ALTER TABLE <表名> [MODIFY COLUMN <列名> <数据类型> [列级完整性约束条件]]⽰例-- 添加学⽣表`Phone`列ALTER TABLE Student ADD Phone VARCHAR(15) NULL;-- 删除学⽣表`Phone`列ALTER TABLE Student DROP COLUMN Phone;-- 修改学⽣表`Phone`列ALTER TABLE Student MODIFY Phone VARCHAR(13) NULL;SQL 查询语句语法SELECT [ALL|DISTINCT] <⽬标列表达式>[,<⽬标列表达式>]…FROM <表名或视图名>[,<表名或视图名>]…[WHERE <条件表达式>][GROUP BY <列名> [HAVING <条件表达式>]][ORDER BY <列名> [ASC|DESC]…]SQL 查询语句的顺序:SELECT 、FROM 、WHERE 、GROUP BY 、HAVING 、ORDER BY 。

达梦数据库sql语句

达梦数据库sql语句

达梦数据库sql语句
达梦数据库是一种常用的关系型数据库管理系统,它支持大规模数据的存储和处理。

在使用达梦数据库时,掌握SQL语句是非常重要的。

SQL语句是一种描述数据的语言,通过SQL语句可以对数据库进行查询、插入、更新和删除等操作。

在达梦数据库中,常用的SQL语句包括:SELECT、INSERT、UPDATE、DELETE等。

其中,SELECT语句用于查询数据,INSERT语句用于插入数据,UPDATE语句用于更新数据,DELETE语句用于删除数据。

除了这些基本的SQL语句外,达梦数据库还支持其他高级的SQL 语句,例如JOIN语句、GROUP BY语句、HAVING语句等。

这些语句可以帮助我们更加灵活地查询和处理数据。

在使用SQL语句时,需要注意一些常见的错误,例如语法错误、数据类型错误、空值错误等。

为了避免这些错误,我们需要仔细阅读达梦数据库的文档,以及不断地练习和积累经验。

总之,掌握达梦数据库的SQL语句是非常重要的,它可以帮助我们更加高效地管理和处理数据。

希望本文对大家有所帮助。

- 1 -。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库常用的SQL语句及应用实例一、数据库常用命令Select ——从数据库对象中检索行update ——修改现有数据delete ——删除表中的行drop ——删除数据库中的表sp_who ——获取数据库当前活动用户的连接信息sp_help ——获取当前数据库中的数据库对象信息sp_helpdb ——获取数据库的相关信息(数据库名、总空间、剩余空间、设备使用情况、数据库选项等)sp_helpdevice ——获取数据库设备信息(设备名、物理路径、大小等)kill ——杀数据库连接sp_monitor ——获取数据库服务器从上次运行sp_monitor以来的CPU、IO等统计信息sp_dboption ——查看或设置数据选型sp_configure ——查看或设置数据库配置信息sp_spaceused ——查看数据库中某个表的记录数和占用的存储空间select name from sysobjects where type="U" order by name ——可以查出当前数据库中的所有表名,条件中的"U"表示用户表,其它的"P"表示存储过程,"TR"表示触发器,"V"表示视图,"R"表示规则select @@version ——从数据库中获取当前使用数据库的版本号sp_configure "memory Use" ——观察数据库内内存的分配情况select * from ManaClerk ——查询密码truncate table HisData1 ——清除数据空间二、数据库参数调整语句use mastergosp_configure "disable character set conversion",1gosp_configure 'max memory',320000gosp_configure 'number of locks',30000gosp_configure 'number of user connections',200gosp_configure 'number of devices',50gosp_configure 'procedure cache size',25000gosp_configure 'max online engines', 1gosp_cacheconfig 'default data cache','200M'go三、设置PSMS439数据库选项sp_dboption 'psms439', 'abort tran on', 'true'gosp_dboption 'psms439', 'select into/bulkcopy/pllsort', 'true' gosp_dboption 'psms439', 'trunc log on chkpt', 'true'go四、设置数据行锁语句use psms439goalter table CfgStation lock datarowsgoalter table CfgEquipment lock datarowsgoalter table CfgSignal lock datarowsgoalter table CfgWorkStation lock datarowsgoalter table CfgPort lock datarowsgoalter table CfgSamplerUnit lock datarowsgoalter table RunAlarmMsge lock datarowsgoalter table AlarmChange lock datarowsgoalter table ControlQueue lock datarowsgoalter table logrs lock datarowsgo五、为热点表创建命名缓存语句sp_cacheconfig 'CfgSignal_Cache','45M'gosp_bindcache CfgSignal_Cache, psms439, CfgSignalgosp_cacheconfig 'CfgStation_Cache','5M'gosp_bindcache CfgStation_Cache, psms439, CfgStation gosp_cacheconfig 'CfgEquipment_Cache','5M'gosp_bindcache CfgEquipment_Cache, psms439, CfgEquipmentgosp_cacheconfig 'CfgWorkStation_Cache','2M'gosp_bindcache CfgWorkStation_Cache, psms439, CfgWorkStationgosp_cacheconfig 'CfgSamplerUnit_Cache','5M'gosp_bindcache CfgSamplerUnit_Cache, psms439, CfgSamplerUnitgosp_cacheconfig 'RunAlarmMsge_Cache','5M'gosp_bindcache RunAlarmMsge_Cache, psms439, RunAlarmMsgegosp_cacheconfig 'AlarmChange_Cache','5M'gosp_bindcache AlarmChange_Cache, psms439, AlarmChangegosp_cacheconfig 'ControlQueue_Cache','2M'gosp_bindcache ControlQueue_Cache, psms439, ControlQueuegosp_cacheconfig 'logrs_Cache','45M'gosp_bindcache logrs_Cache, psms439, logrsgo六、数据库历史数据优化1、使用SqlDbx-NX.exe连接数据库后,执行SQL语句:IF EXISTS(SELECT 1 FROM sysobjects WHERE name='test' AND type='V') DROP VIEW testGOCREATE VIEW testASSELECTB.StationID,B.StationName,C.EquipmentID,C.EquipmentName,D.SignalID,D.SignalNa me,A.RecordTime,D.SpanTime,D.SpanValueFROM HisData A,CfgStation B,CfgEquipment C,CfgSignal DWHERE A.StationID=B.StationIDAND A.StationID=C.StationIDAND A.StationID=D.StationIDAND A.EquipmentID=C.EquipmentIDAND A.EquipmentID=D.EquipmentIDAND A.SignalID=D.SignalIDAND A.RecordTime<'2010-10-21' AND A.RecordTime>'2010-10-20'goSELECT DISTINCT StationID,StationName,EquipmentID,EquipmentName,SignalID,SignalName,SpanTim e,SpanValue,count(*) AS CntFROM testGROUP BY StationID,EquipmentID,SignalIDORDER BY Cnt DESCgoDROP VIEW testGO2、把数据导出excel表。

把数据量异常大的信号找出来进行分析。

3、按存储阀值进行分类,对历史数据进行分析(1)优化1/1/1①交流开关信号SELECT * FROM CfgSignal WHERE SignalName LIKE '交流开关%' AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '交流开关%' AND SpanValue ='1/1/1'②整流屏-线电压SELECT * FROM CfgSignal WHERE SignalName LIKE '%线电压' AND EquipmentID/10000=22 AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='30/30/30' WHERE SignalName LIKE '%线电压' AND EquipmentID/10000=22③模块限流状态SELECT * FROM CfgSignal WHERE SignalName LIKE '%限流状态' AND EquipmentID/10000=22 AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%限流状态' AND EquipmentID/10000=22④模块开关状态SELECT * FROM CfgSignal WHERE SignalName LIKE '%模块%开关状态' AND EquipmentID/10000=22 AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%模块%开关状态' AND EquipmentID/10000=22⑤输入相电压SELECT * FROM CfgSignal WHERE SignalName LIKE '%输入相电压%' AND SignalName not LIKE '%限%' AND EquipmentID/10000=22 ANDSignalName NOT LIKE '%告警状态%' AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='30/30/30' WHERE SignalName LIKE '%输入相电压%' AND SignalName not LIKE '%限%' AND EquipmentID/10000=22 AND SignalName NOT LIKE '%告警状态%'⑥输入相电压上下限SELECT * FROM CfgSignal WHERE SignalName LIKE '%输入相电压%' AND SignalName LIKE '%限%' AND EquipmentID/10000=22 ANDSignalName NOT LIKE '%告警状态%' AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%输入相电压%' AND SignalName LIKE '%限%' AND EquipmentID/10000=22 AND SignalName NOT LIKE '%告警状态%'⑦模块限流状态SELECT * FROM CfgSignal WHERE SignalName LIKE '%模块%限流状态%' AND EquipmentID/10000=22 AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%模块%限流状态%' AND EquipmentID/10000=22⑧浮充均充状态SELECT * FROM CfgSignal WHERE SignalName LIKE '%浮%均%状态%' ANDEquipmentID/10000=22 AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%浮%均%状态%' AND EquipmentID/10000=22⑨输出开关状态SELECT * FROM CfgSignal WHERE SignalName LIKE '%输出开关%状态%' AND EquipmentID/10000=22 AND SignalName NOT LIKE '%断%'AND SpanValue ='1/1/1'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%输出开关%状态%' AND EquipmentID/10000=22AND SignalName NOT LIKE '%断%'(2)优化0.1/0.1/0.1①UPS输入相电压SELECT * FROM CfgSignal WHERE SignalName LIKE '%输入相电压%' AND SignalName not LIKE '%限%' AND SignalName not LIKE '%限%'AND SignalName NOT LIKE '%告警状态%' AND EquipmentID /10000=31 UPDATE CfgSignal SET SpanValue ='30/30/30' WHERE SignalName LIKE '%输入相电压%' AND SignalName not LIKE '%限%' AND SignalName not LIKE '%限%'AND SignalName NOT LIKE '%告警状态%' AND EquipmentID /10000=31 UPDATE CfgSignal SET SpanTime ='28800/28800/28800' WHERE SignalName LIKE '%输入相电压%' AND SignalName not LIKE '%限%' AND SignalName not LIKE '%限%' AND SignalName NOT LIKE '%告警状态%' AND EquipmentID /10000=31②交流输入SELECT * FROM CfgSignal WHERE (SignalName LIKE '%交流输入%U%' OR SignalName LIKE '%交流输入%电压%')AND SignalName NOT LIKE '%告警状态%' AND SignalName NOT LIKE '%限%' AND SignalName NOT LIKE '%缺相%'AND SignalName NOT LIKE '%高%' AND SignalName NOT LIKE '%低%' UPDATE CfgSignal SET SpanValue ='30/30/30',SpanTime ='28800/28800/28800' WHERE (SignalName LIKE '%交流输入%U%' OR SignalName LIKE '%交流输入%电压%')AND SignalName NOT LIKE '%告警状态%' AND SignalName NOT LIKE '%限%' AND SignalName NOT LIKE '%缺相%'AND SignalName NOT LIKE '%高%' AND SignalName NOT LIKE '%低%'③电源-模块%输出电压保护点SELECT * FROM CfgSignal WHERE SignalName LIKE '%模块%输出电压保护点%'AND EquipmentID/10000=22 AND SpanValue ='0.1/0.1/0.1'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%模块%输出电压保护点%' AND EquipmentID/10000=22④电源-总负载电源SELECT * FROM CfgSignal WHERE (SignalName LIKE '%负载总电流%' OR SignalName LIKE '%总负载电流%') AND EquipmentID/10000=22AND SpanValue ='0.1/0.1/0.1'UPDATE CfgSignal SET SpanValue ='5/5/5',SpanTime ='28800/28800/28800'WHERE (SignalName LIKE '%负载总电流%' OR SignalName LIKE '%总负载电流%') AND EquipmentID/10000=22⑤温度SELECT * FROM CfgSignal WHERE SignalName LIKE '%温度' AND EquipmentID /10000=51 AND SpanValue ='0.1/0.1/0.1'SELECT * FROM CfgSignal WHERE SignalName LIKE '%温度' AND EquipmentID /10000=43 AND SpanValue ='0.1/0.1/0.1'SELECT * FROM CfgSignal WHERE SignalName LIKE '%温度' AND EquipmentID /10000=22 AND SpanValue ='0.1/0.1/0.1'UPDATE CfgSignal SET SpanValue ='2/2/2',SpanTime ='28800/28800/28800' WHERE SignalName LIKE '%温度' AND EquipmentID /10000=51 AND SpanValue ='0.1/0.1/0.1' UPDATE CfgSignal SET SpanValue ='2/2/2',SpanTime ='28800/28800/28800' WHERE SignalName LIKE '%温度' AND EquipmentID /10000=43 AND SpanValue ='0.1/0.1/0.1' UPDATE CfgSignal SET SpanValue ='0/0/0',SpanTime ='28800/28800/28800' WHERE SignalName LIKE '%温度' AND EquipmentID /10000=22 AND SpanValue ='0.1/0.1/0.1'⑥湿度SELECT * FROM CfgSignal WHERE SignalName LIKE '%湿度%' AND EquipmentID /10000=51 AND SpanValue ='0.1/0.1/0.1'SELECT * FROM CfgSignal WHERE SignalName LIKE '%湿度%' AND EquipmentID /10000=22 AND SpanValue ='0.1/0.1/0.1'UPDATE CfgSignal SET SpanValue ='2/2/2',SpanTime ='28800/28800/28800' WHERE SignalName LIKE '%湿度%' AND EquipmentID /10000=51 AND SpanValue ='0.1/0.1/0.1'UPDATE CfgSignal SET SpanValue ='5/5/5',SpanTime ='28800/28800/28800' WHERE SignalName LIKE '%湿度%' AND EquipmentID /10000=22 AND SpanValue ='0.1/0.1/0.1'(3)优化1/1/0①模块开关、限流、均浮充状态上面已优化,总负载电流上面也已优化②模块控制状态SELECT * FROM CfgSignal WHERE SignalName LIKE '%模块%控制%状态%' AND EquipmentID /10000=22AND SignalName NOT LIKE '%告警%'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%模块%控制%状态%' AND EquipmentID /10000=22AND SignalName NOT LIKE '%告警%'③模块风扇状态SELECT * FROM CfgSignal WHERE SignalName LIKE '%模块%风扇%' AND EquipmentID /10000=22AND SignalName NOT LIKE '%告警%'UPDATE CfgSignal SET SpanValue ='0/0/0' WHERE SignalName LIKE '%模块%风扇%' AND EquipmentID /10000=22AND SignalName NOT LIKE '%告警%'(4)优化0/.1/0①频率SELECT * FROM CfgSignal WHERE SignalName LIKE '%频率%'SELECT * FROM CfgSignal WHERE SignalName LIKE '%频率%' AND (EquipmentID /10000=13 OR EquipmentID /10000=31)UPDATE CfgSignal SET SpanValue ='2/2/2' WHERE SignalName LIKE '%频率%' UPDATE CfgSignal SET SpanValue ='1/1/1' WHERE SignalName LIKE '%频率%' AND (EquipmentID /10000=13 OR EquipmentID /10000=31)(5)优化0/5/0①电源模块温度在优化0.1/0.1/0.1时已做了该部分优化。

相关文档
最新文档