当前位置:  数据库>sqlserver
本页文章导读:
    ▪数据库语句整理      一、创建数据库 create database 数据库名 on ( name=N'逻辑名', filename=N'路径\文件名', size=1MB, filegrowth=1MB ) log on ( name=N'逻辑名_log', filename=N'路径\文件名_log.ldf', siez=10MB, filegrowth=10% ) 二、.........
    ▪T-SQL 行列互换      对于一个简单的表, 两行两列(行号暂且不算). 要对它进行行列互换, 怎么做?先准备测试数据:CREATE TABLE TempSum( n INT, gender VARCHAR(10), total INT);INSERT INTO TempSum(n, gender, total) VALUES(1, 'male', 23), (.........
    ▪了解ODBCAPI       5.1  了解ODBCAPIODBC是一种使用SQL的程序设计接口。使用ODBC让应用程序的编写者避免了与数据源相联的复杂性。这项技术目前已经得到了大多数DBMS厂商们的广泛支持。ODBC是一种使用S.........

[1]数据库语句整理
    来源:    发布时间: 2013-10-15

一、创建数据库

create database 数据库名

on

(

name=N'逻辑名',

filename=N'路径\文件名',

size=1MB,

filegrowth=1MB

)

log on

(

name=N'逻辑名_log',

filename=N'路径\文件名_log.ldf',

siez=10MB,

filegrowth=10%

)

二、创建构架

CREATE SCHEMA [ouyubin] AUTHORIZATION [dbo]

三、根据构架创建表

create table jkTest.Tbl1

(

id int identity(1,1) primary key not null,

QQ varchar(15) not null,

PWD varchar(20) not null

);

四、修改表

1、设置主键

alter table jkTest.Tbl1

add constraint PK_Tb1_id primary key(id)

2、添加唯一约束

add constraint UQ_表名_字段名 unique(字段)

3、添加默认约束

add constraint DF_表名_字段名 default(值) for 字段

4、添加检查约束

add constraint CK_表名_字段名 check(stuAge>=0 and stuAge<=150 or stuAge is null表达式)

5、添加外键约束

add constraint FK_外键表_主键表_字段 foreign key(外键表中的字段) references 主键表名(主键表中的字段)

6、删除:

删除约束:alter table 表名 drop 约束名

删除列:alter table 表名 drop column 列名

7、增加:

增加一列:增加一列:alter table 表名 add 列名 类型

8、修改数据类型:

alter table 表名 alter column 列名 类型

五、使用系统视图sys.objects来查看所有的数据库对象.

select * from sys.objects where type='U'

六、完整的查询语句书写格式

注意分行写SQL语句,这样不需要某个地方的时候,直接注释就可以了。如不需要查询某个字段了,在字段前注释,而不用删除这个字段

select top 数字 percent distinct

,字段

,常量

,聚合函数

from

数据源

where

条件

group by

字段

having

条件

order by

字段;

七、

1、匹配::_任意一个字符;%任意多个任意字符; [_] _愿意是任意字符,在[]里表示_,[]还可以表示范围,如[a-z]

2、范围:between and ;in(散值,散值)

3、group by分组,按照什么分组就只显示什么数据,select后面只能跟你分组的字段

4、having子句:select stName form 表名 group by stName having count(stname)>3

having用于分组后的筛选

5、order by排序,将结果集排序

八、聚合函数

1、AVG平均值

2、SUM总和

3、Count计数

4、MAX最大值

5、Min最小值

九、开窗函数

select *,AVG(score) over() from 表名

本文链接


    
[2]T-SQL 行列互换
    来源:    发布时间: 2013-10-15

对于一个简单的表, 两行两列(行号暂且不算). 要对它进行行列互换, 怎么做?

先准备测试数据:

CREATE TABLE TempSum(
n INT,
gender VARCHAR(10),
total INT
);

INSERT INTO TempSum(n, gender, total) VALUES
(1, 'male', 23), (2, 'female', 45);

SELECT * FROM TempSum;

n gender total
---- ------ -----
1 male 23
2 female 45

 

看到行列互换, 大家首先想到的大概是PIVOT:

SELECT n, male, female
FROM TempSum
pivot(max(total) FOR gender
IN (male, female)) AS P;

n male female
---- ---- ------
1 23 NULL
2 NULL 45

 

或者, n列也可以去掉的:

SELECT
-- n, --uncomment to show n
max(CASE WHEN gender='male' THEN total END) AS male,
max(CASE WHEN gender='female' THEN total END) AS female
FROM TempSum
GROUP BY n;

male female
---- ------
23 NULL
NULL 45

 

如果, 我不想要NULL, 要显示成

male female
23 45

的样式. 或者, 如果TempSum表中根本没有n列. 怎么办?

 

思路:

Step1, 把male和female放到一行

Step2, 把23和45放到一行, 要注意它们和gender的对应顺序

Step3, 把Step1和Step2的两行作个UNION. OK!

 

实现:

Step1, gender可以认为是已知的, hard code就可以的:

SELECT 'male', 'female'

Step2, male和female的total本不在同一行, 可以做个自连接, 选出来一行让它左边对应male的total, 右边对应female的total:

SELECT convert(VARCHAR(10), a.total), convert(VARCHAR(10), b.total)
FROM TempSum a JOIN TempSum b ON a.gender<>b.gender
WHERE a.gender='male' --AND b.gender='female'

Step3, 用UNION ALL就可以的, 就不多解释了:

SELECT 'male', 'female'
UNION ALL
SELECT convert(VARCHAR(10), a.total), convert(VARCHAR(10), b.total)
FROM TempSum a JOIN TempSum b ON a.gender<>b.gender
WHERE a.gender='male' --AND b.gender='female';

-- results
No Column Name No Column Name
-------------- --------------
male female
23 45

 

看到No Column Name, 把它也去掉吧. 其实, 走到Step2的时候, 大概就可以想到了:

SELECT convert(VARCHAR(10), a.total) AS male, convert(VARCHAR(10), b.total) AS female
FROM TempSum a JOIN TempSum b
    
[3]了解ODBCAPI
    来源:    发布时间: 2013-10-15
 
5.1  了解ODBCAPI
ODBC是一种使用SQL的程序设计接口。使用ODBC让应用程序的编写者避免了与数据源相联的复杂性。这项技术目前已经得到了大多数DBMS厂商们的广泛支持。ODBC是一种使用SQL 的程序设计接口。使用ODBC让应用程序的编写者避免了与数据源相联的复杂性。这项技术目前已经得到了大多数DBMS厂商们的广泛支持。
Microsoft Developer Studio为大多数标准的数据库格式提供了32位ODBC驱动器。这些标准数据格式包括有:SQL Server,Access,Paradox,dBase,FoxPro,Excel,Oracle以及Microsoft Text。如果用户希望使用其他数据格式,用户需要相应的ODBC驱动器及DBMS。
ODBC API是一个内容丰富的数据库编程接口,包括60多个函数、SQL数据类型以及常量的声明。ODBC API 是独立于DBMS和操作系统的,而且它与编程语言无关。ODBCAPI 以X/Open和ISO/IEC中的CLI规范为基础,ODBC 3.0完全实现了这两种规范,并添加了基于视图的数据库应用程序开发人员所需要的共同特性,例如可滚动光标。ODBC API中的函数由特定DBMS驱动程序的开发人员实现,应用程序用这些驱动程序调用函数,以独立于DBMS的方式访问数据。
ODBC API涉及了数据源连接与管理、结果集检索、数据库管理、数据绑定、事务操作等内容,目前的最高版本是3.0。
5.2 ODBC API编程步骤
通常使用ODBC API开发数据库应用程序需要经过如下步骤:
•       连接数据源。
•       分配语句句柄。
•       准备并执行SQL语句。
•       获取结果集。
•       提交事务。
•       断开数据源连接并释放环境句柄。
下面对上述步骤做详细的介绍。
5.2.1 步骤1:连接数据源
为了连接数据源,必须要建立一个数据源连接的环境句柄。通过调用SQLAllocEnv函数实现对环境句柄的分配,在ODBC 3.0里,这个函数已经被SQLAllocHandle取代,但是熟悉ODBC API的开发人员还是习惯用这个函数建立环境句柄,因为VC++开发平台有一个映射服务,这个服务将程序代码对函数SQLAllocEnv的调用转向对函数SQLAllocHandle的调用。
这里有必要对“环境句柄”这个概念进行说明。句柄是指向一个特殊结构的指针,而环境指的是驱动程序管理器需要为该驱动程序存储的有关系统和数据源的一般信息。由于这个时候还没有建立同数据源的连接,驱动程序还并不知道该使用哪一个驱动程序来完成这个任务,所以这个任务只能由驱动程序管理器来完成,利用这个环境句柄保留信息直到被使用。
使用函数SQLAllocEnv创建环境句柄的语法如下:
 
 
HENV henv;
RETCODE rcode;
rcode = ::SQLAllocEnv(SQL_HANDLE_ENV, SQL_NULL, & henv);
if(rcode == SQL_SUCCESS) // 环境句柄创建成功
{
// 执行其它操作
…………
}

 

 
完成了环境句柄的创建以后,还要建立一个连接句柄。连接句柄的创建函数是SQLAllocConnect,其调用语法如下:
 
HDBC hdbc;
retcode = ::SQLAllocConnect( m_henv, & hdbc);
if(rcode == SQL_SUCCESS) // 连接句柄创建成功
{
// 执行其它操作
…………
}
完成了环境句柄和连接句柄的创建以后,就可以进行实际的数据源连接了。完成数据源连接的函数是SQLConnect,其调用语法如下:
 
m_retcode = :: SQLConnect( m_hdbc,
(PUCHAR)pszSourceName, SQL_NTS,
(PUCHAR)pszUserId, wLengthUID,
(PUCHAR)pszPassword, wLengthPSW );
if(rcode == SQL_SUCCESS) // 数据源连接成功
{

    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3