您的位置:首页 > 数据库

sql语句基础要点(以sql server 2008 为例)

2016-06-03 13:30 387 查看
注:

这是本人在学习sql语句时所记得的个人笔记

分离数据库:

在要分离的数据库上左击,选择“任务”—》“分离”

修改数据库名:

exec sp_renamedb 原数据库名称,想要改成的数据库名称

exec 是执行的意思;

sp_renamedb 是一个函数;

或:

alter database 原数据库名 modify name 要改的数据库名

删除数据库:

drop database 数据库名称

删除多个数据库:

drop database 数据库名称1,2

创建数据库:

create database mydatabase

on

(//创建数据库的数据库文件

name=mydatabase_data,

filename=’d:\sqlserve\mydatabase_data.mdf’

size=6,

maxsize=20,//最大尺寸

filegrowth=10%

)

log on

(//创建数据库的日志文件

name=mydatabase_log,

filename=’d:\sqllserve\mydatabase_log.ldf’/不用和数据库文件放在同一目录/

size=2,

maxsize=10,

filegrowth=10%

)

创建数据表:

use 数据库名称

create table 要创建的数据表名称



各个表内的属性和它们的数值类型,



浏览数据表的记录:

select * from 数据表名称

要查询指定属性的数据:

select 要查询的属性(多个用逗号分开)from 数据表名称

显示前多少行:

select top(行数)* from 数据表名称

增加数据库文件和日志文件:

alter database 数据库名称

add file //增加数据库文件



数据库文件的属性。。。。。



add log file//增加日志文件

(

数据库文件的属性。。。。

)

删除数据库的内部文件:

alter database 数据库名称//取得数据库权限

remove 内部文件名(不需要写后缀名)

修改数据表名称:

exec sp_rename “原表名”,”要改名”

修改数据表数据:

增加属性:

use 数据库名称

alter table 数据表名称

add 属性字段 数据类型

default 设置默认值:

default ‘默认值内容’

修改属性字段的数值类型:

use 数据库名称

alter 数据表名称

alter column 属性字段 要修改的数值类型//column 是列的意思。

删除字段:

use 数据库名称

alter 数据表名称

drop column 要删除的字段

插入记录:

use 数据库名称

insert into 数据表名称(要插入的字段) values(各字段的值(字符文本等非数值类型用单引号引起))

插入完整记录时,不用写字段。

收缩数据库:

数据库–》右击—》收缩 文件或数据库

复制数据库:

数据库—>右击—>任务

数据库快照:

创建数据库快照:

create database 数据库快照名称

on

{

数据库文件属性设置

}

。。。。。。。。

AS SNAPSHOT OF 要进行快照操作的数据库名

从快照数据库中恢复数据库文件:

restore database 原数据库名

from database_SNAPSHOT=’快照数据库名’

数据表的分类:

1.系统表

2.用户表

3.分区表

4.临时表

[b]规则:[/b]

创建规则:

create rule 规则名

as

规则条件 //句子须以@开头

for example:

@sss(数据类型名)>=20 and @sss<=120

绑定规则:

用存储过程Sp_bindrule 绑定规则

存储过程Sp_bindrule 可以绑定一个规则到表的一个列或一个用户自定义数据类型上。其语法如下:

sp_bindrule [@rulename =] ‘rule’, [@objname =] ‘object_name’ [, ‘futureonly’]

各参数说明如下: [@rulename =] ‘rule’ 指定规则名称。

[@objname =] ‘object_name’ 指定规则绑定的对象(列或用户自定义数据类型)。 ‘futureonly’

此选项仅在绑定规则到用户自定义数据类型上时才可以使用。当指定此选项时,仅以后使用此用户自定义数据类型的列会应用新规则,而当前已经使用此数据类型的列则不受影响

解除规则绑定:

sp_unbindrule 绑定的列或自定义数据类型

删除规则:

drop rule 规则名(删除规则前须解绑规则)

创建视图:

create view 视图名

as

条件

for eample:

create view V_view

as

select a.班级,a.年龄,b.姓名

from 表名1 a,表名2 b //定义a,b

where a.所属班级=b.班级编号

修改视图;

alter view 视图名

as

select 。。。。。

from 。。。。。

where/on 。。。。// 从新定义视图

修改视图数据:

与修改表格式相同;

索引

创建索引:

create 索引关键字 index 索引名称

on

表名/视图名(列名)

注:索引关键字包括:

[ CLUSTERED | NONCLUSTERED ]

聚集索引的区别

  聚集索引:物理存储按照索引排序

  非聚集索引:物理存储不按照索引排序(多列须创建该索引)

优势与缺点:

聚集索引:插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入),查询数据比非聚集数据的速度快

删除索引:

drop index 表名.索引名

架构

创建架构:

可视化操作;

安全性—》架构

create schema 架构名 authorization 数据库名(角色名)

select语句

select语句:

select 列

【into 表名 //把查询的信息插入到其他表中】

from 表名

【where 查询条件】 //例如:性别=‘男’

group by

having

【order by 】 //排序

SQL SELECT DISTINCT:

返回字段中所有非重复项,如:性别中有几十个汉族和几

十个回族,则返回汉族和回族

for example:

select distinct 列 from 。。。。。

where 查询条件

多条件要使用and/or/like 等关键字

like实例:

属性名 like 字段1 可以添加通配符来辅助搜索 //li

ke表示属性中包含字段1的

所用项。

通配符的使用;

表示可以是任何字段。

for example:

商丘 表示商丘某某

商丘 表示某某商丘

商丘* 表示某某商丘某某

排序order by:

order by 属性名 asc/desc (可多个) //默认升序(asc) 降序(desc)

for example:

order by 属性名1 asc,属性名2 desc

avg(属性名) 为该属性的所有值求平均数。

分组:

select 课程标号,avg(分数)from 成绩表 where 考试标号=‘00010’ group by 课程标号

//该sql语句的意思的是:从成绩表中选取考试编号为00010的数据,然后按照课程编号进行分组,统计各组的平均分。

如果修改为这样的语句:

group by rollup/cube(课程编号)

//表示统计完各组的平均数后,再加一行统计总的平均数。

rollup 表示统计的量不集中,各自在分统计的后面列出。

cube 表示统计的量集中,都在最后面后面列出。

函数:

//select max(属性名) from 。。。。

max() 最高数

min() 最小值

sum() 和

top 数字 //前几个数据

having子句(只有句子中包含group by 时才可使用):

为各组的统计数据提供筛选;

select 课程标号,avg(分数)from 成绩表 where 考试标号=‘00010’ group by 课程标号 havig avg(分数)>=90

//从成绩表中选取考试编号为00010的数据,然后按照课程编号进行分组,统计各组的平均分大于90的组。

插入数据insert 语句:

insert 。。。select语句:

insert 数据表【(列名)】 select 属性名 from 数据表 where。。。 。。。

select。。。into语句:

select 列名 into 新数据表名 from 数据表 where。。。

临时表:

表名前加#或##

update语句:

update 【top】表名 set 属性名=‘值’(可多个) where。。。

forexample:

update 学生信息 set 姓名=‘李军’,学号=‘000123’ where 姓名=‘李明’

//更新学生信息表中李明的姓名为李军,学号为000123;

update。。set。。from语句:

delete语句:

deletd from 数据表

top语句:

top number/number percent * from 。。。

声明变量:

declare 变量名 数据类型名

set 变量名=某某

select (变量名) percent * from 。。。

基本连接

基本规则:

select 子句列表中,每个目标列前都要加上基表名称 //表名。列名

from子句应包括所有使用的基表 //可以使用字母代替

where子句应定义一个同等连接

内连接:

select 列名

from 表名 join 表名 【on 等值连接条件 //与where功能相似】 //join表示两基表进行了内连接

where 。。

order by 。。。

内连接与基本连接功能相同,但表现形式不同

外连接:

有主表与从表之分,用主表去匹配从表,主表中没用匹配的行依然返回,从表的值用空值表示。

在外连接中,限制条件在on/where 有区别

在where中控制基表 (较多使用), on不控制基表

左外连接:

left join

join左边的为主表

右外连接:

right join

join右边的为主表

全连接:

full join

没有主表与次表之分,两表相互匹配,没有的都用null填充

交叉连接:

不带where子句,返回笛卡尔积

select 列名

from table1 cross join table2

自连接:

在一个表中连接

select lists

from 表1 字母,表1 字母

where 限制条件

联合查询:

select lists

from 。。

where

union 【all //显示省略的数据】

select 。。

from。。。

where。。

子查询:

在()中,

select 。。。

from 。。

where 姓名=(select 姓名 from 。。。)

exists关键字查询:

select 。。。

from 。。。

where exists

在if也可以

if exists 。。。

except差查询:

select 。。from,,。。。

except

select 。。from 。。。

//两个查询结果做差计算,去除前查询中存在的后查询中的内容并返回结果。

交查询:

两表中的交叉结果,两个查询语句中间添加intersect关键字。

xml查询:

sqlcmd工具:

sqlcmd -s 服务器名 //连接服务器,返回1为连接成功。

use 数据库名

go

支持t-sql语句。

sqlcmd -? //查询连接用法

声明变量:

declare @变量名 数据类型

set @变量名=。。//对变量进行赋值(使用select @变量名 from 。。 语句也可以)。

/ //除法运算,如果两个运算符皆为整数,结果为整数。

& 位与 //两个值皆为一时,结果为1.否则为0。

| 位或//有一个1时,为1.只有皆为0时,才为零。

ˆ 位异或//当两个值皆为1或0时,结果为0;否则为1;

其他运算符:

<> 不等于

!= 不等于

!> 不大于

!< 不小于

begin。。 end语句:

begin

若干语句

end

//作用相当于大括号。

if。。else语句:

if 。。else if 。。。else if。。。else。。。

//支持嵌套使用

case语句:

case 判断句(列名)

when 情况1 then 反馈1

when 情况2 then 反馈2

else 其它反馈

end

for example:

select * 列名=

case

。。。

end

//把反馈的内容赋予列名内容。

while语句:

while 判断句

begin

若干语句

end

waitfor语句(时间间隔):

waitfor

delay 时间值 //‘00:00:00’小时,分,秒 延迟值。

【time 时间【到时间执行】 定时值】

goto语句:

标签:

(标签名:)

goto 标签名

try。。。catch

添加字段:

alter table 表名 add 字段名 类型

删除字段:

alter table 表名 drop column 字段名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息