(转)新手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:\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.删除新表

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

posted @ 2018-08-13 11:16  大大木瓜  阅读(164)  评论(0编辑  收藏  举报