当前位置: 首页 > news >正文

sql t-Sql 操作

sql和t-sql语句学习 本文的部分内容从网上查找得到的,并给出了原文地址。 欠你一刀
一 常用函数(function)

1 数据类型转换函数

CAST ( expression AS data_type ) -- 将某种数据类型的表达式显式转换为另一种数据类型
CONVERT (data_type[(length)], expression [, style])-- 将某种数据类型的表达式显式转换为另一种数据类型

2 统计函数

AVG -- 返回组中值的平均值。空值将被忽略。
COUNT--返回组中项目的数量。
MAX--返回表达式的最大值。
MIN--返回表达式的最小值。
SUM--返回表达式中所有值的和,或只返回 DISTINCT 值。SUM 只能用于数字列。空值将被忽略。

STDEV()
  --STDEV()函数返回表达式中所有数据的标准差
  --STDEVP()
  --STDEVP()函数返回总体标准差 

  VAR()
  --VAR()函数返回表达式中所有值的统计变异数  

  VARP()
  --VARP()函数返回总体变异数 

3 数学函数

(1) 取近似值函数

SQRT( float_expression )--返回给定表达式的平方根。
CEILING( numeric_expression )--返回大于或等于所给数字表达式的最小整数。
FLOOR( numeric_expression )--返回小于或等于所给数字表达式的最大整数。
ROUND(numeric_expression , length)--返回数字表达式并四舍五入为指定的长度或精度。
SIGN( numeric_expression )--返回给定表达式的正 (+1)、零 (0) 或负 (-1) 号。
ABS ( numeric_expression )--返回给定数字表达式的绝对值。
PI(), 返回 PI 的常量值。
RAND(), RAND( seed )返回 0 到1 之间的随机float 值。

(2)三角函数

SIN(float_expression)--返回以弧度表示的角的正弦
COS(float_expression)--返回以弧度表示的角的余弦
TAN(float_expression)--返回以弧度表示的角的正切
COT(float_expression)--返回以弧度表示的角的余切

(3)反三角函数

ASIN(float_expression)--返回正弦是FLOAT值的以弧度表示的角
ACOS(float_expression)--返回余弦是FLOAT值的以弧度表示的角
ATAN(float_expression)--返回正切是FLOAT值的以弧度表示的角
ATAN2(float_expression1,float_expression2)--返回正切是float_expression1/float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)--当给出以弧度为单位的角度时,返回相应的以度数为单位的角度。
RADIANS(numeric_expression)------对于在数字表达式中输入的度数值返回弧度值。
EXP(float_expression)--返回表达式的指数值
LOG(float_expression)--返回表达式的自然对数值
LOG10(float_expression)--返回表达式的以10为底的对数值
SQRT(float_expression)--返回表达式的平方根

4 字符串函数

ASCII ( character_expression )--返回字符表达式最左端字符的 ASCII 代码值。
CHAR ( integer_expression )--将 int ASCII 代码转换为字符的字符串函数。
LOWER ( character_expression )--将大写字符数据转换为小写字符数据后返回字符表达式。
UPPER ( character_expression )--返回将小写字符数据转换为大写的字符表达式。
STR ( float_expression [ , length [ , decimal ] ] ) --由数字数据转换来的字符数据。
LTRIM( character_expression )--删除起始空格后返回字符表达式。
RTRIM ( character_expression )--截断所有尾随空格后返回一个字符串。
LEFT ( character_expression , integer_expression ) --返回从字符串左边开始指定个数的字符。
RIGHT ( character_expression , integer_expression ) --返回字符串中从右边开始指定个数的 integer_expression 字符。
SUBSTRING ( expression , start , length )--截取字符串
CHARINDEX ( expression1 , expression2 [ , start_location ] ) --返回字符串中指定表达式的起始位置,没有返回0
PATINDEX ( '%pattern%' , expression ) -- 返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。
REPLICATE ( character_expression , integer_expression )-- 以指定的次数重复字符表达式。
REVERSE ( character_expression )-- 返回字符表达式的反转。
REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )--用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。
STUFF ( character_expression , start , length , character_expression )--删除指定长度的字符并在指定的起始点插入另一组字符。
SPACE ( integer_expression )-- 返回由重复的空格组成的字符串。

5 日期函数

  DAY()--函数返回date_expression中的日期值
  MONTH()--函数返回date_expression中的月份值
  YEAR()--函数返回date_expression中的年份值
  DATEADD( datepart , number, date )--函数返回指定日期date加上指定的额外日期间隔number产生的新日期
  DATEDIFF( datepart , startdate , enddate )--函数返回两个指定日期在datepart方面的不同之处
  DATENAME(datepart , date )------函数以字符串的形式返回日期的指定部分
DATEPART( datepart , date )--函数以整数值的形式返回日期的指定部分
GETDATE()------函数以DATETIME的缺省格式返回系统当前的日期和时间  

6 系统函数

APP_NAME()------函数返回当前执行的应用程序的名称
COALESCE()-----函数返回众多表达式中第一个非NULL表达式的值
COL_LENGTH ( 'table' , 'column' ) ----函数返回表中指定字段的长度值
COL_NAME ( table_id , column_id )----返回数据库列的名称,该列具有相应的表标识号和列标识号。
DATALENGTH()-----函数返回数据表达式的数据的实际长度
DB_ID ( [ 'database_name' ] ) ------函数返回数据库的编号
DB_NAME(database_id)------函数返回数据库的名称
HOST_ID()-----函数返回服务器端计算机的名称
HOST_NAME()-----函数返回服务器端计算机的名称
IDENTITY ( data_type [ , seed , increment ] ) AS column_name --IDENTITY()函数只在SELECTINTO语句中使用用于插入一个identitycolumn列到新表中
ISDATE()----函数判断所给定的表达式是否为合理日期
ISNULL ( check_expression , replacement_value ) --函数将表达式中的NULL值用指定值替换
ISNUMERIC()----函数判断所给定的表达式是否为合理的数值
NEWID()----函数返回一个UNIQUEIDENTIFIER类型的数值
NULLIF ( expression , expression )--NULLIF函数在expression1与expression2相等时返回NULL值若不相等时则返回xpression1的值


[来源: http://stevieliu.blogchina.com/stevieliu/4720568.html]
[参考《SQL Server联机丛书》,略有修改]


二 SQL Server中各个系统表的作用

sysaltfiles 主数据库 保存数据库的文件
syscharsets 主数据库 字符集与排序顺序
sysconfigures 主数据库 配置选项
syscurconfigs 主数据库 当前配置选项
sysdatabases 主数据库 服务器中的数据库
syslanguages 主数据库 语言
syslogins 主数据库 登陆帐号信息
sysoledbusers 主数据库 链接服务器登陆信息
sysprocesses 主数据库 进程
sysremotelogins主数据库 远程登录帐号
syscolumns 每个数据库 列
sysconstrains 每个数据库 限制
sysfilegroups 每个数据库 文件组
sysfiles 每个数据库 文件
sysforeignkeys 每个数据库 外部关键字
sysindexs 每个数据库 索引
sysmenbers 每个数据库 角色成员
sysobjects 每个数据库 所有数据库对象
syspermissions 每个数据库 权限
systypes 每个数据库 用户定义数据类型
sysusers 每个数据库 用户

三 Transact_SQL

1 语法


语 句 功 能
(1) 数据操作
SELECT 从数据库表中检索数据行和列
INSERT 向数据库表添加新数据行
DELETE 从数据库表中删除数据行
UPDATE 更新数据库表中的数据
(2)数据定义
CREATE TABLE 创建一个数据库表
DROP TABLE 从数据库中删除表
ALTER TABLE 修改数据库表结构
CREATE VIEW 创建一个视图
DROP VIEW 从数据库中删除视图
CREATE INDEX 为数据库表创建一个索引
DROP INDEX 从数据库中删除索引
CREATE PROCEDURE 创建一个存储过程
DROP PROCEDURE 从数据库中删除存储过程
CREATE TRIGGER 创建一个触发器
DROP TRIGGER 从数据库中删除触发器
CREATE SCHEMA 向数据库添加一个新模式
DROP SCHEMA 从数据库中删除一个模式
CREATE DOMAIN 创建一个数据值域
ALTER DOMAIN 改变域定义
DROP DOMAIN 从数据库中删除一个域
(3)数据控制
GRANT 授予用户访问权限
DENY 拒绝用户访问
REVOKE 解除用户访问权限
(4)事务控制
COMMIT 结束当前事务
ROLLBACK 中止当前事务
SET TRANSACTION 定义当前事务数据访问特征
(5)程序化SQL
DECLARE 为查询设定游标
EXPLAN 为查询描述数据访问计划
OPEN 检索查询结果打开一个游标
FETCH 检索一行查询结果
CLOSE 关闭游标
PREPARE 为动态执行准备SQL 语句
EXECUTE 动态地执行SQL 语句
DESCRIBE 描述准备好的查询

 (6) 局部变量

declare @id char(10)
--set @id = '10010001'
select @id = '10010001'

(7)全局变量

---必须以@@开头

(8) IF ELSE

--举例:

declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' --打印字符串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'

(9) CASE

--举例:

use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end

(10) WHILE CONTINUE BREAK

--举例:

declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c --打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end

(11) WAITFOR

--举例:

--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from employee

2 常见用法举例

(1) SELECT

select *(列名) from table_name(表名) where column_name operator value
ex:(宿主)
select * from stock_information where stockid = str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
stockname like '[^F-M]%' --------- (^排除指定范围)
--------- 只能在使用like关键字的where子句中使用通配符)
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
order by 1,2 --------- by列号
stockname = (select stockname from stock_information where stockid = 4)
--------- 子查询
--------- 除非能确保内层select只返回一个行的值,
--------- 否则应在外层where子句中用一个in限定符
select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
select stockname , "stocknumber" = count(*) from table_name group by stockname
--------- group by 将表按行分组,指定列中有相同的值
having count(*) = 2 --------- having选定指定的组

select *
from table1, table2
where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示
table1.id =* table2.id -------- 右外部连接

select stockname from table1
union [all] ----- union合并查询结果集,all-保留重复行
select stockname from table2

(2) insert

insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
value (select Stockname , Stocknumber from Stock_table2)---value为select语句

(3) update

update table_name set Stockname = "xxx" [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4

(4) delete

delete from table_name where Stockid = 3
truncate table_name ----------- 删除表中所有行,仍保持表的完整性
drop table table_name --------------- 完全删除表

(5) alter table

alter table database.owner.table_name add column_name char(2) null ..
sp_help table_name ---- 显示表已有特征
create table table_name (name char(20), age smallint, lname varchar(30))
insert into table_name select ----- 实现删除列的方法(创建新表)
alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束

四 MS-SQL数据库开发常用汇总

1 按姓氏笔画排序

Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as

2 数据库加密

select encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同

3 取回表中字段

declare @list varchar(1000),@sql nvarchar(1000)
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
set @sql='select '+right(@list,len(@list)-1)+' from 表A'
exec (@sql)

4 查看硬盘分区

EXEC master..xp_fixeddrives

5 比较A,B表是否相等
if (select checksum_agg(binary_checksum(*)) from A)
=
(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'

6 杀掉所有的事件探察器进程
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid)
FROM master.dbo.sysprocesses
WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
EXEC sp_msforeach_worker '?'

7 记录搜索

(1) 开头到N条记录

Select Top N * From 表

(2) N到M条记录(要有主索引ID)

Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc

(3)N到结尾记录

Select Top N * From 表 Order by ID Desc

8 如何修改数据库的名称

sp_renamedb 'old_name', 'new_name'

9 获取当前数据库中的所有用户表

select Name from sysobjects where xtype='u' and status>=0

或者:

select * from information_schema.tables

10 获取某一个表的所有字段

select name from syscolumns where id=object_id('表名')

11 查看与某一个表相关的视图、存储过程、函数

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

12 查看当前数据库中所有存储过程

select name as 存储过程名称 from sysobjects where xtype='P'

13 查询用户创建的所有数据库

select * from master..sysdatabases D
where sid not in(select sid from master..syslogins where name='sa')

或者

select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01

14 查询某一个表的字段和数据类型

select column_name,data_type from information_schema.columns
where table_name = '表名'

15 判断一个表是否存在

if exists(select 1 from sysobjects where name='要判断的表名' and xtype='U')
print '在'
else
print '不在'

或者

if objectproperty(object_id('要判断的表名'),'isusertable') is null
print '无此表'
else
print '有此表'

16 在存储过程中删除表的列

http://blog.csdn.net/scucj/archive/2006/07/14/919525.aspx

17 创建一个表和两个字段,并指定其中一个字段为自增的关键字

CREATE TABLE '+ @TABLENAME + ' (tableID BigInt identity(1,1) primary key,myUserID BigInt)'

转载于:https://www.cnblogs.com/senion/archive/2011/10/27/2226982.html

相关文章:

  • 更换DS4700控制器的悲与喜
  • ISA限制用户上网的技巧:ISA2006系列之八
  • 单元测试的小结
  • 快速排序法——较优方法
  • UVA 445(Marvelous Mazes)
  • Unit 10 与同事一起搭车回家
  • 【转】在VC++下实现高彩色工具条2011-05-19 14:35引言
  • XenApp无法获取ICA文件
  • ruby on rails 之旅 第一章 ubuntu11.10安装
  • [体感游戏]关于体感游戏的一些思考(二) --- POV和基本场景
  • Java炸弹人实现及源码
  • 开发帮助文档Api
  • System.Windows.Forms.TabControl控件有关
  • Verilog 状态机写法 ( 转载,先看看到底好不好)
  • 轻量级的网页Rank算法,365Rss.cn的Rank技术解释以及算法讨论(一)
  • 「面试题」如何实现一个圣杯布局?
  • android图片蒙层
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • css属性的继承、初识值、计算值、当前值、应用值
  • Koa2 之文件上传下载
  • Linux链接文件
  • PHP变量
  • SAP云平台里Global Account和Sub Account的关系
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 网络应用优化——时延与带宽
  • 小程序开发之路(一)
  • 正则与JS中的正则
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • #pragma multi_compile #pragma shader_feature
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)STL算法之遍历容器
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (二十三)Flask之高频面试点
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)认识微服务
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .Net Core与存储过程(一)
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [AAuto]给百宝箱增加娱乐功能
  • [android] 练习PopupWindow实现对话框
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [C]整形提升(转载)
  • [C++] new和delete
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [iHooya]2023年1月30日作业解析
  • [mvc] 简单的forms认证
  • [PHP]禅道项目管理软件ZenTaoPMS源码包 v16.4