SQL - 2.基础语法
一、SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
二、SQL基础语句
1.创建数据库
Create Database 数据库名称
2.删除数据库
Drop Database 数据库名称
3.备份数据库
创建备份数据 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'
开始备份
BACKUP DATABASE 数据库名称 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
复制表(只复制结构,源表名:tab_new 新表名:tab_old)
A:select * into tab_new from tab_old where 1<>1
B:select top 0 * into tab_new from tab_old
5.删除新表
drop table 表名
6.增加一个列
Alter table tabname add 列名称 列的数据类型
7.添加或删除粗主键
添加主键:
Alter table tabname add primary key(col)
删除主键:
Alter table tabname drop primary key(col)
8.创建或删除索引
创建索引:
create [unique] index idxname on tabname(col….)
删除索引:
drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9.创建或删除视图
创建视图:
create view viewname as select statement
删除视图:
drop view viewname
10.几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
11.使用外连接
A、left outer join: 左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。
B:right outer join: 右外连接(右连接):结果集既包括连接表的匹配行,也包括右连接表的所有行。
C:full outer join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
12.拷贝表(拷贝数据,源表名:a 目标表名:b)
insert into b(a, b, c) select d,e,f from a;
13.跨数据库之间表的拷贝(具体数据使用绝对路径)
insert into b(a, b, c) select d,e,f from a in ‘具体数据库’ where 条件例子:..from a in '"&Server.MapPath(".")&"data.mdb" &"' where..
14.between的用法,between限制查询数据范围时包括了边界值,not between不包括
15.随机取出10条数据
select top 10 * from tablename order by newid()
16.删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
17.列出一个表中所有的列名称
select name from syscolumns where id=object_id('TableName')
18.选择从10到15的记录(思路:按ID顺序取前15,然后倒叙取前5)
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
19.成绩表字段为学号,课程和成绩,按照学号分组,用一句SQL求每个学生成绩比较高的两个课程。
select * from 成绩表 a where 成绩 in (select top 2 成绩 from 成绩表 b where a.学号=b.学号 order by 成绩)
20.SQL Server 2000中使用的一些数据库对象
表格,视图,用户定义的函数,以及存储过程,触发器
21.什么是索引
简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。
22.什么是主键/外键?
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。
外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。