SQL Azure(七) 在SQL Azure Database中执行的T-SQL

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

前一章我们已经掌握了如何用SQL Server Management Studio(SSMS)连接SQL Azure 云端数据库。

这章我们将介绍如何使用SSMS在SQL Azure里执行T-SQL语句。

我们知道SQL Azure云端数据库是基于SQL Server 2012(Denali)的,也就是说SQL Azure支持大部分SQL Server的T-SQL语句。这里我们注意到,是大部分而不是全部的T-SQL语句。

1.首先我们用SSMS连接SQL Azure数据库(过程略,具体步骤请参考前一章的内容),我们还是使用newDB这个数据库

2.Create Table

假设我要创建一张学生信息表(student),这张表包含3个字段:

-  主键(unikey)

-  学号(studentnumber)

-  姓名(name)

创建的T-SQL语句如下:

复制代码
create table dbo.student
(
unikey nvarchar(100) not null ,
studentnumber nvarchar(100) not null ,
name nvarchar(100) not null
)
Go
复制代码

执行create table后显示执行成功:

于是这张student表就在微软East Asia(香港)的SQL Azure服务器上创建成功了。但是这张表不包含任何数据,我们需要给它添加一些内容,这就需要insert into语句,具体如下:

随后我们继续执行这行语句,但是SSMS显示执行不成功

 

报错信息为:这个版本的SQL Server不支持没有聚集索引的表。也就是说SQL Azure 数据库不支持没有聚集索引的表。

好了,看到这里有些读者会问:什么是聚集索引? 关于聚集索引的详细解答可以浏览百度百科。简单的说:聚集索引保证了确定表中数据的物理顺序。保证了这张表的数据在物理存储上在同一位置的。

那为什么SQL Azure上需要聚集索引呢?原因也非常简单:如果没有聚集索引的话,我们在student表中存储的数据可能存储在香港数据中心的若干台不同的物理磁盘里。而我们又知道,SQL Azure会自动做三重备份,存储在不同的物理磁盘的数据必然会降低备份的效率。读者如果有兴趣的话可以参考SQL Azure Team Blog: Why Do I Need a Clustered Index?

好了,我们必须要在student表中添加聚集索引,执行这句T-SQL

alter table dbo.student add constraint pk_whatever primary key clustered(unikey)

这样就在主键unikey上添加了聚集索引。我们继续执行insert语句:

显示执行成功!我们使用select语句来验证插入的数据:

 

2.中文显示

我们还是使用student表,先删除之前插入的2行数据:

delete from student;

然后插入4行新的数据:

最后查询我们插入的这4行数据:

仔细的读者会发现我们插入4行数据有2行无法正常显示学生的姓名,为什么呢?

我们可以执行这样一句T-SQL语句

select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='student'

会显示如下信息:

SQL Azure 数据库使用的默认数据库排序规则是:SQL_LATIN1_GENERAL_CP1_CI_AS,LATIN1_GENERAL 是英语,所以在进行中文字符插入时在字符串前面加上一个大写字母N。

注:关于对SQL_LATIN1_GENERAL_CP1_CI_AS的修改

alter   table   [TABLENAME]
alter column [COLUMNNAME] varchar(255) COLLATE Chinese_PRC_CS_AS_WS NULL

修改后的结果如下:

 

3.SELECT INTO

我们想创建一张新表叫mystudent,这张表的内容是完全复制student表。

执行以下语句

SELECT *  INTO mystudent FROM student

执行结果如下:

 

报错内容:SELECT INTO在Windows Azure里不被支持。

所以如果我们要复制一张表的所有内容,不能使用SELECT INTO语句,只能

-  先创建新表:CREATE TABLE mystudent

-  使用INSERT INTO mystudent SELECT FROM

 

 

以上我介绍了在SQL Azure里执行三个不同的T-SQL语句与我们在传统SQL Server中的不同,更多内容请读者参考:

-  MSDN:一般性的知道原则和限制 (SQL Azure数据库)

-  MSDN: Supported Transact-SQL Statements (SQL Azure Database)

-  MSDN: Unsupported Transact-SQL Statements (SQL Azure Database)

 

分类:  Azure SQL Database

本文转自Lei Zhang的博客博客园博客,原文链接:http://www.cnblogs.com/threestone/archive/2012/02/01/2334403.html,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
SQL Java 数据库连接
springboot-maven项目+jpa 运行过程中执行resources下sql脚本文件-ClassPathResource和ScriptUtils.executeSqlScript的使用
springboot-maven项目+jpa 运行过程中执行resources下sql脚本文件-ClassPathResource和ScriptUtils.executeSqlScript的使用
485 0
springboot-maven项目+jpa 运行过程中执行resources下sql脚本文件-ClassPathResource和ScriptUtils.executeSqlScript的使用
|
8月前
|
关系型数据库 MySQL 数据库
java.sql.SQLException: Connections could not be acquired from the underlying database!
java.sql.SQLException: Connections could not be acquired from the underlying database!
120 0
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
10月前
|
SQL 人工智能 自然语言处理
当LLM遇到Database:阿里达摩院联合HKU推出Text-to-SQL新基准​(1)
当LLM遇到Database:阿里达摩院联合HKU推出Text-to-SQL新基准​
2184 0
|
10月前
|
SQL 自然语言处理 达摩院
当LLM遇到Database:阿里达摩院联合HKU推出Text-to-SQL新基准​(2)
当LLM遇到Database:阿里达摩院联合HKU推出Text-to-SQL新基准​
1286 1
|
10月前
|
SQL 运维 Cloud Native
【SQL Server】数据库开发指南(五)T-SQL 高级查询综合应用与实战
T-SQL 是 SQL Server 的专用版本,提供了一组强大的高级查询功能,包括聚合函数、子查询、连接、视图、窗口函数、共享表达式、递归查询等。这些功能使得 T-SQL 可以轻松处理大量数据,并支持各种复杂的查询和数据操作。本文将介绍 T-SQL 的一些常见高级查询功能和语法,以及如何使用这些功能来优化 SQL Server 数据库的性能和效率。
148 1
【SQL Server】数据库开发指南(五)T-SQL 高级查询综合应用与实战
|
10月前
|
SQL 存储 安全
在 Go 中如何使用 database/sql 来操作数据库
在 Go 中如何使用 database/sql 来操作数据库
184 0
|
SQL 存储 数据挖掘
【SQL Server】数据库开发指南(三)面向数据分析的 T-SQL 编程技巧与实践
T-SQL 指的是 Transact-SQL,是一种针对 Microsoft SQL Server 数据库系统的 SQL 方言。T-SQL 扩展了标准 SQL 语言,提供了更多的功能和特性,包括事务处理、错误处理、游标处理、动态 SQL、存储过程、触发器、用户定义函数等等。
115 0
【SQL Server】数据库开发指南(三)面向数据分析的 T-SQL 编程技巧与实践
|
SQL 关系型数据库 MySQL
设计模式之Database/SQL与GORM实践|青训营笔记
本篇笔记暂时的定位是以介绍两种方式操作(MySQL)数据库为主,并辅以一些源码的解读帮助大家更好理解数据库连接的过程。
219 0
设计模式之Database/SQL与GORM实践|青训营笔记
|
SQL IDE 开发工具
Python脚本执行hive SQL命令
Python脚本执行hive SQL命令