精华内容
下载资源
问答
  • 数据库sql语句大全实例
    千次阅读
    2021-07-19 21:02:10

    最简单的就是查询:select语句

    数据库操作语言DML:update、insert、delete等

    数据库定义语言DDL:create、drop、alter等等

    oracle取前几条数据语句
    sqlserver中可以用top n 的方法,oracle中用

    rownum,但如果只用

    rownum会随机取数据,如果想按一定顺序取前几条数据

    则可这样写:

    select * from (select列 from 表 where 条件 order by列 desc) where rownum<>

    select * from (select rownum r ,* from test) tt

    where tt.r 50 and tt.r <= 100;=””>

    这样子写是会全表扫描的的,小的表不觉得会有多慢,数据量大了你就知道有多不好了,改成这样就不会了

    oracle怎幺写”IF”语句?
    如果是 SQL 语句里面使用。

    使用 DECODE 或者 CASE WHEN

    DECODE 的用法就是

    DECODE(abc, 50, ‘A’, ‘B’)

    CASE WHEN 的用法就是

    CASE WHEN abc=50 THEN ‘A’ ELSE ‘B’ END

    如果是在存储过程里面的话,就是简单的 IF/ELSE 了

    SQL 语句的话,就是

    SELECT

    abc, DECODE(abc, 50, ‘A’, ‘B’)

    FROM

    什幺是oracle实例,写出在oracle如何查找实例名的sql语句
    oracle数据库实例(instance_name)是用于和操作系统进行联系的标识,也就是说数据库和操作系统之间的交互使用的是数据库实例。

    数据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。

    用系统sysdba权限登录后:查询oracle实例的方法:

    方法一:sql”select instance_name from v$instance“;

    方法二:使用show命令”show parameter instance“。

    求一份oracle的SQL语句大全 包括带数据的表
    建议看21天sql自学通

    下载地址

    [wenku.baidu.空白]

    表要自己在数据库环境上去建的。如果想操作,上述教材有相关指引,教你怎幺建一个表。对着上面教材提供的表和数据,在pl/sql developer上建立新的表,然后自己填上相关数据,就可以进行查询操作了。

    oracle sql语句 分为哪些
    Oracle SQL语句分类

    SQL(Structured Query Language)即结构化查询语句,应用程序与数据库交互的接口

    集数据操作、数据定义、数据控制等功能于一体

    ANSI先后制定推出了SQL-89、SQL-92、SQL-99标准

    oracle SQL 语句主要分为一下四类:

    DML(Data Mannipulation Language)数据操纵语言:查询、操纵数据表资料行

    SELECT : 检索数据库表或视图数据

    INSERT : 将数据行新增至数据库表或视图中

    UPDATE : 修改表或视图中现有的数据行

    DELETE : 删除表或视图中现有的数据行

    注意:DML语句不会自动提交事务!

    DDL(Data Definition Language)数据定义语言:建立、修改、删除数据库中数据表对象

    CREATE TABLE : 创建表

    ALTER TABLE : 修改表

    DROP TABLE : 删除表

    注意:DLL语句会自动提交事务!所以:DML语句事务提交之前可以回滚,DDL语句不能回滚事务

    DCL(Data Control Language)数据控制语言:用于执行权限授予与收回操作

    GRANT : 给用户或角色授予权限

    REVOKE : 收回用户或角色的所有权限

    TCL(Transactional Control Language)事物控制语言:维护数据的一致性

    COMMIT :提交已经进行的数据库改变

    ROLLBACK : 回滚已经进行的数据改变

    SAVEPOINT : 设置保存点,用于部分数据改变的取消

    oracle语句查询 or和and
    (FirstName=’Thomas’ OR FirstName=’William’) AND LastName=’Carter’ 会得到 lastname 必须为 carter ,firstname 为 thomas 或者 william的人

    thomas carter

    william carter

    FirstName=’Thomas’ OR FirstName=’William’ AND LastName=’Carter’ 可以得到 william carter 或者 firstname 为ithomas lastname 不一定是 carter的人 比如:

    thomas carter

    william carter

    thomas king

    求 oracle update 语句 一个能用的例子
    比如说我现在数据库中???表A我,有两列:ID和name,

    我现在需要把ID=1001的name字段改成‘小明’:

    答案如下:

    update?A?set?name=’小明’?where?ID=’1001′

    用oracle里的sql语言创建用户
    用如下语句创建用户:

    create?user?shopping?identified?by?shopping–用户名为shopping,密码为shopping

    default?tablespace?shopping?–默认表空间为shopping

    temporary?tablespace?shopping_temp;?–默认临时表空间为shopping_temp

    但一般创建用户后,需要赋予一定的权限:下边语句则是给shopping用户赋予connect,resource及dba权限。

    grant?connect,resource,dba?to?shopping;

    oracle创建用户语句
    创建用户的语句:

    Oracle创建用户(密码验证用户),可以采用CREATE USER命令。

    CREATE USER username IDENTIFIED BY password

    OR IDENTIFIED EXETERNALLY

    OR IDENTIFIED GLOBALLY AS ‘CN=user’

    [DEFAULT TABLESPACE tablespace]

    [TEMPORARY TABLESPACE temptablespace]

    [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace

    [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace

    [PROFILES profile_name]

    [PASSWORD EXPIRE]

    [ACCOUNT LOCK or ACCOUNT UNLOCK]

    其中:

    CREATE USER username:用户名,一般为字母数字型和“#”及“_”符号。

    IDENTIFIED BY password:用户口令,一般为字母数字型和“#”及“_”符号。

    IDENTIFIED EXETERNALLY:表示用户名在操作系统下验证,该用户名必须与操作系统中所

    定义的用户名相同。

    IDENTIFIED GLOBALLY AS ‘CN=user’:用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名。

    [DEFAULT TABLESPACE tablespace]:默认的表空间。

    [TEMPORARY TABLESPACE tablespace]:默认的临时表空间。

    [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace:用户可以使用的表空间的字节数。

    [PROFILES profile_name]:资源文件的名称。

    [PASSWORD EXPIRE]:立即将口令设成过期状态,用户再登录前必须修改口令。

    [ACCOUNT LOCK or ACCOUNT UNLOCK]:用户是否被加锁,默认情况下是不加锁的。

    oracle数据库的权限系统分为系统权限与对象权限:

    系统权限( database system privilege )可以让用户执行特定的命令集。例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限。

    对象权限( database object privilege )可以让用户能够对各个对象进行某些操作。例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。

    每个oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。

    更多相关内容
  • SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS)。
  •  SQL分类:  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)  DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)  DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)  首先,简要介绍基础语句:  1、...

    下列语句部分是Mssql语句,不可以在access中使用。
      SQL分类:
      DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
      DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
      DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
      首先,简要介绍基础语句:
      1、说明:创建数据库
    CREATE DATABASE database-name
      2、说明:删除数据库
    drop database dbname
      3、说明:备份sql server
      — 创建 备份数据的 device
    USE master
    EXEC sp_addumpdevice ’disk’, ’testBack’, ’c:\mssql7backup\MyNwind_1.dat’
      — 开始 备份
    BACKUP DATABASE pubs TO testBack
      4、说明:创建新表
    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],…)
      根据已有的表创建新表:
    A:create table tab_new like tab_old (使用旧表创建新表)
    B:create table tab_new as select col1,col2… from tab_old definition only
      5、说明:
      删除新表:drop table tabname
      6、说明:
      增加一个列:Alter table tabname add column col type
      注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
      7、说明:
      添加主键:Alter table tabname add primary key(col)
      说明:
      删除主键:Alter table tabname drop primary key(col)
      8、说明:
      创建索引:create [unique] index idxname on tabname(col….)
      删除索引:drop index idxname
      注:索引是不可更改的,想更改必须删除重新建。
      9、说明:
      创建视图:create view viewname as select statement
      删除视图:drop view viewname
    10、说明:几个简单的基本的sql语句
      选择:select * from table1 where 范围
      插入:insert into table1(field1,field2) values(value1,value2)
      删除:delete from table1 where 范围
      更新:update table1 set field1=value1 where 范围
      查找:select * from table1 where field1 like ’%value1%’ —like的语法很精妙,查资料!
      排序:select * from table1 order by field1,field2 [desc]
      总数:select count * as totalcount from table1
      求和:select sum(field1) as sumvalue from table1
      平均:select avg(field1) as avgvalue from table1
      最大:select max(field1) as maxvalue from table1
      最小:select min(field1) as minvalue from table1
      11、说明:几个高级查询运算词
      A: UNION 运算符
      UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
      B: EXCEPT 运算符
      EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
      C: INTERSECT 运算符
      INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
      注:使用运算词的几个查询结果行必须是一致的。
      12、说明:使用外连接
      A、left outer join:
      左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
    SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
      B:right outer join:
      右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
      C:full outer join:
      全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
      其次,大家来看一些不错的sql语句
      1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
      法一:select * into b from a where 1<>1
      法二:select top 0 * into b from a
      2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
    insert into b(a, b, c) select d,e,f from b;
      3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
    insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
      例子:…from b in ’"&Server.MapPath(".")&"\data.mdb" &"’ where…
      4、说明:子查询(表名1:a 表名2:b)
    select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
      5、说明:显示文章、提交人和最后回复时间
    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
    6、说明:外连接查询(表名1:a 表名2:b)
    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
      7、说明:在线视图查询(表名1:a )
    select * from (SELECT a,b,c FROM a) T where t.a > 1;
      8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
    select * from table1 where time between time1 and time2
    select a,b,c, from table1 where a not between 数值1 and 数值2
      9、说明:in 的使用方法
    select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
      10、说明:两张关联表,删除主表中已经在副表中没有的信息
    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
      11、说明:四表联查问题:
    select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where …
      12、说明:日程安排提前五分钟提醒
    SQL: select * from 日程安排 where datediff(’minute’,f开始时间,getdate())>5
      13、说明:一条sql 语句搞定数据库分页
    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
      14、说明:前10条记录
    select top 10 * form table1 where 范围
      15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
      16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
    (select a from tableA ) except (select a from tableB) except (select a from tableC)
      17、说明:随机取出10条数据
    select top 10 * from tablename order by newid()
      18、说明:随机选择记录
    select newid()
      19、说明:删除重复记录
    Delete from tablename where id not in (select max(id) from tablename group by col1,col2,…)
      20、说明:列出数据库里所有的表名
    select name from sysobjects where type=’U’
    21、说明:列出表里的所有的
    select name from syscolumns where id=object_id(’TableName’)
      22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
    select type,sum(case vender when ’A’ then pcs else 0 end),sum(case vender when ’C’ then pcs else 0 end),sum(case vender when ’B’ then pcs else 0 end) FROM tablename group by type
      显示结果:
    type vender pcs
    电脑 A 1
    电脑 A 1
    光盘 B 2
    光盘 A 2
    手机 B 3
    手机 C 3

    23、说明:初始化表table1
    TRUNCATE TABLE table1
      24、说明:选择从10到15的记录
    select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
    随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
      对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:
    Randomize
    RNumber = Int(Rnd499) +1
     
    While Not objRec.EOF
    If objRec(“ID”) = RNumber THEN
    … 这里是执行脚本 …
    end if
    objRec.MoveNext
    Wend
      这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?
      采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:
    Randomize
    RNumber = Int(Rnd499) + 1
     
    SQL = "SELECT * FROM Customers WHERE ID = " & RNumber
     
    set objRec = ObjConn.Execute(SQL)
    Response.WriteRNumber & " = " & objRec(“ID”) & " " & objRec(“c_email”)
      不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
    再谈随机数
      现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。
      为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:
      SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
      假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的ID 是自动生成的号码):
    SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & “+ 9”
      注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。
      随机读取若干条记录,测试过
    Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
    Sql server:select top n * from 表名 order by newid()
    mysql select * From 表名 Order By rand() Limit n
      Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)
      语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where …
      使用SQL语句 用…代替过长的字符串显示
      语法:
      SQL数据库:select case when len(field)>10 then left(field,10)+’…’ else field end as news_name,news_id from tablename
      Access数据库:SELECT iif(len(field)>2,left(field,2)+’…’,field) FROM tablename;
      Conn.Execute说明
      Execute方法
      该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
      1.执行SQL查询语句时,将返回查询得到的记录集。用法为:
      Set 对象变量名=连接对象.Execute(“SQL 查询语言”)
      Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。
      2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:
      连接对象.Execute “SQL 操作性语句” [, RecordAffected][, Option]
      ·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
      ·Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。
      ·BeginTrans、RollbackTrans、CommitTrans方法
      这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
      事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
      BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。
    SQL语句大全精要
    2006/10/26 13:46
    DELETE语句
    DELETE语句:用于创建一个删除查询,可从列在 FROM 子句之中的一个或多个表中删除记录,且该子句满足 WHERE 子句中的条件,可以使用DELETE删除多个记录。
    语法:DELETE [table.*] FROM table WHERE criteria
    语法:DELETE * FROM table WHERE criteria=’查询的字’
    说明:table参数用于指定从其中删除记录的表的名称。
    criteria参数为一个表达式,用于指定哪些记录应该被删除的表达式。
    可以使用 Execute 方法与一个 DROP 语句从数据库中放弃整个表。不过,若用这种方法删除表,将会失去表的结构。不同的是当使用 DELETE,只有数据会被删除;表的结构以及表的所有属性仍然保留,例如字段属性及索引。
    UPDATE
    有关UPDATE,急!!!!!!!!!!!
    在ORACLE数据库中
    表 A ( ID ,FIRSTNAME,LASTNAME )
    表 B( ID,LASTNAME)
    表 A 中原来ID,FIRSTNAME两个字段的数据是完整的
    表 B中原来ID,LASTNAME两个字段的数据是完整的
    现在要把表 B中的LASTNAME字段的相应的数据填入到A表中LASTNAME相应的位置。两个表中的ID字段是相互关联的。
    先谢谢了!!!
    update a set a.lastname=(select b.lastname from b where a.id=b.id)
      掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。
      练掌握SQL是数据库用户的宝贵财富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。
      在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
      SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。

    The Execute method executes a specified query, SQL statement, stored procedure, or provider-specific text.
    Execute的作用是:执行一个查询语句、陈述语句、程序或技术提供对象[provider]的详细文本。

    The results are stored in a new Recordset object if it is a row-returning query. A closed Recordset object will be returned if it is not a row-returning query.
    如果返回行[row-returning]查询语句,那么结果将被存储在一个新的记录对象中;如果它不是一个返回行[row-returning]查询语句,那么它将返回一个关闭的记录对象。

    Note: The returned Recordset is always a read-only, forward-only Recordset!
    注意:返回的Recordset是一个只读的、只向前兼容的Recordset。

    Tip: To create a Recordset with more functionality, first create a Recordset object. Set the desired properties, and then use the Recordset object’s Open method to execute the query.
    提示:在第一次创建Recordset对象时,需要将它创建为一个更具功能性的Recordset对象。设置一个我们所希望的属性,使用Recordset对象的Open方法去执行查询语句。
    Syntax for row-returning
    row-returning[返回行]语法
    |Set objrs=objconn.Execute(commandtext,ra,options)|
    Syntax for non-row-returning
    non-row-returning[非返回行]语法
    |–Syntax for non-row-returning
    non-row-returning[非返回行]语法|
    |objconn.Execute commandtext,ra,options|
    | Parameter参数 | Description描述 |
    |-commandtext

    -|-Required. The SQL statement, stored procedure, or provider-specific text to execute
    必要参数。指定需要执行的SQL语句,现存的程序或技术提供对象[provider]的详细文本-|
    | ra | Optional. Sets how the provider should evaluate the commandtext parameter. Can be one or more CommandTypeEnum or ExecuteOptionEnum values. Default is adCmdUnspecified
    可选参数。设置技术提供对象[provider]应该如何评估CommandText属性的功能。它可以是一个或多个CommandTypeEnum 或 ExecuteOptionEnum的值。默认值是adCmdUnspecified |
    Example
    案例
    | <%

    sql=“SELECT companyname FROM Customers”

    Set rs=conn.Execute(sql)

    %> |
    转自

    展开全文
  • sql语句大全+实例讲解

    万次阅读 多人点赞 2020-05-20 19:09:03
    1.创建3张表 //学生表创建 CREATE table student( Sno CHAR(9) PRIMARY KEY, ...truncat student //该语句是删除该张表,重新创建表,不是一条一条删除表中数据;且truncat只能作用于表,delete,drop可作用于表,视图

    1.创建3张表

    //学生表创建
    CREATE table student(
    Sno CHAR(9) PRIMARY KEY,
    Sname CHAR(20) UNIQUE,
    Ssex char(2),
    Sage SMALLINT,
    Sdept char(20)
    );
    
    //课程表创建
    CREATE table course(
    Cno char(4) PRIMARY KEY,
    Cname char(40) not NULL,
    Cpno char(4),
    Ccredit SMALLINT
    );
    
    //学生选课表创建
    CREATE table SC(
    Sno char(9),
    Cno char(4),
    Grade SMALLINT
    );
    

    2.向表中添加数据
    也可使用图形化工具Navicat或其他进行输入,

    //向学生表中添加数据
    INSERT into Student values(
    201215121,'李勇','男',20,'CS'),
    (201215122,'刘晨','女',19,'CS'),
    (201215123,'王敏','女',18,'MA'),
    (201215125,'张立','男',19,'IS'
    );
    
    //向课程表中添加数据
    insert into course VALUES(
    '1','数据库','5',4),
    '2','数学','',2),
    '3','信息系统','1',4),
    ('4','操作系统','6',3),
    ('5','数据结构','7',4),
    ('6','数据处理','',2),
    ('7','Java语言','6',4)
    
    //向学生选课表中添加数据
    insert into sc values
    (201215121,1,92),
    (201215121,2,85),
    (201215121,3,88),
    (201215122,2,58),
    (201215122,3,80)
    
    

    3.数据查询

    3.1单表查询

    3.1.1查询全体学生的学号与姓名
    select Sno,Sname 
    from student
    
    3.1.2查询全体学生的姓名,学号,所在系
    select Sname,Sno,Sdept
    from student
    
    3.1.3查询全体学生的详细记录
    select * from student
    
    3.1.4查询全体学生的姓名及其出生年份
    select Sname,2020-Sage
    from Student
    
    3.1.5查询全体学生的姓名,出生年份和所在的院系,要求用小写字母表示系名
    select Sname,2020-Sage,lower(Sdept)
    from student
    
    3.1.6查询选修了课程的学生学号
    select Sno
    from SC
    
    3.1.7查询计算机科学系全体学生的名单
    select Sname
    from student
    where Sdept='CS'
    
    3.1.8查询所有年龄在20岁以下的学生姓名及其年龄
    select Sname,Sage
    from student
    where Sage<20
    
    3.1.9查询考试成绩不及格的学生的学号
    select Sno
    from sc
    where Grade<60
    
    3.1.10查询年龄在20-23岁(包括20和23)之间的学生的姓名,系别,年龄
    select Sname,Sdept,Sage
    from student
    where Sage between 20 and 23
    
    3.1.11查询年龄不中20-23之间的学生姓名,系别,年龄
    select Sname,Sdept,Sage
    from student
    where Sage not between 20 and 23
    
    3.1.12查询计算机科学系(CS),数学系(MA),信息系(IS)学生的姓名和性别
    select Sname,Ssex
    from student
    where Sdept in('CS','MA','IS')
    
    3.1.13查询既不是CS,MA,也不是IS的学生的姓名和性别
    select Sname,Ssex
    from student
    where Sdept not in('CS','MA','IS')
    
    3.1.14查询学号为201215121的学生的详细情况
    select * 
    from student
    where Sno='201215121'
    
    3.1.15查询所有姓刘的学生的姓名,学号,性别
    select Sname,Sno,Ssex
    from student
    where Sname like '刘%'
    
    3.1.16查询姓欧阳且全名为3个汉字的学生的姓名
    select Sname
    from student
    where Sname like '欧阳_'
    
    3.1.17查询名字中第二个字为“阳”的学生的姓名和性别
    select Sname,Ssex
    from student
    where Sname like '_阳%'
    
    3.1.18查询所有不姓刘的学生的姓名,学号和性别
    select Sname,Sno,Ssex
    from student
    where Sname not like '刘%'
    
    3.1.19查询缺少成绩的学生的学号和响应的课程号
    select Sno,Cno
    from sc
    where grade is null
    
    3.1.20查询所有有成绩的学生的学号和课程号
    select Sno,Cno
    from sc
    where grade is not null
    
    3.1.21查询计算机科学系且年龄在20岁以下的学生的姓名
    select Sname
    from student
    where Sdept='CS' and Sage<=20
    
    3.1.22查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列
    //order by 默认升序,ASC是升序,DESC是降序
    select Sno,Grade
    from sc
    where Cno='3'
    order by Grade desc
    
    3.1.23查询全体学生情况,查询结果按所在系的系号升序排列,同一系的学生按年龄降序排列
    select *
    from student
    order by Sdept,Sage DESC
    
    3.1.24查询学生总人数
    select count(*)
    from student
    
    3.1.25查询选修了课程的学生人数
    //学生可以选多门课程,避免重复需在count函数里加distinct短语
    select count(distinct Sno)
    from sc
    
    3.1.26计算选修1号课程的学生平均成绩
    select avg(Grade)
    from sc
    where Cno='1'
    
    3.1.27查询选修1号课程的学生最高分数
    select max(Grade)
    from sc
    where Cno='1'
    
    3.1.28查询学生201215121选修课程的总学分数
    select sum(Grade)
    from sc
    where Sno='201215121'
    
    3.1.29求各个课程号及相应的选课人数
    //group up 是将查询结果按某个属性进行分组
    select Cno ,Count(Sno)
    from sc
    group by Cno
    
    3.1.30查询选修了3门以上课程的学生学号
    //having作用于组,这里先用group by按Sno进行分组,再用聚集函数count对每一组进行计数,用having提取出满足条件的组
    select Sno
    from sc
    group by Sno
    having count(*)>3
    
    3.1.31查询平均成绩大于等于90分的学生学号和平均成绩
    //where句中不能用聚集函数作为条件表达式
    select Sno,avg(Grade)
    from sc
    group by Sno
    having  avg(Grade)>=90
    

    3.2连接查询

    3.2.1查询每个学生及其选修课的情况
    select student.*,sc.*
    from Student,sc
    where student.Sno=sc.Sno
    
    3.2.2将上面 的例子用自然连接完成
    select student.Sno,Sname,Ssex,Sage,Sdept,Cno,grade
    from student,sc
    where student.sno=sc.sno
    
    3.2.3查询选修2号课程且成绩在90分以上的所有学生的学号和姓名
    select student.Sno,Sname
    from Student,sc
    where student.Sno=sc.Sno and 
          sc.Cno='2'   and 
          sc.Grade>=90
    
    3.2.4查询每一门课的间接先修课(先修课的先修课)
    //先对一门课找到其先修课,再按此先修课的课程号查找它的先修课,
    //将表与自身连接,就要取别名
    select FIRST.Cno,second.Cpno
    from Course first,Course SECOND
    where `first`.Cpno=`SECOND`.Cno
    
    3.2.5查询每个学生的学号,姓名,选修的课程名及成绩
    select student.Sno,Sname,Cname,Grade
    from student,sc,course
    where student.Sno=sc.Sno AND
          sc.Cno=course.Cno
    

    3.3嵌套查询

    3.3.1查询与刘晨在同一个系学习的学生
    select Sno,Sname,Sdept
    from student
    where Sdept in(
        select Sdept
        from student
        where Sname='刘晨'
    )
    
    3.3.2查询选修了课程名为“信息系统”的学生学号和姓名
    //嵌套查询太多了,用连接查询呈现出来
    select student.Sno,Sname
    from student,sc,course
    where student.Sno=sc.Sno  and 
          sc.Cno=course.Cno and
          course.Cname='信息系统'
    
    3.3.3找出每个学生超过他自己选修课程平均成绩的课程号
    select Sno,Cno
    from sc x
    where Grade >=(
        select avg(Grade)
        from sc y
        where y.Sno=x.Sno
    )
    
    3.3.4查询非计算机系中比计算机系任意学生年龄小的学生姓名和年龄
    //任意:any   所有:all
    select Sname,Sage
    from student
    where Sage<any(
       select Sage
       from student
       where Sdept='CS'
    )
    
    3.3.5查询非计算机系中比计算机系所有学生年龄都小的学生姓名和年龄
    select Sname,Sage
    from student
    where Sage<all(
       select Sage
       from student
       where Sdept='CS'
    )
    
    3.3.6查询所有选修了1号课程的学生姓名
    select Sname
    from student,sc
    where student.Sno=sc.Sno and 
          sc.Cno='1'
    
    3.3.7查询选修了全部课程的学生姓名
    select Sname
    from student
    where not exists(
      select * 
      from course
      where not exists(
         SELECT *
         from sc
         where Sno=student.Sno AND 
         Cno=course.Cno
      )    
    )
    

    3.4集合查询

    3.4.1查询选修了1号课程或则2号课程的学生
    select Sno
    from sc
    where Cno='1'
    UNION
    select Sno
    from sc
    where Cno='2'
    
    3.4.2查询既选修了课程1又选修了课程2的学生
    select Sno
    from sc
    where Cno='1'
    intersert
    select Sno
    from sc
    where Cno='2'
    

    4.数据更新

    4.1插入数据

    4.1.1将一个新学生元组(学号:201215128,姓名:陈东,性别:男,系别:IS,年龄:18岁)
    insert into student
    values ('201215128','陈东','男',18,'IS')
    
    4.1.2插入一条选课记录
    insert into sc(Sno,Cno) VALUES('201215128','1')
    
    4.1.3对每一个系,求学生的平均年龄,并把结果存入数据库
    //首先创建一张表来存放数据
    create table Deptage(
      Sdept char(15),
      avg_age smallint
    )
    
    //计算数据,存放到表中
    insert into Deptage(Sdept,avg_age)
    select Sdept,avg(Sage)
    from student
    group by Sdept 
    

    4.2修改数据

    4.2.1将学生201215121的年龄改为22岁
    update student
    set Sage=22
    where Sno='201215121'
    
    4.2.2将所有学生的年龄增加1岁
    update student
    set Sage=Sage+1
    
    4.2.3将计算机系全体学生的成绩置0
    update student
    set Sage=0
    where Sdept='CS'
    

    4.3删除数据

    4.3.1删除学号为201215128的学生记录
    delete 
    from student
    where Sno='201215128'
    
    4.3.2删除计算机系所有学生的选课记录
    delete 
    from sc
    where Sno in(
      select Sno
      from student
      where Sdept='CS'
    )
    
    4.3.3删除学生表所有记录
    truncat student    //该语句是删除该张表,重新创建表,不是一条一条删除表中数据;且truncat只能作用于表,delete,drop可作用于表,视图
    

    5.常用关键字总结

    5.1 distinct
    5.1.1 作用于单列
    select distinct 列名  //去重
    
    5.1.2 作用多列
    select distinct 列名1,列名2,列名3    //对3列都去重
    
    5.1.3 与函数一起使用
    select count(distinct 列名)   //计算不重复的列名个数
    
    展开全文
  • SQL语句大全实例

    千次阅读 2021-11-04 09:19:14
    SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATETABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAMECHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) ...

    SQL语句实例

    表操作  

     

    例 1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下:

       CREATE TABLE  STUDENTS

      (SNO      NUMERIC (6, 0) NOT NULL

       SNAME   CHAR (8) NOT NULL

      AGE      NUMERIC(3,0)

      SEX      CHAR(2)

       BPLACE  CHAR(20)

       PRIMARY KEY(SNO))

    例 2  对于表的教学管理数据库中的表 ENROLLS ,可以定义如下:

           CREATE  TABLE  ENROLLS

           (SNO      NUMERIC(6,0)  NOT NULL

           CNO     CHAR(4)  NOT NULL

           GRADE   INT

           PRIMARY KEY(SNO,CNO)

           FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)

           FOREIGN KEY(CNO) REFERENCES COURSES(CNO)

           CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)))

    例 3  根据表的 STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。

           CREATE TABLE GIRL

           AS SELECT SNO, SNAME, AGE

           FROM STUDENTS

           WHERE SEX=' 女 ';


     

    例 4  删除教师表 TEACHER 。

           DROP  TABLE  TEACHER

    例 5  在教师表中增加住址列。

          ALTER TABLE TEACHERS

          ADD (ADDR CHAR(50))

    例 6  把 STUDENTS 表中的 BPLACE 列删除,并且把引用 BPLACE 列的所有视图和约束也一起删除。

           ALTER TABLE STUDENTS

           DROP BPLACE CASCADE

    例 7  补充定义 ENROLLS 表的主关键字。

          ALTER TABLE ENROLLS

          ADD PRIMARY KEY (SNO,CNO) ;

    视图操作(虚表)

    例 9  建立一个只包括教师号、姓名和年龄的视图 FACULTY 。 ( 在视图定义中不能包含 ORDER BY 子句 )

           CREATE VIEW FACULTY

           AS SELECT TNO, TNAME, AGE

           FROM TEACHERS

    例 10  从学生表、课程表和选课表中产生一个视图 GRADE_TABLE , 它包括学生姓名、课程名和成绩。

           CREATE VIEW GRADE_TABLE

           AS SELECT  SNAME,CNAME,GRADE

           FROM  STUDENTS,COURSES,ENROLLS

           WHERE  STUDENTS.SNO = ENROLLS.SNO AND

           COURSES.CNO=ENROLLS.CNO

    例 11  删除视图 GRADE_TABLE

           DROP VIEW GRADE_TABLE RESTRICT

    索引操作

    例 12  在学生表中按学号建立索引。

           CREATE  UNIQUE  INDEX  ST

           ON STUDENTS (SNO,ASC)

    例 13  删除按学号所建立的索引。

           DROP INDEX ST

    数据库模式操作

    例 14  创建一个简易教学数据库的数据库模式   TEACHING_DB ,属主为 ZHANG 。

           CREATE SCHEMA TEACHING_DB  AUTHRIZATION  ZHANG

    例 15  删除简易教学数据库模式 TEACHING_DB 。(( 1 )选用 CASCADE ,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全部被删除。( 2 )选用 RESTRICT ,即本数据库模式下属的基本表、视图、索引等事先已清除,才能删除本数据库模式,否则拒绝删除。)

           DROP SCHEMA TEACHING_DB CASCADE

    单表操作

     

    例 16  找出 3 个学分的课程号和课程名。

            SELECT CNO, CNAME

            FROM   COURSES

            WHERE   CREDIT = 3

    例 17  查询年龄大于 22 岁的学生情况。

            SELECT  *

            FROM   STUDENTS

            WHERE  AGE > 22

    例 18   找出籍贯为河北的男生的姓名和年龄。

            SELECT SNAME, AGE

            FROM   STUDENTS

            WHERE   BPLACE = ' 河北 '  AND  SEX = ' 男 '

    例 19  找出年龄在 20 ~ 23 岁之间的学生的学号、姓名和年龄,并按年龄升序排序。 (ASC (升序)或 DESC (降序)声明排序的方式,缺省为升序。 )

            SELECT SNO, SNAME, AGE

            FROM   STUDENTS

            WHERE  AGE BETWEEN 20 AND 23

            ORDER  BY  AGE

    例 20  找出年龄小于 23 岁、籍贯是湖南或湖北的学生的姓名和性别。(条件比较运算符=、< 和逻辑运算符 AND (与),此外还可以使用的运算符有:>(大于)、>=(大于等于)、<=(小于等于)、<>(不等于)、 NOT (非)、 OR (或)等。

    谓词 LIKE 只能与字符串联用,常常是 “ <列名>   LIKE  pattern” 的格式。特殊字符 “_” 和 “%” 作为通配符。

    谓词 IN 表示指定的属性应与后面的集合(括号中的值集或某个查询子句的结果)中的某个值相匹配,实际上是一系列的 OR (或)的缩写。谓词 NOT IN 表示指定的属性不与后面的集合中的某个值相匹配。

    谓词 BETWEEN 是 “ 包含于 … 之中 ” 的意思。)

           SELECT SNAME, SEX

           FROM   STUDENTS

           WHERE  AGE < 23 AND  BPLACE  LIKE' 湖% '

           或

           SELECT SNAME, SEX

           FROM   STUDENTS

           WHERE  AGE < 23 AND  BPLACE  IN  ( ' 湖南 ' , ' 湖北 ' )

    例 22  找出学生表中籍贯是空值的学生的姓名和性别。(在 SQL 中不能使用条件:<列名>= NULL 。在 SQL 中只有一个特殊的查询条件允许查询 NULL 值:)

          SELECT SNAME, SEX

          FROM   STUDENTS

          WHERE  BPLACE IS NULL


     

    多表操作

     

    例 23  找出成绩为 95 分的学生的姓名。(子查询)

           SELECT SNAME

           FROM   STUDENTS

           WHERE   SNO =

                 (SELECT SNO

                  FROM   ENROLLS

                  WHERE  GRADE = 95)

    例 24  找出成绩在 90 分以上的学生的姓名。

           SELECT  SNAME

           FROM   STUDENTS

           WHERE  SNO IN

                   (SELECT SNO

                   FROM ENROLLS

                   WHERE GRADE > 90)

           或

           SELECT  SNAME

           FROM   STUDENTS

           WHERE  SNO = ANY

                   (SELECT SNO

                   FROM ENROLLS

                   WHERE GRADE > 90)

    例 25  查询全部学生的学生名和所学课程号及成绩。(连接查询)

           SELECT  SNAME, CNO, GRADE

           FROM   STUDENTS, ENROLLS

           WHERE  STUDENTS.SNO = ENROLLS.SNO

    例 26  找出籍贯为山西或河北,成绩为 90 分以上的学生的姓名、籍贯和成绩。(当构造多表连接查询命令时,必须遵循两条规则。第一,连接条件数正好比表数少 1 (若有三个表,就有两个连接条件 ) ;第二,若一个表中的主关键字是由多个列组成,则对此主关键字中的每一个列都要有一个连接条件(也有少数例外情况))

           SELECT  SNAME, BPLACE, GRADE

           FROM   STUDENTS, ENROLLS

           WHERE  BPLACE IN (‘ 山西 ’ , ‘ 河北 ’)  AND  GRADE >= 90  AND  STUDENTS.SNO=ENROLLS.SNO

    例 28  查出课程成绩在 80 分以上的女学生的姓名、课程名和成绩。( FROM 子句中的子查询)

           SELECT  SNAME,CNAME, GRADE

           FROM   (SELECT SNAME, CNAME , GRADE

                           FROM  STUDENTS, ENROLLS,COURSES

                           WHERE  SEX = ' 女 ')

           AS TEMP (SNAME, CNAME,GRADE)

           WHERE  GRADE > 80

    表达式与函数的使用

    例 29  查询各课程的学时数。(算术表达式由算术运算符+、-、 * 、/与列名或数值常量所组成。)

           SELECT  CNAME,COURSE_TIME = CREDIT*16

           FROM   COURSES

    例 30  找出教师的最小年龄。(内部函数: SQL 标准中只使用 COUNT 、 SUM 、 AVG 、 MAX 、 MIN 函数,称之为聚集函数( Set Function )。 COUNT 函数的结果是该列统计值的总数目, SUM 函数求该列统计值之和, AVG 函数求该列统计值之平均值, MAX 函数求该列最大值, MIN 函数求该列最小值。)

           SELECT  MIN(AGE)

           FROM   TEACHERS

    例 31  统计年龄小于等于 22 岁的学生人数。(统计)

           SELECT  COUNT(*)

           FROM   STUDENTS

           WHERE  AGE < = 22

    例 32  找出学生的平均成绩和所学课程门数。

           SELECT  SNO, AVG(GRADE), COURSES = COUNT(*)

           FROM   ENROLLS

           GROUP  BY SNO

    例 34  找出年龄超过平均年龄的学生姓名。

    SELECT SNAME

    FROM STUDENTS

    WHERE AGE >

         (SELECT  AVG(AGE)

           FROM   STUDENTS)


     

    例 35  找出各课程的平均成绩,按课程号分组,且只选择学生超过 3 人的课程的成绩。( GROUP BY 与 HAVING

           GROUP BY 子句把一个表按某一指定列(或一些列)上的值相等的原则分组,然后再对每组数据进行规定的操作。

           GROUP BY 子句总是跟在 WHERE 子句后面,当 WHERE 子句缺省时,它跟在 FROM 子句后面。

           HAVING 子句常用于在计算出聚集之后对行的查询进行控制。)

            SELECT CNO, AVG(GRADE), STUDENTS = COUNT(*)

            FROM ENROLLS

            GROUP BY CNO

            HAVING COUNT(*) >= 3

    相关子查询

    例 37  查询没有选任何课程的学生的学号和姓名。(当一个子查询涉及到一个来自外部查询的列时,称为相关子查询( Correlated Subquery) 。相关子查询要用到存在测试谓词 EXISTS 和 NOT EXISTS ,以及 ALL 、 ANY ( SOME )等。)

           SELECT SNO, SNAME

           FROM   STUDENTS

           WHERE  NOT EXISTS

                 (SELECT *

                 FROM ENROLLS

                 WHERE ENROLLS.SNO=STUDENTS.SNO)

    例 38   查询哪些课程只有男生选读。

           SELECT DISTINCT CNAME

           FROM   COURSES C

           WHERE ' 男 ' = ALL

                  (SELECT SEX

                   FROM ENROLLS , STUDENTS

                   WHERE ENROLLS.SNO=STUDENTS.SNO AND

                         ENROLLS.CNO=C.CNO)

    例 39  要求给出一张学生、籍贯列表,该表中的学生的籍贯省份,也是其他一些学生的籍贯省份。

           SELECT  SNAME, BPLACE

           FROM   STUDENTS A

           WHERE  EXISTS

                  (SELECT *

                    FROM STUDENTS B

                    WHERE A.BPLACE=B.BPLACE AND

                          A.SNO < > B.SNO)


     

    例 40  找出选修了全部课程的学生的姓名。

           本查询可以改为:查询这样一些学生,没有一门课程是他不选修的。

           SELECT  SNAME

           FROM   STUDENTS

           WHERE  NOT EXISTS

                  (SELECT *

                   FROM COURSES

                   WHERE  NOT EXISTS

                           (SELECT *

                            FROM ENROLLS

                            WHERE ENROLLS.SNO = STUDENTS.SNO

                                AND ENROLLS.CNO = COURSES.CNO))

    关系代数运算

    例 41  设有某商场工作人员的两张表:营业员表 SP_SUBORD 和营销经理表 SP_MGR ,其关系数据模式如下:

           SP_SUBORD (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)

           SP_MGR (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)

           其中,属性 SALPERS_ID 为工作人员的编号 , SALPERS_NAME 为工作人员的姓名 , MANAGER_ID 为所在部门经理的编号 , OFFICE 为工作地点。

    若查询全部商场工作人员,可以用下面的 SQL 语句:

           (SELECT * FROM SP_SUBORD)

           UNION

           (SELECT * FROM SP_MGR)

           或等价地用下面的 SQL 语句:

           SELECT *

           FROM (TABLE SP_SUBORD UNION TABLE SP_MGR)

    ( 2 ) INTERSECT

            (SELECT * FROM SP_SUBORD)

            INTERSECT

            (SELECT * FROM SP_MGR)

           或等价地用下面的 SQL 语句:

           SELECT *

           FROM (TABLE SP_SUBORD INTERSECT TABLE SP_MGR)

           或用带 ALL 的 SQL 语句:

           (SELECT * FROM SP_SUBORD)

            INTERSECTALL

           (SELECT * FROM SP_MGR)

           或

           SELECT *

           FROM (TABLE SP_SUBORD INTERSECT ALL TABLE SP_MGR)

    ( 3 ) EXCEPT

           (SELECT * FROM SP_MGR)

           EXCEPT

           (SELECT * FROM SP_SUBORD)

           或等价地用下面的 SQL 语句:

           SELECT *

           FROM (TABLE SP_MGR EXCEPT TABLE SP_ SUBORD)

           或用带 ALL 的 SQL 语句:

           (SELECT * FROM SP_MGR)

           EXCEPT  ALL

           (SELECT * FROM SP_SUBORD)

    例 42  查询籍贯为四川、课程成绩在 80 分以上的学生信息及其成绩。(自然连接)

           (SELECT * FROM STUDENTS

            WHERE BPLACE=‘ 四川 ’)

           NATURAL JOIN

           (SELECT * FROM ENROLLS

            WHERE GRADE >=80)

    例3.43          列出全部教师的姓名及其任课的课程号、班级。

    (外连接与外部并外连接允许在结果表中保留非匹配元组,空缺部分填以 NULL 。外连接的作用是在做连接操作时避免丢失信息。

           外连接有 3 类:

    ( 1 )左外连接( Left Outer Join )。连接运算谓词为 LEFT [OUTER] JOIN ,其结果表中保留左关系的所有元组。

    ( 2 )右外连接( Right Outer Join )。连接运算谓词为 RIGHT [OUTER] JOIN ,其结果表中保留右关系的所有元组。

    ( 3 )全外连接( Full Outer Join )。连接运算谓词为 FULL [OUTER] JOIN ,其结果表中保留左右两关系的所有元组。)

             SELECT TNAME, CNO, CLASS

             FROM TEACHERS LEFT OUTER JOIN TEACHING USING (TNO)

    SQL 的数据操纵

    例 44  把教师李映雪的记录加入到教师表 TEACHERS 中。(插入)

           INSERT INTO TEACHERS

           VALUES(1476 , ' 李映雪 ' , 44 , ' 副教授 ')

    例 45  成绩优秀的学生将留下当教师。

           INSERT INTO TEACHERS (TNO , TNAME)

           SELECT DISTINCT SNO , SNAME

           FROM   STUDENTS , ENROLLS

           WHERE STUDENTS.SNO = ENROLLS.SNO ANDGRADE >= 90

    例 47  把所有学生的年龄增加一岁。(修改)

           UPDATE STUDENTS

           SET AGE = AGE+1

    例 48  学生张春明在数据库课考试中作弊,该课成绩应作零分计。

           UPDATE ENROLLS

           SET GRADE = 0

           WHERE CNO = 'C1' AND

                ' 张春明 ' =

                (SELECT SNAME

                FROM STUDENTS

                WHERE STUDENTS.SNO=ENROLLS.SNO)

    例 49  从教师表中删除年龄已到 60 岁的退休教师的数据。(删除)

           DELETE FROM TEACHERS

           WHERE  AGE >= 60

    SQL 的数据控制

    例 50  授予 LILI 有对表 STUDENTS 的查询权。(表/视图特权的授予

           一个 SQL 特权允许一个被授权者在给定的数据库对象上进行特定的操作。授权操作的数据库对象包括:表 / 视图、列、域等。授权的操作包括: INSERT 、 UPDATE 、 DELETE 、 SELECT 、 REFERENCES 、 TRIGGER 、 UNDER 、 USAGE 、 EXECUTE 等。其中 INSERT 、 UPDATE 、 DELETE 、 SELECT 、 REFERENCES 、 TRIGGER 有对表做相应操作的权限,故称为表特权。)

           GRANT SELECT ON STUDENTS

           TO LILI

           WITH GRANT OPTION

    例 51  取消 LILI 的存取 STUDENTS 表的特权。

           REVOKE ALL

           ON STUDENTS

           FROM LILI CASCADE

     


    不断补充中:
    1.  模糊查找:

    它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。
      可使用以下通配字符:
      百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
      下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
      方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[]相同,但它要求所匹配对象为指定字符以外的任一个字符。
    例如:
      限制以Publishing结尾,使用LIKE '%Publishing'
      限制以A开头:LIKE '[A]%'
      限制以A开头外:LIKE '[^A]%'

    2.更改表格 
             ALTER TABLE table_name 
            ADD COLUMN column_name DATATYPE 
            说明:增加一个栏位(没有删除某个栏位的语法。)
            ALTER TABLE table_name
            ADD PRIMARY KEY (column_name)
            说明:更改表得的定义把某个栏位设为主键。
            ALTER TABLE table_name
            DROP PRIMARY KEY (column_name)
            说明:把主键的定义删除。

    3.group by

    在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

    在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数

    select max(sal),job emp group byjob;
    (注意max(sal),job的job并非一定要出现,但有意义)

    查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。

    select deptno,sum(sal) from empwhere sal>1200 group by deptno having sum(sal)>8500 order by deptno;

    当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件

    where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
    having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

    查询每个部门的每种职位的雇员数
    select deptno,job,count(*) from emp group by deptno,job;

    4.外连接与内连接

    有时候,即使在连接的表中没有相应的行,用户可能想从一张表中看数据,Oracle提供了外连接实现该功能。
    内连接是指连接查询只显示完全满足连接条件的记录,即等值连接,外连接的查询结果是内连接查询结果的扩展。外连接不仅返回满足连接条件的所有记录而且也返回了一个表中那些在另一个表中没有匹配行的记录。外连接的操作符是“+”。“+”号放在连接条件中信息不完全的那一边(即没有相应行的那一边)。运算符“+”影响NULL行的建立。建一行或多行NULL来匹配连接的表中信息完全的行。

    外连接运算符“+”只能出现在where子句中表达式的一边。

    假如在多张表之间有多个连接条件,外连接运算符不能使用or,in逻辑运算符与其它条件组合。


    假如emp表中deptno=10的ename为空值,dept表中deptno=20的loc为空值:

    1.

    select
    ename,dept.deptno,loc
    from
    emp,dept
    where
    emp.depno(+)=dept.deptno;

    如果在dept.deptno中有的数值在emp.deptno中没有值,则在做外连接时,
    结果中ename会产生一个空值。(emp.deptno=10)

    2.

    select
    ename,dept.deptno,loc
    from
    emp,dept
    where
    emp.depno=dept.deptno(+);

    如果在emp.deptno中有的数值在dept.deptno中没有值,则在做外连接时,
    结果中loc会产生一个空值。。(dept.deptno=20)


    5.自连接

    自连接是指同一张表的不同行间的连接。该连接不受其他表的影响。用自连接可以比较同一张表中不同行的某一列的值。因为自连接查询仅涉及到某一张表与其自身的连接。所以在from子句中该表名出现两次,分别用两个不同的别名表示,两个别名当作两张不同的表进行处理,与其它的表连接一样,别名之间也使用一个或多个相关的列连接。为了区分同一张表的不同行的列,在名前永别名加以限制。

    select
    worker.ename,
    manager.ename manager
    from
    emp worker,
    emp manager
    where
    work.mgr=manager.empno;

    6.集合运算

    基合运算符可以用于从多张表中选择数据。

    ①UNION运算
    用于求两个结果集合的并集(两个结果集合的所有记录),并自动去掉重复行。

    select ename,sal from account where sal>2000
    union
    select ename,sal from research where sal>2000
    union
    select ename,sal from sales where sal>2000;

    注:ename,sal 是必须一致的。

    ②UNION ALL运算
    用于求两个结果集合的并集(两个结果集中的所有记录),并且不去掉重复行。

    select ename,sal from account wheresal>2000
    union
    select ename,sal from research where sal>2000
    union
    select ename,sal from sales where sal>2000;

    ③INTERSECT运算
    intersect运算返回查询结果中相同的部分。

    各部门中有哪些相同的职位?

    select Job from account
    intersect
    select Job from research
    intersect
    select Job from sales;


    ④MINUS运算
    minus返回两个结果集的差集。(在第一个结果集中存在的,而在第二个结果集中不存在的行。)

    有那些职位是财务部中有,而在销售部门中没有?

    select Job from account
    minus
    select Job from sales;

     

    展开全文
  • 达梦数据库常用sql语句大全

    千次阅读 2021-07-12 11:12:53
    1.更新模式下统计信息: DBMS_STATS.GATHER_SCHEMA_STATS( '模式名', 100, FALSE, 'FOR ALL COLUMNS SIZE AUTO'); 2.初始化代理环境: ... SF_GET_SESSION_SQL(SESS_ID) ,--获取完整sql sess_id ,
  • SQL数据库更新语句操作实例

    千次阅读 2020-12-13 14:56:09
    SQL Server数据库更新操作 名称解释(不区分大小写) student:学生表,属性分别为sno学号、sname学生姓名、age年龄、sex性别、dno学院编号、birthday生日 sc选课信息表:sno学号、cno课程号、grade成绩 dept学院...
  • 史上超强最常用SQL语句大全

    万次阅读 多人点赞 2021-01-27 11:13:31
    史上超强最常用SQL语句大全,) 1)DDL--数据定义语言 用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等 2) DML--数据操作语言 用来对数据库中表的数据进行增删改。关键字:insert, delete, ...
  • 主要介绍了帝国CMS下在PHP文件中调用数据库类执行SQL语句实例,本文还详细介绍了帝国CMS数据库类中的一些常用方法,需要的朋友可以参考下
  • 微软SQL数据库作业语句实例,包括数据库的创建、增减删除查找插入语句等常用语句的实例。
  • 本文实例讲述了T-sql语句修改SQL Server数据库逻辑名、数据库名、物理名的方法。分享给大家供大家参考,具体如下: 更改MSSQL数据库物理文件名Sql语句的写法 注意:要在活动监视器里面确保没有进程连接你要改名的...
  • c#与数据库的连接及增删改除的各种操作,全部经过上机验证。学习软件的过程中,数据库起着至关重要的作用。软件行业里面有句老话,不会数据库就没有入门。软件思想可以慢慢培养,但是数据库的链接是一定要学会的。增...
  • Oracle 常用SQL语句大全(精)

    千次阅读 2022-04-21 14:00:00
    exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y ...buffer: 缓存大小 ...将数据库中system用户与sys用户的表导出 exp demo/demo@orcl file=d:\backup\1.dm
  • 本文实例讲述了Mysql数据库之常用sql语句。分享给大家供大家参考,具体如下: 前面讲述了Mysql sql基本语句。这里继续总结一下SQL语句的进阶内容。 SQL语句进阶 1.查询字段: ————查询所有字段 select * from...
  • 摘要:C#源码,数据库应用,数据库查询 一个C# SQL语句查询实例:利用OR语句进行数据库查询,例如用来查询数学成绩或英语成绩大于95分的学生信息,在平时的数据库编程开发中,使用相当广泛,特别是初接触C#数据库编程...
  • 数据库-SQL语句创建与修改

    千次阅读 2021-10-03 16:54:29
    文章目录SQL语句创建数据库例子SQL语句修改数据库例子ALTER DATABASE语句的语法如下子句的语法如下: SQL语句创建数据库 例子 CREATE DATABASE NewsDB ON PRIMARY ( NAME=NewsDB, FILENAME='D:\XXXX\NewsDB.mdf', ...
  • 主要介绍了C#实现连接SQL Server2012数据库并执行SQL语句的方法,结合实例形式较为详细的分析了C#连接SQL Server2012数据库并执行查询、插入等操作的相关实现技巧,需要的朋友可以参考下
  • SQL查询语句大全集锦(超经典)
  • 数据库10次实验SQL语句 包括(数据库和表的创建、数据库的查询、数据库查询和数据操纵、视图CRUD、完整性约束、权限管理、数据库备份和恢复、存储过程、触发器)(本资源对应本人博客的数据库实验系列的3个博文)
  • oracle数据库教程(dbf,表空间,数据库实例,Oracle实例,SQL语句,oracle客户端工具)
  • wincc对sql数据库进行读写的实例,由winc集成的vb代码功能在画面中实现对sql数据库的读写。使用环境为博途wincc为方便大家 对代码进行了txt处理 过程进行了截屏处理。代码有注释,截屏有说明。
  • MySQL常用SQL语句大全

    万次阅读 多人点赞 2017-12-21 19:22:28
    MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle、MS-SQL ,MySQL更拥有轻便、灵活、开发速度快的特色,更适用于中小型数据的存储与架构。MySQL之所以能够被数以万计的网站采用,也是...
  • 数据库SQL命令大全

    千次阅读 2021-04-18 13:20:11
    一、关于数据库SQL命令 1.创建数据库 CREATE DATABASE 数据库名称 [ON [FILEGROUP 文件组名称] ( NAME=数据文件逻辑名称, FILENAME='路径+数据文件名', SIZE=数据文件初始大小, MAXSIZE=数据文件最大容量, ...
  • SQL (structured query language)结构...SQL语句 注释快捷键: ctrl + / 取消注释快捷键: ctrl + shift + / 1.对表的操作 创建表: create table 表名( 字段名 类型 约束(不是必填选项), 字段名 类型 约.
  • SqlServer数据库SQL语句(超详细)

    千次阅读 2018-10-29 11:36:00
    一、基础 1、说明:创建数据库 CREATE DATABASE database-name ...3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind...
  • 常用SQL语句大全

    千次阅读 2019-10-19 19:56:01
    日常工作或学习过程中,我们可能会经常用到某些SQL,建议大家多多整理记录下这些常用的SQL,这样后续用到会方便很多。笔者在工作及学习过程中也整理了下个人常用的SQL,现在分享给你!可能有些SQL你还不常用,但还是...
  • 数据库SQL语句

    2012-12-20 23:39:23
    数据库查询,sql语句介绍,实例数据库,主要是.net示例中用到的数据库SQl语句
  • SQL 选择数据库 USE语句

    千次阅读 2021-05-05 16:41:20
    SQL 选择数据库 USE语句  当SQL Schema中有多个数据库时,在开始操作之前,需要选择一个执行所有操作的数据库。  SQL USE语句用于选择SQL架构中的任何现有数据库。 句法  USE语句的基本语法如下所示 : USE ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 342,487
精华内容 136,994
关键字:

数据库sql语句大全实例