一、DDL数据定义语言(CREATE,ALTER,DROP,DECLARE)
首先,简要介绍基础语句,作为测试人员一般测试时,已经由数据库设计师建好了数据库,数据库设计师可能也不用语句的方式来建表,但我们应该能看懂各语句的使用格式,语句的含义,有兴趣再作深入了解。
首先,简要介绍基础语句,作为测试人员一般测试时,已经由数据库设计师建好了数据库,数据库设计师可能也不用语句的方式来建表,但我们应该能看懂各语句的使用格式,语句的含义,有兴趣再作深入了解。
1、创建数据库
CREATE DATABASE [database-name]
CREATE DATABASE [database-name]
2、删除数据库
DROP DATABASE dbname1,dbname2…
3、备份数据库
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
DROP DATABASE dbname1,dbname2…
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],..)
例如: CREATE TABLE S
(SNO CHAR(10) NOT NULL ,
SN VARCHAR(20),
AGE INT,
SEX CHAR(2) DEFAULT '男' ,
DEPT VARCHAR(20));
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
例如: CREATE TABLE S
(SNO CHAR(10) NOT NULL ,
SN VARCHAR(20),
AGE INT,
SEX CHAR(2) DEFAULT '男' ,
DEPT VARCHAR(20));
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、删除表
drop table tabname
drop table tabname
6、增加字段
Alter table tabname
ADD <列名><数据类型>[NULL|NOT NULL]
ADD <列名><数据类型>[NULL|NOT NULL]
7、修改字段
ALTER TABLE<表名>
ALTER COLUMN <列名><数据类型>[NULL|NOT NULL]
ALTER TABLE<表名>
ALTER COLUMN <列名><数据类型>[NULL|NOT NULL]
8、删除字段
ALTER TABLE<表名>
DROP COLUMN <列名><数据类型>[NULL|NOT NULL]
ALTER TABLE<表名>
DROP COLUMN <列名><数据类型>[NULL|NOT NULL]
9、添加主键
Alter table tabname add primary key(col)
Alter table tabname add primary key(col)
10、删除主键
Alter table tabname drop primary key(col)
Alter table tabname drop primary key(col)
11、创建索引
create [unique] index idxname on tabname(col….)
12、删除索引
drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
13、创建视图
create view viewname as [select statement ]
create view viewname as [select statement ]
14、删除视图
drop view viewname
drop view viewname
二、DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
1、数据查询drop table if exists admin
数据查询是数据库中最常见的操作。在本文档里将作重点介绍。SQL语言提供SELECT语句,通过查询操作可得到所需的信息。
SELECT语句的一般格式为:SELECT〈列名〉[{,〈列名〉}] FROM〈表名或视图名〉[{,
数据查询是数据库中最常见的操作。在本文档里将作重点介绍。SQL语言提供SELECT语句,通过查询操作可得到所需的信息。
SELECT语句的一般格式为:SELECT〈列名〉[{,〈列名〉}] FROM〈表名或视图名〉[{,
〈表名或视图名〉}] [WHERE〈检索条件〉] [GROUP BY <列名1>[HAVING <条件表达式>]] [ORDER BY <列名2>[ASC|DESC]];
SELECT语句的执行过程是:根据WHERE子句的检索条件,从FROM子句指定的基本表或视图中选取满足条件的元组,再按照SELECT子句中指定的列,投影得到结果表。
如果有GROUP子句,则将查询结果按照<列名1>相同的值进行分组。
如果GROUP子句后有HAVING短语,则只输出满足HAVING条件的元组。
如果有ORDER子句,查询结果还要按照<列名2>的值进行排序。
1.1、查询指定列
SELECT <列名> FROM <表名或视图名>
SELECT语句的执行过程是:根据WHERE子句的检索条件,从FROM子句指定的基本表或视图中选取满足条件的元组,再按照SELECT子句中指定的列,投影得到结果表。
如果有GROUP子句,则将查询结果按照<列名1>相同的值进行分组。
如果GROUP子句后有HAVING短语,则只输出满足HAVING条件的元组。
如果有ORDER子句,查询结果还要按照<列名2>的值进行排序。
1.1、查询指定列
SELECT <列名> FROM <表名或视图名>
1.2、查询全部列
SELECT * FROM <表名或视图名> 或SELECT <全部列名> FROM <表名或视图名>
SELECT * FROM <表名或视图名> 或SELECT <全部列名> FROM <表名或视图名>
1.3、取消相同取值的行
在查询结果中有可能出现取值完全相同的行了。
SELECT DISTINCT <列名> FROM <表名或视图名>
在查询结果中有可能出现取值完全相同的行了。
SELECT DISTINCT <列名> FROM <表名或视图名>
1.4、比较大小
比较运算符有 =,>,>=,<=,<,<>,!>,!<
NOT+上述比较运算符
SELECT <列名> FROM <表名或视图名> WHERE <列名> [比较运算符] <比较的值>
比较运算符有 =,>,>=,<=,<,<>,!>,!<
NOT+上述比较运算符
SELECT <列名> FROM <表名或视图名> WHERE <列名> [比较运算符] <比较的值>
1.5、多重条件查询
当WHERE子句需要指定一个以上的查询条件时,则需要使用逻辑运算符AND、OR和NOT将其连结成复合的逻辑表达式。其优先级由高到低为:NOT、AND、OR,用户可以使用括号改变优先级。
SELECT <列名> FROM <表名或视图名> WHERE <条件1> AND <条件1> OR <条件1>…
当WHERE子句需要指定一个以上的查询条件时,则需要使用逻辑运算符AND、OR和NOT将其连结成复合的逻辑表达式。其优先级由高到低为:NOT、AND、OR,用户可以使用括号改变优先级。
SELECT <列名> FROM <表名或视图名> WHERE <条件1> AND <条件1> OR <条件1>…
1.6、确认范围查询
用于确定范围运算符有:BETWEEN…AND…和NOT BETWEEN…AND…
SELECT <列名> FROM <表名或视图名> WHERE <列名> [NOT] BETWEEN 值1 AND 值2
这与下等价
SELECT <列名> FROM <表名或视图名> WHERE <列名>>=值1 AND <列名><=值2
SELECT <列名> FROM <表名或视图名> WHERE <列名><值1 OR <列名>>值2
用于确定范围运算符有:BETWEEN…AND…和NOT BETWEEN…AND…
SELECT <列名> FROM <表名或视图名> WHERE <列名> [NOT] BETWEEN 值1 AND 值2
这与下等价
SELECT <列名> FROM <表名或视图名> WHERE <列名>>=值1 AND <列名><=值2
SELECT <列名> FROM <表名或视图名> WHERE <列名><值1 OR <列名>>值2
1.7、确认集合
确定集合符号:IN,NOT IN
SELECT <列名> FROM <表名或视图名> WHERE <列名>[NOT] IN (常量1,常量2,…,常量n)
确定集合符号:IN,NOT IN
SELECT <列名> FROM <表名或视图名> WHERE <列名>[NOT] IN (常量1,常量2,…,常量n)
1.8字符匹配查询
字符匹配查询符号:LIKE,NOT LIKE
SQL Server 2000支持如下四种通配符:
_(下划线):匹配任意一个字符;
%(百分号): 匹配O个或多个字符;
[ ]:匹配[ ]中的任意一个字符。如[acdg]表示匹配a或c或d或g,如果[ ]中的字符是有序的,则可以使用连字符一来简化[ ]中的内容,例如[abcde]可简写为:[a-e];
[^]:不匹配[ ]中的任意一个字符。如[^acdg]表示不匹配a、c、d、g,如果[^]中的字符是有序的,也可以使用简化形式例如[^abcde]可简写为:[^a-e]。
SELECT <列名> FROM <表名或视图名> WHERE <列名> [NOT] LIKE <匹配字符串>
字符匹配查询符号:LIKE,NOT LIKE
SQL Server 2000支持如下四种通配符:
_(下划线):匹配任意一个字符;
%(百分号): 匹配O个或多个字符;
[ ]:匹配[ ]中的任意一个字符。如[acdg]表示匹配a或c或d或g,如果[ ]中的字符是有序的,则可以使用连字符一来简化[ ]中的内容,例如[abcde]可简写为:[a-e];
[^]:不匹配[ ]中的任意一个字符。如[^acdg]表示不匹配a、c、d、g,如果[^]中的字符是有序的,也可以使用简化形式例如[^abcde]可简写为:[^a-e]。
SELECT <列名> FROM <表名或视图名> WHERE <列名> [NOT] LIKE <匹配字符串>
1.9空值查询
空值不同于零和空格,它不占任何存储空间。
判断某个值是否为NULL值,不能使用普通的比较运算符(一、!一等),而只能使用专门的判断NULL值的子句来完成。
SELECT <列名> FROM <表名或视图名> WHERE <列名> IS [NOT] NULL
空值不同于零和空格,它不占任何存储空间。
判断某个值是否为NULL值,不能使用普通的比较运算符(一、!一等),而只能使用专门的判断NULL值的子句来完成。
SELECT <列名> FROM <表名或视图名> WHERE <列名> IS [NOT] NULL
1.10常用库函数及统计汇总查询
常用的库函数
AVG: 按列计算平均值
SUM:按列计算值的总和
MAX:求一列中的最大值
MIN:求一列中的最小值
COUNT:按列值计算个数
总数:select count(field1) as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
常用的库函数
AVG: 按列计算平均值
SUM:按列计算值的总和
MAX:求一列中的最大值
MIN:求一列中的最小值
COUNT:按列值计算个数
总数:select count(field1) as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
注1:SQL规定,当使用计算函数时,列名不能与计算函数一起使用(除非他们出现在其他集合中)。
例如查询年龄最大的学生的姓名和年龄,如下写法是错误的:
SELECT 姓名,MAX(年龄)FROM Student
注2:计算函数不能出现在WHERE子句中。 .
例如查询年龄最大的学生的姓名如下写法是错误的:
SELECT 姓名 FROM Student WHERE 年龄=MAX(年龄)
正确的命令应为: SELECT 姓名,年龄 FROM Student Where 年龄=(select max(年龄) from student)
最小:select min(field1) as minvalue from table1
注1:SQL规定,当使用计算函数时,列名不能与计算函数一起使用(除非他们出现在其他集合中)。
例如查询年龄最大的学生的姓名和年龄,如下写法是错误的:
SELECT 姓名,MAX(年龄)FROM Student
注2:计算函数不能出现在WHERE子句中。 .
例如查询年龄最大的学生的姓名如下写法是错误的:
SELECT 姓名 FROM Student WHERE 年龄=MAX(年龄)
正确的命令应为: SELECT 姓名,年龄 FROM Student Where 年龄=(select max(年龄) from student)
1.11分组查询
SELECT <列名> FROM <表名或视图名>
GROUP BY<分组依据列>[,…n]
[HAVING<组提取条件>]
SELECT <列名> FROM <表名或视图名>
GROUP BY<分组依据列>[,…n]
[HAVING<组提取条件>]
注1:分组依据列不能是text、ntext、image和bit类型的列。
注2:有分组时,查询列表中的列只能取自分组依据列(计算函数中的列除外)
注2:有分组时,查询列表中的列只能取自分组依据列(计算函数中的列除外)
1.12对查询结果进行排序
SELECT <列名> FROM <表名或视图名>
ORDER BY<列名>[ASC l DESC][,…n]
SELECT <列名> FROM <表名或视图名>
ORDER BY<列名>[ASC l DESC][,…n]
1.13数据表连接查询
A、 INNER JOIN:
这是最普通的联接类型。只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2) OR
ON table1.field3 compopr table2.field3)];
A、 INNER JOIN:
这是最普通的联接类型。只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2) OR
ON table1.field3 compopr table2.field3)];
B、left outer join:
左外连接(左连接):结果集包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
C:right outer join:
右外连接(右连接):结果集包括连接表的匹配连接行,也包括右连接表的所有行。
D:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
左外连接(左连接):结果集包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
C:right outer join:
右外连接(右连接):结果集包括连接表的匹配连接行,也包括右连接表的所有行。
D:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
1.14使用TOP限制结果集
使用TOP谓词时注意最好与ORDER BY子句一起使用,因为这样的前几名才有意义。但当使用WITH TIES时,要求必须使用ORDER BY子句。
TOP谓词写在SELECT单词的后边,查询列表的前边。
使用TOP谓词的格式为:
TOP n[percent]with ties]
其中:n为非负整数。
TOP n:表示取查询结果的前n行;
使用TOP谓词时注意最好与ORDER BY子句一起使用,因为这样的前几名才有意义。但当使用WITH TIES时,要求必须使用ORDER BY子句。
TOP谓词写在SELECT单词的后边,查询列表的前边。
使用TOP谓词的格式为:
TOP n[percent]with ties]
其中:n为非负整数。
TOP n:表示取查询结果的前n行;
TOP n percent:表示取查询结果的前n% 行;
With ties:表示包括并列的结果。
With ties:表示包括并列的结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论