其他查询

摘要:
如果有其他关联表使用此ID,则无需从数据库中再次查找。1) 查询表是否具有SELECTOBJECT_ID相当于以下语句:SELECTidFROMsysobjectsWHERE Name=N'Students and type=N'U'2)通常用于在创建表和视图时进行决策。

1、SELECT INTO

从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份或者用于对记录进行存档。

语法:

SELECT column_name(s)
INTO new_table_name [IN externaldatabase] 
FROM old_tablename

IN 子句可用于向另一个数据库中拷贝表。

1)备份表信息

SELECT ID,Name 
INTO Students_Backup
FROM Students

2)复制到备份库

SELECT *
INTO Students IN 'Backup.mdb'
FROM Students

2、IDENTITY 

作用:创建唯一的,递增的列

注意:一张表中只能有一列为IDENTITY

1)创建学生信息表时,指定其ID为自增列,从1开始,每次递增1

复制代码
IF OBJECT_ID (N'Students', N'U') IS NOT NULL
    DROP TABLE Students;
GO
--学生信息表
CREATE TABLE Students(
ID int primary key IDENTITY(1,1) not null,
Name nvarchar(50),
Age int,
Sex bit,
City nvarchar(50),
MajorID int
)
复制代码

 

2)如果指定了自增列,又需要插入指定ID的值,需要停止INDENTIY,执行后再开启。

SET IDENTITY_Insert Students ON 
insert Students(ID,Name,Age,City) values(10,'Jim',18,'NewYank') 
SET IDENTITY_Insert Students OFF 

3)与SELECT INTO 合用,插入行号

这个常常用于临时表分页时使用。

注意:如果查询的列中有自增列,需要将其删除,或者屏蔽,因为一张表中只有一个IDENTITY字段。

SELECT IDENTITY(int,1,1) AS RowNumber,Name,Age,Sex,City
INTO Students_Backup
FROM Students

SCOPE_IDENTITY() 

还有一个常用的函数,与此一起使用 SCOPE_IDENTITY()

常常在有IDENTITY列的插入时,需要返回当前的行的IDENTITY的列值。

如: 

复制代码
IF OBJECT_ID (N'Students', N'U') IS NOT NULL
    DROP TABLE Students;
GO
--学生信息表
CREATE TABLE Students(
    ID int IDENTITY(1,1) PRIMARY KEY not null,
    Name nvarchar(50),
    Age int,
    Sex bit,
    City nvarchar(50),
    MajorID int
)

INSERT INTO Students(Name,Age,Sex,City,MajorID) VALUES('Jim',18,0,'ShangHai',12)
SELECT SCOPE_IDENTITY()
复制代码

这个例子,每次返回插入记录的ID的值。如果有其他关联表用到此ID,这时就不用再从数据库查一遍了。 

3、OBJECT_ID 

返回架构范围内对象的数据库对象标识号。

1)查询表是否存在

SELECT OBJECT_ID(N'Students',N'U')

与以下语句等价:

SELECT id FROM sysobjects WHERE name=N'Students' and type=N'U'

2)常常用于创建表、视图时,做判定。保证脚本的重复执行

创建学生信息表时,需要判定该表是否存在,如果存在则删除

复制代码
IF OBJECT_ID (N'Students', N'U') IS NOT NULL
    DROP TABLE Students;
GO
--学生信息表
CREATE TABLE Students(
ID int primary key IDENTITY(1,1) not null,
Name nvarchar(50),
Age int,
Sex bit,
City nvarchar(50),
MajorID int
)
复制代码

 4、跨库执行

如果系统需要多个数据库,当执行跨库脚本,无需再次进行连接,可以执行如下脚本

实例:当前在master库,查询TestDB库的Students表信息:

USE master

SELECT * FROM TestDB..Students

常用函数

1、LEN函数

计算字段值的长度

SELECT LEN(Name) AS NameLength FROM Students

2、FORMAT函数

FORMAT 函数用于对字段的显示进行格式化。

语法:

SELECT FORMAT(column_name,format) FROM table_name

1)时间格式化

SELECT FORMAT(GETDATE(),'yyyy-MM-dd') 

结果:2014-05-13

3、CAST函数

1、实例:将价格转为整型

SELECT CAST(Price AS smallint) AS CPrice FROM Orders

结果:10

2、将字段解析为XML

SELECT CAST(Scheme AS xml) AS CPrice FROM Orders

结果:

<xml>
  <ProductID>101</ProductID>
  <ProductName>Card</ProductName>
</xml>

 4、CONVERT

语法:

 CONVERT(data_type,expression[,style])

说明: 此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar) 相互转换的时候才用到.

tyle数字在转换时间时的含义如下: 其他查询第7张其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张Style(2位表示年份)         |  Style(4位表示年份)   |   输入输出格式                                     其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张0                               | 100                           |   mon dd yyyy hh:miAM(或PM)               其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张1                               |  101   美国                |   mm/dd/yy                                        其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张2                               |  102    ANSI               |   yy-mm-dd                                         其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张3                               |  103    英法                |   dd/mm/yy                                        其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张4                               |  104    德国                |   dd.mm.yy                                         其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张5                               |  105    意大利             |   dd-mm-yy                                         其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张6                               |  106                            |   dd mon yy                                         其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张7                               |  107                            |   mon dd,yy                                         其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张8                               |  108                            |   hh:mm:ss                                          其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张9                               |  109                            |   mon dd yyyy hh:mi:ss:mmmmAM(或PM) 其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张10                             |  110    美国                 |   mm-dd-yy                                          其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张11                             |  111    日本                 |   yy/mm/dd                                         其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张12                             |  112    ISO                  |   yymmdd                                            其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张13                             |  113     欧洲默认值     |   dd mon yyyy hh:mi:ss:mmm(24小时制)   其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张14                             |  114                            |   hh:mi:ss:mmm(24小时制)                     其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张20                             |  120     ODBC 规范     |    yyyy-mm-dd hh:mi:ss(24小时制)          其他查询第7张------------------------------------------------------------------------------------------------------------ 其他查询第7张21                             |   121                           |    yyyy-mm-dd hh:mi:ss:mmm(24小时制)  其他查询第7张------------------------------------------------------------------------------------------------------------

1)实例:时间转换为指定形式

SELECT CONVERT(NVARCHAR(20),GETDATE(),120) 

结果:2014-05-13 23:49:34

2)实例转为XML格式

SELECT CONVERT(xml,Scheme) FROM Orders

结果:

<xml>
  <ProductID>101</ProductID>
  <ProductName>Card</ProductName>
</xml>

   

全部脚本

复制代码
SELECT UCASE(Name) FROM Students
SELECT UCASE(LastName) as LastName,FirstName FROM Persons





SELECT GETDATE() --2014-05-13 23:15:36.130

SELECT FORMAT(GETDATE(),'yyyy-MM-dd')  --2014-05-13

IF OBJECT_ID('Orders','U') IS NOT NULL
DROP TABLE Orders
CREATE TABLE Orders
(
    ID bigint primary key not null,
    ProductID int,
    ProductName nvarchar(50),
    Price float,
    Scheme text,
    Created datetime default(getdate())
)

INSERT INTO Orders(ID,ProductID,ProductName,Price,Scheme) 
VALUES(201405130001,101,'Card',10.899,'<xml><ProductID>101</ProductID><ProductName>Card</ProductName></xml>')


SELECT LEN(ProductName) AS NameLength FROM Orders    --4

SELECT FORMAT(Created,'yyyy-MM-dd') AS FormatDate FROM Orders 

--2014-05-13

SELECT ROUND(Price,2) FROM Orders   --10.9

SELECT CAST(Price AS smallint) AS CPrice FROM Orders     
--10

SELECT CAST(Scheme AS xml) AS CPrice FROM Orders

--CONVERT
SELECT CONVERT(NVARCHAR(20),GETDATE(),120) --2014-05-13 23:49:34
SELECT CONVERT(xml,Scheme) FROM Orders
/* 结果:
<xml>
  <ProductID>101</ProductID>
  <ProductName>Card</ProductName>
</xml>
*/
复制代码

免责声明:文章转载自《其他查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.NET 通用多条件动态参数查询方法 SqlSugar ORMdeb包制作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Select语句也会引起死锁

项目上线,准备验收前出现了一个严重的问题:很多select语句作为死锁的牺牲,大部分报表无法打开。这个问题影响范围很大所有的报表都无法访问,而我们的报表是放在电视上面轮播的,电视放在工厂里面,所以出现问题后,整个工厂都知道了。 解决这个问题比较曲折,首先是写SAP接口的同事发现了问题:SAP一直在传错误数据导致产量表被锁住。修改SAP传输的错误数据后,这个...

WAF绕过方法

1.大小写绕过 这个大家都很熟悉,对于一些太垃圾的WAF效果显著,比如拦截了union,那就使用Union UnIoN等等绕过。 2.简单编码绕过 比如WAF检测关键字,那么我们让他检测不到就可以了。比如检测union,那么我们就用%55也就是U的16进制编码来代替U,union写成 %55nION,结合大小写也可以绕过一些WAF,你可以随意替换一个或几个...

mysql查询特定时间段内的数据

例如查询某张表2019年5月,06点-09点间的数据。select date from <表名> where month(列名)='5' AND extract(hour_minute from <列名>) BETWEEN '600' AND '859' (注意mysql between and 是包含两边的) MySQL日期时间E...

Oracle 固定执行计划-使用SPM(Sql Plan Management)固定执行计划

固定执行计划-使用SPM(Sql Plan Management)固定执行计划 转载自:http://www.lunar2013.com/2016/01/固定执行计划-使用spm%EF%BC%88sql-plan-management%EF%BC%89固定执行计划.html .固定执行计划-使用SQL Tuning Advisor固定执行计划-手工指定P...

Oracle11g温习-第十二章:tables

2013年4月27日 星期六 10:44 1、表的功能 存储、管理数据的基本单元(二维表:由行和列组成) 2、表的类型 1)普通表:【heap table(堆表) :数据存储时,无序的,对它的访问采用全表扫描】。 2)分区表:【(>2G) 对大表进行优化(Range Partitioning,List PartitioningHash P...

MYSQL 批量删除以特定前缀开头的表

前言 这是工作中确实会用到,比如分库分表后有t_order_01、t_order_02、t_order_03...t_order_08 这样的表。 测试过程中造了大量数据进行测试,其中可能含有部分脏数据,因此下一轮测试时最好把整个模块的数据进行删除。...