搭建论坛交流论坛读者文摘 → SQL-MSSQL-CODE 参考


  共有2062人关注过本帖树形打印

主题:SQL-MSSQL-CODE 参考

帅哥哟,离线,有人找我吗?
mysoap
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:305 积分:2860 威望:0 精华:0 注册:2008-7-4 9:48:31
SQL-MSSQL-CODE 参考  发帖心情 Post By:2010-5-11 7:48:17

/*********************************************************/
目录清单CONTEXT LIST
/*********************************************************/
1.数据库DataBase
1.1数据库建立/删除create/drop database
1.2数据库备份与恢复backup/restore database
/*********************************************************/
2.数据查询DATA QUERY LANGUAGE
2.1选择查询Select Query
2.2聚集查询Aggregate Query
2.3子查询  Sub Query
2.4连接查询Table Joins
2.5汇总查询Group Query
/*********************************************************/
3.数据修改DATA MODIFY LANGUAGE
3.1插入数据Insert
3.2修改数据Update
3.3删除数据Delete
/*********************************************************/
4.数据定义DATA DEFINE LANGUAGE
4.1表Table
4.2列Column
4.3序列Identity
4.4约束Constraints
4.5索引Index
4.6视图view
4.7权限Privilege
/*********************************************************/
5.数据库函数Functions
5.1转换函数Data Convert Functions
5.2聚集函数Aggregate Functions
5.3字符函数char Functions
5.4日期函数Date Functions
5.5数学函数Math Functions
5.6分析函数Analytical Functions
/*********************************************************/
6.数据库脚本Script
6.1数据类型Data Types
6.2脚本语法Statements
6.3脚本游标Cursor
6.4存储过程Procedure
6.5存储函数Function
6.6触发器Trigger
6.7事务Transaction
6.8其它Other
/*********************************************************/

SQL明细 SQL DETAIL
/**********************************************************/
1.数据库DataBase
1.1数据库建立/删除create/drop database
1.2备份与恢复backup/restore database
/**********************************************************/
1.1数据库建立/删除create/drop database
1.1.1.建立数据库
语法:create   database  <数据库名>  [其它参数]
代码:
//建立数据库 hr
create   database  hr   

1.1.2.删除数据库。
语法:drop   database  <数据库名>
代码:
//删除数据库hr
drop   database  hr
//如果存在hr数据库,则删除数据库hr
IF DB_ID('hr') IS NOT NULL
    DROP DATABASE TestDB
-----------------------------------------------------------
1.2备份与恢复backup/restore database
1.2.1.添加备份设备
语法:sp_addumpdevice <keyword> <devicename> <devicepath>

代码:
//添加备份设备为本地硬盘
sp_addumpdevice 'disk', 'localbackup', 'e:\database\backup\localbak.bak'
//备份到网络硬盘
sp_addumpdevice 'disk', 'netbackup', '\\computer1\database\backup\netbak.bak'
//备份到磁带
sp_addumpdevice 'tape', 'tapebackup', '\\.\tape1bak'
//备份到命名管道
sp_addumpdevice 'pipe', 'pipebackup', 'e:\database\backup\pipebak'

1.2.2.备份数据库
语法:backup database  <databasename> to <devicename>| disk=<backupnamepath>

代码:
//备份数据库到备份设备
backup database  pubs to localbackup
//备份数据库到指定路径下面的指定文件
backup database  pubs to disk='e:\database\backup\pub**ak.bak'

1.2.3.恢复数据库
语法:restore database <databasename> from <devicename>| disk=<backupnamepath>
代码:
//从备份设备中恢复数据库
restore database pubs from localbackup
//从备份文件中恢复数据库

/**********************************************************/
2.数据查询DATA QUERY LANGUAGE
2.1选择查询Select Query
2.2子查询  Sub Query
2.3连接查询Table Joins
2.4汇总查询Group Query
-----------------------------------------------------------
2.1选择查询Select Query
语法:
select [top n][/all]/[distinct]  [*] / [columnlist...] [<columnlist as alias...] [const/sql/function expression]
from   (<tablelist,>...) [as alias]
[where  search expression...]
[group  by  groupnamelist ....]
[having search-expression...]
[order by sort-expression...]

//select选项说明:
top n:只显示第一条到n条记录
//重复与不重复记录
all:表示包含重复的记录
distinct:表示去掉重复的记录
//所有字段与选中字段和字段别名
*:表示所有的列名
columnlist:表示字段列表
columnlist as alias:表示字段的别名

//其它字段
const-expression:常量表达式(如数字/字符串/日期/时间常量)
sql-expression:常见的sql语句的加减乘除表达式运算字段
function expression:数据库函数和自定义函数字段

//测试条件
比较测试条件(=,<>,>,<,>=,<=)
范围测试条件(betweeen 下限值 and 上限值)
成员测试条件(in,not in)
存在测试条件(exists,not exists)
匹配测试条件(like)
限定测试条件(any,all)
空值测试条件(is null)

//复合搜索条件(and, or,not,())
and:逻辑与运算
and:逻辑或运算
not:逻辑非运算
():可改变优先级的运算符

//子句说明
select子句:指出检索的数据项
from  子句:指出检索的数据表
where 子句:指出检索的数据条件
group by子句:指出检索的数据进行汇总
having子句:指出检索的数据进行汇总之前的条件
order by子句:指出检索的数据条件进行排序
代码:
//所有字段方式显示orders全部记录
select * from orders
//按字段显示全部记录
select order_num,order_date,amount from orders
//按字段显示全部记录,但除掉重复的记录
select order_num,order_date,amount from orders
//用sql-expression乘运算计算列
select amount,amount*0.08 as discount_amt  from orders
//用自定义函数计算指定列
select order_num,order_date,amount,f_amt_to_chn(amount) as 金额  from orders

select选项太多,代码例子就省略...
-----------------------------------------------------------
2.2子查询  Sub Query
语法:select ...
     from <tablename>
     where / having column 测试条件 (Sub Query)
//测试条件
比较测试条件(=,<>,>,<,>=,<=)
范围测试条件(betweeen 下限值 and 上限值)
成员测试条件(in,not in)
存在测试条件(exists,not exists)
匹配测试条件(like)
限定测试条件(any,all)
空值测试条件(is null)

代码:
//列出没有完成销售目标10%的销售人员清单[<测试]
select name from salesreps where quota < (0.1 * select sum(target) from offices))
//列出公司的销售目标超过各个销售人员定额总和的销售点[>测试]
select city from offices where target > (select sum(quota) from salesreps where rep_office=office)
//列出超过销售目标的销售点的业务人员[in测试]
select name from salesreps where office in (select office from offies where sales > target)
//列出订单大于2500元的产品名称[exists测试]
select description from products where exists (
select * from orders where product=prodct_id  and amount > 2500.00
)
//列出完成销售目标10%的销售人员清单[any测试]
select name from salesreps where (0.1* quota) < any(select amount from orders where rep=empl_num)

-----------------------------------------------------------
2.3连接查询Table Joins
多表连接类型可分为三类(内/外/交*连接)
主从表或者父子表进行多表连接多以主键和外键进行关联
Outer joins(LEFT OUTER, RIGHT OUTER, and FULL OUTER joins)
left outer join:查询的结果以左边表行数为准
right outer join:查询的结果以右边表行数为准

2.3.1.内连接inner join
功能:
语法:
SELECT select_list
FROM table_1
    [INNER] JOIN table_2
        ON join_condition_1
   [[INNER] JOIN table_3
        ON join_condition_2]...
代码:
//没有where子句的内连接
SELECT   *
FROM Products
INNER JOIN Suppliers
ON Products.SupplierID = Suppliers.SupplierID

//有where子句的内连接
SELECT p.ProductID, s.SupplierID, p.ProductName, s.CompanyName
FROM Products p
INNER JOIN Suppliers s
ON p.SupplierID = s.SupplierID
WHERE p.ProductID < 4

-----------------------------------------------------------
2.3.2.外连接outer join
功能:包括三种连接LEFT OUTER, RIGHT OUTER, and FULL OUTER joins
left outer :查询的结果以左边表行数为准
right outer :查询的结果以右边表行数为准
语法:select ... from table1 [left/right/full outer join ]table2 where ...
代码:
//以Customers表行数为标准去连接Orders表
SELECT c.CustomerID, CompanyName
FROM Customers c
LEFT OUTER JOIN Orders o
     ON c.CustomerID = o.CustomerID
WHERE o.CustomerID IS NULL

-----------------------------------------------------------
2.3.3.交*连接cross join
功能:以主从表或者父子表之间的主键进行连接,最终以笛卡尔乘积运算的结果
语法:select ... from table1 cross join table2 where ...

代码:
//显示结果以表1行数*表2行数
假设Departments为4行记录
假设Jobs为3行记录
下面的显示结果为4*3=12行记录
SELECT  deptname,jobdesc FROM  Departments   CROSS JOIN   Jobs
//用关键字匹配的交*连接
oc_head/oc_detail是主从表
oc_head(主键oc_number)
oc_detail(主键oc_number,item_number,ship_date)

SELECT h.customerid,d.item_number,d.ship_date
from  oc_head as h  CROSS JOIN   oc_detail as d
where h.oc_number=d.oc_number
-----------------------------------------------------------
2.4汇总查询Group Query
//汇总查询相当于会计报表中的小计汇总的功能

语法: select ...
      from <tablename>
      group by <column-name >
      [having search expression]

代码:
//求出每名销售人员的销售金额
select rep,sum(amount) from orders group by rep
//每个销售点分配了多少销售人员
select rep_office,count(*) from salesreps group by rep_office
//计算每名销售人员的每个客户和订单金额
select cust,rep,sum(amount) from orders group by cust,rep
//Having子句应用
select rep,avg(amount) from orders having sum(quota) > 3000.00

/**********************************************************/
3.数据修改DATA MODIFY LANGUAGE
3.1插入数据Insert
3.2修改数据Update
3.3删除数据Delete
-----------------------------------------------------------
3.1插入数据Insert
3.1.1.单行插入
语法:insert into <tablename>[<columnlist,>...] values(<valuelist,>...);

代码:
//不省略字段清单
insert into salesreps(name,age,empl_no,sales,title,hire_date,rep_office)
            values('jack toms',36,111,0.00,'sales mgr','10-05-2010',13)
//省略字段清单
insert into salesreps
            values('jack toms',36,111,0.00,'sales mgr','10-05-2010',13)
3.1.2.多行插入
语法:insert into <tablename>[(<columnlist,>...)] values(<valuelist,>...) <select Query>;

代码:
//把一批数据批量插入到一个备份表中
insert into history_order(order_num,order_date,amount)
    select order_num,order_date,amount
    from orders where order_date < '01/01/2000'
-----------------------------------------------------------
3.2修改数据Update
语法:update <tablename> set (cloumn=expression...) [where ...] [SubQuery..]

代码:
//更新所有记录
update salesreps set quota=1.05 * quota
//按条件更新表记录   
update salesreps set quota=1.08 * quota where area='china'
//按子查询更新表记录
update customers set cust_rep=105
where cust_rep in (
selct empl_num from  salesreps where  sales < (0.8 * quota)
)

-----------------------------------------------------------
3.3删除数据Delete
语法1:delete from <tablename> [where ...]
代码:
//所有删除记录
delete from orders

语法2:truncate table  <tablename>
代码2:
//所有删除记录
truncate table orders

//按条件删除记录
delete from orders where order_date < '01/01/2000'

/**********************************************************/
4.数据定义DATA DEFINE LANGUAGE
4.1表Table
4.2列Column
4.3序列Indentity
4.4约束Constraints
4.5索引Index
4.6视图view
4.7权限Privilege
/**********************************************************/
4.1表Table
4.1.1.建立表
语法:
create   table    <表名>(
<列名> <数据类型> [长度] <,>
<列名...>
)

代码:
//建立公司部门表
create table tb_basic_dept(
id    int    not null,
name    varchar(20) ,
chair    varchar(20)
)

4.1.2.删除表
语法:
drop table <表名>
代码:
//删除部门表
drop table tb_basic_dept
-----------------------------------------------------------
4.2列Column
4.2.1.列添加
语法:
alter table <表名> add
<列名> <数据类型> [长度]  <,>
<列名...>

代码:
alter table tb_basic_dept  add
remark varchar(50)
4.2.2.列删除
语法:alter table <表名> drop column <列名>
代码:
alter table tb_basic_dept drop column remark

4.2.3.列修改
语法:alter table <表名> alter column
<列名> <数据类型> [长度]  [null | not null]

代码:
//修改工资列为dec(8,2)
alter table tb_hr_gz alter column gz dec(8,2) null
-----------------------------------------------------------
4.3序列Identity
//特别要求
IDENTITY字段数据类型只能是(int, bigint, smallint, tinyint, decimal, or numeric(x,0))
IDENTITY字段必须是not null约束

4.3.1Identity
语法:
  IDENTITY(<data_type> [, <seed>, <increment>]) AS column_name,

代码:
//使用Identity
CREATE TABLE MyTable (
key_col int NOT NULL IDENTITY (1,1),
abc     char(1) NOT NULL
)
INSERT INTO MyTable VALUES ('a')
INSERT INTO MyTable VALUES ('b')
INSERT INTO MyTable VALUES ('c')

-----------------------------------------------------------
SQL-MSSQL-CODE大全


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

SQL-MSSQL-CODE 参考








签名