加载中…
个人资料
岸芷汀蓝
岸芷汀蓝
  • 博客等级:
  • 博客积分:0
  • 博客访问:195,267
  • 关注人气:68
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

SQL语法大全

(2009-08-13 17:20:58)
标签:

杂谈

分类: 数据库

一,使用T-SQL创建数据库

if exists(select * from sysdatabases where name='rr')
drop database rr

create database stuDB --数据库名
on
( name=dd,--stuDB_dat,  --数据库的逻辑名称
  filename='D:\b\stuDBdat.mdf',  --路径(物理名称)
  size=10,  --初始大小,单位是MB
  MAXSIZE =50, --最大容量
  filegrowth=5  --增长率
           ---其中on可以省略
log on
( name=aa,--'sale_log',
  filename='D:\a\stuDBlog.ldf',  --路径(物理名称)
  size=5MB,  --初始日志文件大小,单位是MB
  maxsize=50MB, --可以不设置
  filegrowth=5MB  --增长率
) ,
(
name='ii',
filename='d:\b\c_log.ldf',
size=5,
filegrowth=10,
maxsize=100
)
go

 

(1.)在 syslogins表中验证Windows用户是否映射到SQLServer登录用户
(2.)在syslogins表验证用户名和密码的有效性

sp_defaultdb:修改登录的默认数据库。

sp_grantdbaccess:用于添加数据库安全帐户并授予它访问权限。

sp_revokedbaccess:用于从数据库中删除安全帐户。

REVOKE:取消权限     DENY:拒绝权限     GRANT:授予权限

select stockname from table1
union [all] ----- union合并查询结果集,all-保留重复行
select stockname from table2
 ---------------------------------------------------------
1.--创建Windows登陆帐户,其中EXEC表示调用执行,
--如果是在本机,可用计算机名替换windows域名,
exec sp_grantlogin 'administrators\yyy'
exec sp_grantlogin 'jbtraining\s110'
----------------------------------------------------------
2.--创建SQL Server登陆帐户,调用存储过程sp_addlogin存储过程

 删除登陆帐户调用存储过程 sp_droplogin

SQL Server 将登陆帐号信息存储在syslogins中,所以查看登陆账号在系统表 syslogins 中

select * from syslogins --查看登陆帐户表
--检测相应的登陆用户是否存在于系统表 syslogins中
if exists(select * from syslogins where loginname=N'ddd')
 exec sp_droplogin 'ddd' --删除登陆用户
go
--创建登陆用户
exec sp_addlogin 'ddd' ,'123'
---------------------------------------------
3.

EXEC sp_grantdbaccess '登陆帐户' , '数据库用户'  --语法
----------------------------------------------------------
4.当不再需要某个登录时,可以用下面的命令删除该登录:
EXEC sp_droplogin 'Arwen'   --sp_droplogin删除登陆名

use master  --先使用master数据库创建新数据库
create database vvs
 go
use vvs
create table ccn  --建表
(
id int identity(1,1),
address varchar(10) not null default ('地球')
)
select * from ccn
insert into ccn values()
truncate
drop table ccn
--创建数据库用户
use vvs
exec sp_grantdbaccess 'tbc' ,'ttt' --ttt为数据库用户名

 

 alter table 表名
 add constraint ck_id check(id between 1 and 100)
 alter table 表名
 add constraint DF_address default '子午' for address

 alter table 表名
 add constraint FK_id
 foreign key (id) references stuINfo(stuNO)

 alter table 表名
 drop constraint 约束名

-------------------------------------------------
-------------------------------------------------
SELECT     HOST_NAME() --求得计算机名
--删除数据库   drop database [数据库名] go

--创建数据库   create database [数据库名] go

--打开数据库   use 数据库名 go

--创建表
create table [表名]
(
[列名] [数据类型] identity(增长种子,增长量) primary key(是否主键)(是否为空),
)
go

--删除表             drop table [表名] go
--查找指定表中所有记录select * from [表名]
--添加一条记录       insert into [表名] [列名] values [值]
--添加多行记录1     insert into[表名] [列名]select [列名] from [数据来源表]
--添加多行记录2
insert into[表名] [列名]
select [值],[值] union
...
select [值],[值]
--用一个表中满足条件的记录生成另外一个新的表select * into [表1] from [表2]
--删除记录1         delete from [表名] where [条件]
--删除记录2         truncate table [表名]
--给表中增加一个列  alter table [表名] add [新增列名] [数据类型]
--更新             update [表名] set [列名] = [更新值] where [条件]
--查询所有记录的所有列的值select * from [表名]
--where子句(条件)
select * from [表名] where [条件]
--as对列重命名    select [原列名] as [新列名] from [表名] 或select [原列名] [新列名] from [表名] 
--列的合并
                 select [列名1] + ',' + [列名2] as [新列名] from [表名]  --方法1
                 select [新列名] = [列名1] + ',' + [列名2] from [表名]   --方法2
--查询有NULL值的记录    select * from [表名] where [列名] is null
--查询空字符串          select * from [表名] where [列名] = ''
--常量列                select [列名,新列名] =[赋值] from [表名]
--显示表中前n条记录     select top  [n] * from [表名]
--显示表中百分之n的记录 select top [n] percent * from [表名]
--排序--升序            select * from [表名] order by [列名]
      --降序            select * from [表名] order by [列名] desc
--同时按照两个列排升序  select * from [表名] order by [列名1,列名2]
--sql函数--返回长度的函数len    select len('字符串')
--返回字符串前n个字符的函数     select left('字符串',n)
--返回字符串后n个字符的函数     select right('字符串',n)
--替换字符串中的某个字符的函数  select replace('字符串','字符串中被替换的字符','替换后的字符')
--替换字符串中的指定位置n指定长度x的字符的函数select stuff('字符串',n,x,'替换后的字符')                                       

--取当前系统信息的函数  select getdate()
--将指定的数值添加到指定的日期部分后的日期的函数 select dateadd(指定的日期,添加的日期,getdate())
--转换数据类型的函数  select convert(要转换的数据类型,'被转换的数据类型的值')


--多表联查
select [表名一.表名一中的列名],[表二.表二中的列名]
from [表名一],[表名二]
where [条件] 如(表名一.列名(与表二的列名相符) = 表名二.列名(与表一的列名相符))]

--内连接
select [表名一.表名一中的列名],[表二.表二中的列名]
from [表1],
inner join [表2]
on (表名一.列名(与表二的列名相符) = 表名二.列名(与表一的列名相符))

--三表联查
select [表1.表1中的列],[表2.表2中的列],[表3.表3中的列]
from [表1]
inner join [表1中的列]
on (表名1.列名(与表2的列名相符) = 表名2.列名(与表1的列名相符))
inner join 表2中的列
on (表名2.列名(与表3的列名相符) = 表名3.列名(与表2的列名相符))

 

--查询值1到值2之间的值(所有的列)
select * from users
where age between 值1 and 值2

--查询某列指定的几个值(所有的列)
select * from users
where  in 列名 ('值1','值2','值3')

--查询某列指定的几个值之外的所有值(所有的列)
select * from users
where nickname not in ('值1','值2','值3')

--查询某列中含有n的字符的所有值
select * from users
where 列名 like '%n%'

--查询某列出字段值为null的记录
select * from users
where 列名 is not null

--查询某列出字段值为空字符串的记录
select * from users
where 列名 = ''

--统计某表中有多少男性用户
select count(*) as 男性用户数量 from 表名 where sex<>'女'

--查找最大值
select max(列名) as 最大值 from 表名

--查找最小值
select min(列名) as 最小值 from 表名

--计算平均值
select avg(列名) as 平均值 from 表名

--计算总和
select sum(列名) as 总和 from 表名

--多表联查
--用where条件做
select 表名1.列名,表名2.列名
from 表名1,表名2
where 条件(两表ID相等)

--用内连接做
select 表名1.列名,表名2.列名
from 表名1 inner join 表名2
on 条件(两表ID相等)

--左外连接 ---左边的可以为空 右边的不可以
select  表名1.列名,表名2.列名
from 表名1 left join 表名2
on 条件(两表ID相等)

--右外连接---右边的可以为空 左边的不可以
select 表名1.列名,表名2.列名
from 表名1 right join 表名2
on 条件(两表ID相等)

--交叉连接
select 表名1.列名,表名2.列名
from 表名1 cross join 表名2
where  条件(两表ID相等)

--三表联查
select 表1.值1,表2.值2,表3.值3
from 表1
inner join 表2
on 条件(两表ID相等)
inner join 表3
on 条件(两表ID相等)

--group by
--统计编号为10001的学员所有考试的平均分
select sid,avg(mark)as 平均分
from score
group by sid

--统计每一门课程的平均分
select cid,avg(mark)as 平均分
from score
group by cid

--显示学生姓名和考试平均分
select u.nickname,avg(s.mark)as 平均分
from users as u
inner join score as s
on u.id=s.sid
group by u.nickname

--显示科目名称和科目平均分
select c.cname,avg(s.mark)as 平均分
from course as c
inner join score as s
on c.id=s.cid
group by c.cname

--显示平均分大于60分的学生姓名,科目名称,平均分
select c.cname,avg(s.mark)as 平均分
from course as c
inner join score as s
on c.id=s.cid
group by c.cname
having avg(s.mark)>60

and:只有两个条件都为true,整个表达式的结果才为true
or:只要有一个条件为true,整个表达式的结果就为true
not:条件为true,表达式结果为false;条件为false,表达式结果为true

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
后一篇:过滤器
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    后一篇 >过滤器
      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有