zoukankan      html  css  js  c++  java
  • 数据库基本语句应用范例(上)


    --数据库基本语句应用范例(上)


    --1、创建example数据库
    CREATE DATABASE example
    /*返回结果:
    CREATE DATABASE 进程正在磁盘 'example' 上分配 0.75 MB 的空间。
    CREATE DATABASE 进程正在磁盘 'example_log' 上分配 0.49 MB 的空间。*/


    --2、删除数据库
    DROP DATABASE example
    /*返回结果:
    正在删除数据库文件 'C:\Program Files\Microsoft SQL Server2000\MSSQL\data\example_log.LDF'。
    正在删除数据库文件 'C:\Program Files\Microsoft SQL Server2000\MSSQL\data\example.mdf'。
    */

    --3、打开使用这个数据库,如果提示没找不到'example'条目,那么再执行创建语句
    USE example

    --4、备份数据库
    --- 创建 备份数据的 device
    EXEC sp_addumpdevice 'disk','exam','d:\database\example_1.dat'
    --- 开始 备份
    BACKUP DATABASE example TO  exam
    /*返回结果:在databse文件夹下生成一个example_1.dat的备份文件*/

    --5、创建表A、B、C
    CREATE TABLE A
    (id DECIMAL(9) NOT NULL,
     name CHAR(10));

    CREATE TABLE B
    (id DECIMAL(9) NOT NULL,
     hobby CHAR(10));

    CREATE TABLE C
    (id DECIMAL(9) NOT NULL,
     name CHAR(10));

    --6、增加表字段
    ALTER TABLE C
         add hobbya CHAR(10)

    --7、修改表字段
    ALTER TABLE C
         ALTER COLUMN hobby CHAR(5)

    --8、删除表
    ALTER TABLE C
         DROP COLUMN id

    --9、删除表
    DROP TABLE C

    --10、添加主键
    ALTER TABLE A
         ADD PRIMARY KEY(ID)

    --10、删除主键
    ALTER TABLE A
         DROP PRIMARY KEY(ID)

    --11、创建索引
    CREATE UNIQUE INDEX INDEXID ON A(ID)

    --12、删除索引
    DROP INDEX A.INDEXID

    --13、创建视图
    CREATE VIEW VIEWA
         AS SELECT ID FROM A WHERE ID>100

    --14、删除视图
    DROP VIEW VIEWA



    --1.1、查询指定列
    SELECT id FROM A

    --1.2、查询全部列
    SELECT * FROM A
    SELECT ID,NAME FROM A

    --1.3、取消相同取值的行
    SELECT DISTINCT ID FROM A

    --1.4、比较大小
    SELECT * FROM A WHERE ID>5

    --1.5、多重条件查询
    SELECT * FROM A WHERE ID>5 AND NAME='NANCY' OR NAME='TONY'

    --1.6、确认范围查询
    SELECT * FROM A WHERE ID  BETWEEN 1 AND 4
    SELECT * FROM A WHERE ID  NOT BETWEEN 1 AND 4
    --这与下等价
    SELECT * FROM A WHERE ID>=1 AND ID<=4
    SELECT * FROM A WHERE ID<1 OR ID>4

    --1.7、确认集合
    SELECT * FORM A WHERE ID IN  (1,2,3)

    --1.8字符匹配查询
    --查询Northwind数据库中orders表的ShipCountry列以B,C,D,F开始且第三个字
     -- ,符为“a”的OrderlD、CustomerID和ShipCountry的信息。
    SELECT ORDERID,CUSTOMERID,SHIPCOUNTRY FROM ORDERS WHERE SHIPCOUNTRY LIKE '[BCDF]%' AND SHIPCOUNTRY LIKE '__A%'

    --1.9空值查询
    SELECT * FROM A WHERE ID IS  NULL

    --1.10常用库函数及统计汇总查询
      SELECT ID,NAME FROM A
     Where ID=(select max(ID) from A)

    --1.11分组查询
    SELECT ID FROM A GROUP BY ID HAVING ID>0

    --1.12对查询结果进行排序
    SELECT * FROM A ORDER BY ID,NAME DESC

    --1.13数据表连接查询
    ----A、内联接
    select A.Name,B.Hobby from A, B where A.id = B.id
    select A.Name,B.Hobby from A Inner join B ON A.id = B.id

    ----B、左外联接
    select A.Name,B.Hobby from A Left join B ON A.id = B.id

    ----C、右外联接
    select A.Name,B.Hobby from A Right join B ON A.id = B.id

    ----D、此句以上右外联接结果是一样的
    select A.Name,B.Hobby from B Left join A ON A.id = B.id

    ----E、全联接,以下两句同
    select A.Name,B.Hobby from A cross join B
    select A.Name,B.Hobby from A,B

    --1.14使用TOP限制结果集
    SELECT TOP 3 WITH TIES ID,NAME FROM A ORDER BY ID

    --1.15将查询结果存入表中
    SELECT * INTO #TEMP FROM A
    SELECT * INTO ##TEMP1 FROM A
    SELECT * INTO D FROM A

    --1.16合并查询
    SELECT * FROM A
    UNION
    SELECT * FROM B

    --1.17子查询
    --A、使用子查询进行比较测试
        SELECT ID,NAME FROM A
        WHERE NAME='NANCY'
        and ID>( SELECT AVG(ID) from B)

    --B、使用子查询基于集合的测试
        SELECT * FROM A
        WHERE ID IN
        (SELECT ID FROM B)

    --C、使用子查询进行存在性测试
        SELECT NAME FROM A   
        WHERE EXISTS
        (SELECT * FROM B
        WHERE ID=A.ID)

    --2.1插入一行新记录
    INSERT INTO A(ID,NAME) VALUES(1,'TONY')

    --2.2插入一行的部分数据值
    INSERT INTO A(ID) VALUES(2)

    --2.3插入多行记录
    INSERT INTO B(ID,HOBBY) SELECT * FROM A

    --2.4修改数据
    UPDATE A
    SET NAME='NANCY' WHERE ID=2

    UPDATE A
    SET NAME='A' WHERE ID IN(SELECT ID FROM B)

    --2.5删除记录
    DELETE A WHERE ID=2
    DELETE A WHERE ID IN(SELECT ID FROM B)


    ---随机取出两条数据
    select top 2 * from B order by newid()

    ---列出数据库里所有的表名
    select name from sysobjects where type='U'

    ---列出表里所有的列
    select name from syscolumns where id=object_id('B')

    ---初始化表,将内容清空
    TRUNCATE TABLE A



    --其次,大家来看一些不错的sql语句
    --1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
    --法一:where 1 <>1 或用where 1=1在程序里是经常使用的,后面可根据加个多个条件也可不加,非常灵活
    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、说明:两张关联表,删除主表中已经在副表中没有的信息  
    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

    --5、说明:四表联查问题:
    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 .....

    --6、说明:日程安排提前五分钟提醒  
    select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

    --7、说明:一条sql 语句搞定数据库分页
    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
    select top 10 yonghu.* from (select top 20 * from yonghu)a,yonghu where a.yhdm=yonghu.yhdm

    --8、说明:前10条记录
    select top 10 * FROM table1 where 范围

    --9、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

    --10、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
    (select a from tableA ) except (select a from tableB) except (select a from tableC)

    --11、说明:随机取出10条数据
    select top 10 * from tablename order by newid()

    --12、说明:随机选择记录
    select newid()

    --13、说明:删除重复记录
    Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

    --14、说明:列出数据库里所有的表名
    select name from sysobjects where type='U'  

    --15、说明:列出表里的所有的
    select name from syscolumns where id=object_id('TableName')
    select name from syscolumns where id=object_id('yonghu')

    --16、说明:列示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

    --17、说明:初始化表table1
    TRUNCATE TABLE table1

    --18、说明:选择从10到15的记录
    select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
     
    --随机读取若干条记录,测试过
    --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
    --使用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;  
     

    --19、查询时字符串连接(用+号)
    select id+'['+name+']' YH from a

  • 相关阅读:
    Entity SQL 初入
    ObjectQuery查询及方法
    Entity Framework 的事务 DbTransaction
    Construct Binary Tree from Preorder and Inorder Traversal
    Reverse Linked List
    Best Time to Buy and Sell Stock
    Remove Duplicates from Sorted Array II
    Reverse Integer
    Implement Stack using Queues
    C++中const限定符的应用
  • 原文地址:https://www.cnblogs.com/qiushuixizhao/p/3138989.html
Copyright © 2011-2022 走看看