zoukankan      html  css  js  c++  java
  • (转)新手C#SQL语句的学习2018.08.13

    1.创建数据库(create)

    CREATE DATABASE database-name

    2.删除数据库(drop)

    drop database dbname

    3.备份数据库

    --- 创建 备份数据的 device
    
      USE master
    
      EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_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.删除新表

    1 drop table tabname

    6.增加一个列(字段)

    1 Alter table tabname add column col type
    2 
    3   --注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

    7.添加主键

    1 Alter table tabname add primary key(col)
    2 
    3 --说明:删除主键: Alter table tabname drop primary key(col)

    8.创建索引

    1 create [unique] index idxname on tabname(col….)
    2 
    3 --删除索引:drop index idxname
    4 
    5 --注:索引是不可更改的,想更改必须删除重新建。

    9.创建视图

    1 create view viewname as select statement
    2 
    3 --删除视图:drop view viewname

    10.几个最简单的SQL语句

     1 --选择:
     2         select * from table1 where 范围
     3 
     4 --插入:
     5         insert into table1(field1,field2) values(value1,value2)
     6 
     7 --删除:
     8         delete from table1 where 范围
     9 
    10 --更新:
    11         update table1 set field1=value1 where 范围
    12 
    13 --查找:
    14         select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
    15 
    16 --排序:
    17         select * from table1 order by field1[desc],field2[asc]  --二次排序,当有重复值时按照主键排序
    18 
    19 --总数:
    20         select count as totalcount from table1
    21 
    22 --求和:
    23         select sum(field1) as sumvalue from table1
    24 
    25 --平均:
    26         select avg(field1) as avgvalue from table1
    27 
    28 --最大:
    29         select max(field1) as maxvalue from table1
    30 
    31   最小:select min(field1) as minvalue from table1
    32 
    33 --统计记录条数
    34     SELECT COUNT(*) FROM T_EMPLOYEE
    35 
    36 --向下/向上取整
    37     SELECT FLOOR(50.41)  --50
    38     SELECT CEILING(50.41)   --51

    使用通配符

    通配符过滤关键词:LIKE

        --"%"为匹配零个或多个任意字符,结果为包含O的字符串
        SELECT * FROM T_EMPLOYEE WHERE FNAME LIKE '%O%'
        --非O开头但包含O的字符串
        SELECT * FROM T_EMPLOYEE WHERE FNAME LIKE '[^O]%O%'
        --非O开头和结尾但中间包含O的字符串
        SELECT * FROM T_EMPLOYEE WHERE FNAME LIKE '[^O]%O%[^O]'
        --"_"为匹配一个任意字符,结果为前后匹配任意字符,单至少有一个O在中间
        SELECT * FROM T_EMPLOYEE WHERE FNAME LIKE '_%O%_'
        --包含a-t之间的任意单个字母
        SELECT * FROM T_EMPLOYEE WHERE FNAME LIKE '[a-t]'

     空值处理:数据库中,如果一个列没有指定值,这个值就是NULL,但是这个NULL和C#中的NULL不同,数据库中的NULL代表的是不知道,未定义的意思,而C#中的NULL表示为空,例如Person h;就表示h为空。

    SQL语句查询空值的语句为

        --空值查询
        SELECT * FROM T_EMPLOYEE WHERE FNAME IS NULL

    多值查询:IN,BETWEEN-AND

        --IN类似于英文or,即根据IN中所包含的部分查询
        SELECT FNUM,FNAME,FAGE,FSALARY FROM T_Employee WHERE FAGE IN(50,20,25,30);
        --BETWEEN-AND用于查询在其之间的部分,注意其为大于等于
        SELECT FNUM,FNAME,FAGE,FSALARY FROM T_Employee WHERE FAGE BETWEEN 20 AND 50;
        --BETWEEN不可用于字符的比较,可用>,<通过自动转换为ASCII码比较
        SELECT FNUM,FNAME,FAGE,FSALARY FROM T_Employee WHERE FTEST BEWTEEN 'A'AND 'G'
        SELECT FNUM,FNAME,FAGE,FSALARY FROM T_Employee WHERE FTEST>= 'A'AND FTEST<= 'G'

    分组查询:GROUP BY

        --GROUP BY用于分组,两个条件时通过两个共同的进行分组
        SELECT FTEST,COUNT(*) FROM T_EMPLOYEE GROUP BY FTEST
        SELECT FNAME,FTEST,COUNT(*) FROM T_EMPLOYEE GROUP BY FTEST,FNAME

     分组后的查询条件:HAVING

        --分组之后的结果集的条件用HAVING,不用GROUP BY采用的条件是WHERE,但其条件必须要包含在结果集当中,如采用FAGE>30则不可以
        SELECT FNAME,FTEST,COUNT(*) as 数量 FROM T_EMPLOYEE
        GROUP BY FTEST,FNAME
        HAVING COUNT(*)>1

     合并结果集:UNION (ALL)

    --合并结果集,并且去除重复项
    SELECT c_name from Category
    union
    select b_title from Book
    
    --合并结果集,不去除重复项
    SELECT c_name from Category
    union all
    select b_title from Book

    当查询多个列时,去除重复项只能去除完全相同的项,若一列相同,其他列不同,则不算是重复,不会去除。

    2018.08.13

  • 相关阅读:
    HDU 2516 取石子游戏(FIB博弈)
    HDU 2147 kiki's game (简单博弈,找规律)
    HDU 1847 Good Luck in CET-4 Everybody!(找规律,或者简单SG函数)
    ***Linux chmod命令修改文件与文件夹权限命令代码
    CentOS下用yum命令安装jdk
    Nginx 虚拟主机 VirtualHost 配置
    Nginx的nginx.conf配置文件中文注释说明
    快速php日志,写内容到文件,把日志写到log文件
    php-fpm进程管理方式(static和dynamic)
    阿里云宝塔Linux服务器管理面版初始化地址不能登入(原创)
  • 原文地址:https://www.cnblogs.com/do-hardworking/p/9466970.html
Copyright © 2011-2022 走看看