xml地图|网站地图|网站标签 [设为首页] [加入收藏]
sql语句进阶教程,快速刷新视图
分类:数据库

DECLARE @tableNames varchar(500)
SET @tableNames='xxx,DB2, '   -- 关键此处填写须求刷新视图的数据库名称

转载自:

Sqlserver  UrlEncode

DECLARE @i_start int
SET @i_start=1;

前段时间从教室借了本介绍SQL的书,筹划复习一下着力语法,记录一下笔记,整理一下思路,以备日后复习之用。

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UrlEncode]') and xtype in (N'FN', N'IF', N'TF'))
-- 删除函数
drop function [dbo].[UrlEncode]
GO
CREATE FUNCTION dbo.UrlEncode(@URL varchar(3072))
RETURNS varchar(3072)
AS
BEGIN 
 DECLARE @count int,
@char varchar(2),
@i int,
@bytes binary(2),
@low8 int,
@high8 int

DECLARE @URLEncode varchar(3000) ;
SET @count = LEN(@URL)
SET @i = 1
SET @URLEncode = ''
WHILE (@i <= @count)
BEGIN
 SET @char = SUBSTRING(@URL,@i,1)
 IF @char LIKE '[-A-Za-z0-9()''*._!]' AND DATALENGTH(@char) = 1
  SET @URLEncode = @URLEncode + @char
 ELSE
 BEGIN
  IF DATALENGTH(@char) = 1
  BEGIN
   SET @URLEncode = @URLEncode + '%' + SUBSTRING('0123456789ABCDEF',(ASCII(@char) / 16 + 1),1)
   SET @URLEncode = @URLEncode + SUBSTRING('0123456789ABCDEF',(ASCII(@char) % 16 + 1),1)
  END
  ELSE
  BEGIN
   SET @bytes = CONVERT(binary,@char)
   SET @high8 = (0xFF00 & CAST(@bytes AS int))/256
   SET @low8 = 0x00FF & CAST(@bytes AS int)
   SET @URLEncode = @URLEncode + '%' + SUBSTRING('0123456789ABCDEF',(@high8 / 16 + 1),1)
   SET @URLEncode = @URLEncode + SUBSTRING('0123456789ABCDEF',(@high8 % 16 + 1),1)
   SET @URLEncode = @URLEncode + '%' + SUBSTRING('0123456789ABCDEF',(@low8 / 16 + 1),1)
   SET @URLEncode = @URLEncode + SUBSTRING('0123456789ABCDEF',(@low8 % 16 + 1),1)
  END
 END
 SET @i = @i + 1

END
    RETURN @URLEncode;
END

DECLARE @i_end int
SET @i_end = CHARINDEX(',', @tableNames, @i_start);

PS:本文适用SQL Server二零一零语法。

 

DECLARE @tableName varchar(30)

后生可畏、关系型数据库和SQL

事实上正确的讲,SQL是一门语言,并非三个数据库。

什么是SQL呢?简单来讲,SQL就是保养和平运动用关系型数据库中的的多寡的黄金年代种标准的计算机语言。

declare @s nvarchar(一千) -- 注意此处改为nvarchar(一千)

1.1 SQL语言首要有3个至关心重视要的组成都部队分。

  1. DML(Data Manipulation Language)数据垄断语言。那些模块能够让大家寻觅、修改、扩展、删除数据库中的数据。
  2. DDL(Data Definition Language)数据定义语言。是的我们能够创造和改变数据库本人。如:DDL提供ALTER言语,他让我们得以修改数据库中表的宏图。
  3. DCL(Data Control Language)数据调控语言,用于掩护数据库的平安。

在SQL术语中,记录(record)和字段(田野先生)实际上就称为行(row)和列(column)。

WHILE @i_end>0
BEGIN
  SET @tableName= LTrim(RTrim(SUBSTRING(@tableNames, @i_start, @i_end-@i_start)))
  --select @tableName

1.2 主键和外键

主键之所以有供给:

  • 首先让你唯意气风发标记表中独立的一整套。主键确定保障了唯风姿洒脱性。
  • 能够十分轻易的将叁个表和另一个表关联。
  • 主键日常就能够自行暗许创制索引,升高了询问速度。

外键正是说A表中的有个别字段,同时是B中的主键,那么那么些字段就是A表中的外键。希望A表中的那几个外键的值必须是B中曾经存在的值。

  if exists(select * from master..sysdatabases where name=@tableName)
  begin
    print '更新 数据库['+ @tableName+']具备视图'

1.3 数据类型

日常来说,有3中至关心重视要的数据类型:

  1. 数字(Numeric)
  2. 字符(Character)
  3. 以致日期/时间(Date/Time)

bit是数字型,它只同意三个值,0和1。

字符类型区别^1):

类型 长度 说明
char 固定长度
nchar 固定长度 处理unicode数据类型(所有的字符使用两个字节表示)
varchar 可变长度 效率没char高 灵活
nvarchar 可变长度 处理unicode数据类型(所有的字符使用两个字节表示)
  • 1字节=8位
  • bit正是位,也叫比特位,是Computer表示数据最小的单位。
  • byte就是字节,1byte=8bit,1byte就是1B;
  • 多少个字符=2字节;

    if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#tempTable') and type='U')
    begin
      drop table #tempTable
    end
    create table #tempTable (_sql_ nvarchar(1000))

1.3 空值

空值不对等空格或空白。使用NULL表示空值。

    SET @s = 'USE '+@tableName+' select ''USE '+@tableName+ ' EXECUTE sp_refreshview '' + name from sysobjects where [xtype]=''V'''
    insert into #tempTable(_sql_)
    exec sp_executesql @s

二、简单增加和删除改查

    ---游标循环遍历--
    declare @temp nvarchar(1000)

2.1 查(列名有空格的事态)

1
2
SELECT [ last name]
FROM Customers

用方括号将有空格的列名括起来。
PS: MySQL使得重音符`(~)按钮。Oracle用双引号。

    --表明游标
    declare order_cursor cursor

查询顺序,SQL实践各样^2):

1
2
3
4
5
6
Select -1>选择列,-2>distinct,-3>top
  1>…From 表
  2>…Where 条件
  3>…Group by 列
  4>…Having 筛选条件
  6>…Order by 列

    for(select * from #tempTable)
    --张开游标--
    open order_cursor
    --伊始循环游标变量--
    fetch next from order_cursor into @temp
    while @@FETCH_STATUS = 0 --重回被 FETCH语句实践的结尾游标的场所--
    begin
      --print @temp
      exec (@temp) --OK
      --exec sp_executesql @temp --OK

2.2 增

1
2
3
4
5
6
INSERT INTO tablename
(columnlist)
VALUES
(RowValues1)
(RowValues2)
(repeat any number of times)

      fetch next from order_cursor into @temp --转到下三个游标,未有会死循环
    end

2.3 改

1
2
3
UPDATE  table
SET column1=expression1,column2=expression2(repeat any number of times)
WHERE condition

    close order_cursor --关闭游标
    deallocate order_cursor --释放游标

2.4 删

1
2
3
DELETE
FROM table
WHERE condition

剔除前能够证实一下:

1
2
3
4
SELECT 
COUNT(*)
FROM table
WHERE condition

 

若果想要删除全部的行,能够:

1
DELETE FROM table

 

或者

1
TRUNCATE TABLE table

 

TRUNCATE TABLE优势在于速度越来越快,但是不提供记录事务的结果。
别的三个分化点是,TRUNCATE TABLE复位了用来自增型的列的当下值,DELETE不会。

    --用完未来要把有时表清空
    drop table #tempTable--必要留意的是,这种格局不能够嵌套。

三、别名

关键字:AS

  end

3.1 总计字段

应用总括字段可以做如下的事体:

  • 慎选特定的单词大概数值
  • 对单个也许多少个列进行测算
  • 把列和直接量组合在协同。

  SET @i_start = @i_end + 1;
  SET @i_end = CHARINDEX(',', @tableNames, @i_start);

3.2 直接量

那么些直接量和表中的数目还没其余关联,正是为了证实所用,上边那种类型的表明式就叫做直接量(literal value)。
图片 1

1
2
SELECT '直接量' AS `类型`,firstname,lastname 
FROM `customers` ;

图片 2
如图,结果中央直属机关接量就在一列中了。

END

3.3 算数运算

例子1:

1
2
SELECT  num*price AS total
FROM orders

 

例子2:

1
2
SELECT  firstname+' '+lastname AS 'fullname'
FROM users

 

在MySql中年花甲之年是假设用CONCAT函数:

1
2
3
SELECT OrderID,FirstName,LastName,
CONCAT(FirstName,' ',LastName) AS 'fullname'
FROM orders

 

3.4 别名

1)列的外号

1
2
SELECT firstname AS fn
FROM customers

 

2) 表的别称

1
2
SELECT firstname 
FROM customers AS cu

 

说明:

  1. 列的外号是为了彰显用的,别名会作为查询结果的表头,无法在WHERE中选用列的别称,会出错!!!
  2. 表的别称确实是为了有扶植操成效的,能够在WHERE中运用列的小名实行!

四、使用函数

函数要有意气风发组圆括号跟在重大字背后,圆括号报告大家,那是一个函数!

4.1 字符函数

LEFT&RIGHT

LEFT(CharacterValue,NumberOfCharacters)
含义:选择CharacterValue字段的侧面NumberOfCharacters几个字符。
ps:奥迪Q5IGHT是左臂多少个字符。

LTRIM&RTRIM

LTRIM(CharacterValue)
能够去除左边早前的空格。RT昂科雷IM成效类似。

SUBSTRING

SUBSTRING(CharacterValue,StartPositon,NumberOfCharacters)
意义:接受从起头地点(包蕴),N个长度的字符。

1
2
SELECT 
SUBSTRING('thewhitegoat',4,5) AS 'The Answer'

 

返回:white

4.2 日期/时间函数

GETDATE

1
SELECT GETDATE()

回到当前天期和时间。
PS:在MySql中,等价函数是NOW,在Oracle中是CURRENT_DATE

本文由澳门新葡亰手机版发布于数据库,转载请注明出处:sql语句进阶教程,快速刷新视图

上一篇:数据库小结1,自动关闭 下一篇:没有了
猜你喜欢
热门排行
精彩图文