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

  • 相关阅读:
    数据库 —— 基于 ORM 模型的 Hibernate 的使用(java)
    数据库 —— mySQL 的安装
    数据库 —— 应用程序与数据库的连接
    windows 编程 —— 子窗口类别化(Window Subclassing)
    windows 编程 —— 消息与参数(定时器、初始化消息、改变大小)
    windows 编程 —— 子窗口 与 子窗口控件
    windows 编程 —— 消息与参数(滚动条、键盘、鼠标)
    windows 编程—— 使用函数笔记
    关于计算机编程语言——编译型和解释型_2
    关于计算机编程语言——编译型和解释型【转】
  • 原文地址:https://www.cnblogs.com/qiushuixizhao/p/3138989.html
Copyright © 2011-2022 走看看