sql-server笔记-sql

--快捷键:关闭显示结果:ctrl+R
--一、创建表,删除表
/*--创建表
--格式:
create table 表名
(
    字段名 数据类型 [约束条件(identity(1,1);primary key)],
    字段名2 数据类型 [约束条件]

)
*/

/*
--删除数据库和表
drop 数据库名
drop table 表名
*/

/*
--创建table学生表
create table TblStudent
(
    tSId int identity(1,1) primary key,
    tSName nvarchar(50) not null,
    tSGender nchar(1),
    tSAge int,
    tSBirthday datetime,
    tSCardId VARCHAR(18),
    tSClassId INT

)
*/

/*
--创建table教室表
create table TblClass
(
    tClassId int identity(1,1) primary key,
    tClassName nvarchar(50)

)
*/

/*
--创建table成绩表
create table TblScore
(
    tScoreId int identity(1,1) primary key,
    tSid int not null,
    tEnglish float,
    tMath float
)
*/

use HeiMal3
--创建table教师表
create table Tblteacher
(
    tTId int identity(1,1) primary key,
    tTName nvarchar(50) not null,
    tTGender nchar(1),
    tTAge int,
    tTSalary money,
    tTBirthday datetime,
    tTJionDate datetime
)

/*
--创建部门表
create table Departments
(
    DepID int identity(1,1) primary key,
    DepName nvarchar(50)  null
)
*/

/*
--创建员工表
--<员工表>:员工号id,身份证号,姓名,性别,入职日期,年龄,地址,电话.所属部门,email
create table Employees
(
    EmpID int identity(1,1) primary key,
    EmpIDCard varchar(18) not null,
    EmpName nvarchar(50) null,
    EmpGender bit not null,
    EmpJionDate datetime,
    EmpAge int,
    EmpAddress nvarchar(300),
    EmpPhone varchar(100),
    Empmaill varchar(100),
    DeptID int not null,

)
*/

--创建table人表
create table TblPerson
(
    autoId int identity(1,1) primary key,
    uName nvarchar(10),
    age int,
    height int,
    gendder bit
)

--二、插入表
--格式:
--insert into 表名(列1,列2,列3) values(值1,值2,值3)
--连续插入多行
--insert into 表名(列1,列2,列3) values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3)

--向班级表插入一条记录
--自动编号列,默认就会自动增长,所以不需要(默认情况下也不能向自动编号列插入值)
/*
insert into TblClass(tClassName) values (‘.net黑马一期‘)

--查询显示出来
select * from TblClass
*/
/*
--向学生表插入一条记录
insert into
TblStudent(tSName,tSGender,tSAge,tSBirthday,tSCardId,tSClassId)
values(‘熊丽‘,‘女‘,‘北京市海定区‘,16,‘1998-5-5‘,‘123456789654123698‘,1)
*/
/*

insert into
TblStudent(tSName,tSGender,tSAddress,tSAge,tSBirthday,tSCardId,tSClassId)
values(‘刘天龙‘,‘男‘,‘北京海钉区‘,17,‘1997-5-5‘,‘12345784663135‘,1)

insert into
TblStudent
values(‘刘天龙12‘,‘男‘,‘北京海钉区‘,17,‘1997-5-5‘,‘12345784663135‘,1)
select * from TblStudent

insert into TblStudent(tSName,tsgender,tSAge)
values(‘石荣‘,‘女‘,15)
*/
/*
--向自动编号插入值(插入不了)
insert into TblClass(tClassId,tClassName)
values(500,‘.net黑马二期‘)
--方法
--向自动编号列插入值
--启动某个表的“自动编号列”手动插入值的功能
set identity_insert TblClass on
insert into TblClass(tClassId,tClassName)
values(500,‘.net黑马二期‘)
set identity_insert TblClass off
select * from TblClass

*/
insert into TblClass(tClassName)
values(‘.net黑马三期‘)

--字符串后面有中文,则前面加N
insert into TblClass(tClassName)
values(N‘.net黑马四期‘)

--三、更新列表
--格式:
--update 表名 set 列=新值,列2=新值2,......where 条件

use HeiMal3
select * from TblStudent

--如果不加where 条件,那么表示对表中所有的数据都进行修改,所以一定要加where条件

update TblStudent set tSAge=tSAge-1,tSName=tSName+‘(女)‘ where tSGender=‘女‘

--update 表名 set age=18 where name=‘王灿‘or age<25
--update 表名 set age=30 where (age>20and age<30) or age=50

--四、删除数据语句:
--delete from 表名 where ......
--delete 语句如果不加where 条件,表示将表中所有的数据都删除,加了where条件后,只会按照where条件进行删除

select * from TblStudent

--删除table学生表,不需要加在delete 后面 加 * 无条件进行删除,只有查询的时候带* 号
delete   from TblStudent

insert into
TblStudent
values(‘刘天龙12‘,‘男‘,‘北京海钉区‘,17,‘1997-5-5‘,‘12345784663135‘,1)
select * from TblStudent

--删除所有性别为‘女‘,同事年龄小于20岁的

delete from TblStudent where tSGender=‘女‘ and tSAge<20

--delete只是删除数据,表还在,和 drop不同

--删除表中的全部数据:
--1.delete from 表
--2.truncate table 表
--如果确定要删除表中全部数据,那么建议使用truncate
--truncate特点:
--1>truncate 语句不能跟where条件(无法根据条件进行删除,只能全部删除数据)
--2>同时自动编号恢复到初始值。delete 不能恢复到初始值
--3>使用truncate 删除表中所有数据比delete的效率高
--4>truncate 删除数据,不触发delete触发器。
select * from Tblteacher

/*
--向Tblteacher插入数据
insert  into Tblteacher(tTName,tTGender,tTAge,tTSalary,tTBirthday,tTJionDate)
values(‘苏坤‘,‘男‘,18,10060,‘1990-09-09‘,‘2010-12-15‘)
insert  into Tblteacher(tTName,tTGender,tTAge,tTSalary,tTBirthday,tTJionDate)
values(‘王二‘,‘男‘,18,10060,‘1990-09-09‘,‘2010-12-15‘),
(‘李四‘,‘男‘,18,10060,‘1990-09-09‘,‘2010-12-15‘),
(‘苏折坤‘,‘男‘,18,10060,‘1990-09-09‘,‘2010-12-15‘),
(‘苏大坤‘,‘男‘,18,10060,‘1990-09-09‘,‘2010-12-15‘),
(‘李梅‘,‘女‘,19,30060,‘1995-09-09‘,‘2015-12-15‘)
*/

--1.使用insert into 向TblTeacher表插入2条数据
select * from Tblteacher
insert into Tblteacher
values(‘刘琦‘,‘男‘,30,150000,‘1983-10-10‘,‘2012-5-8‘)

--2.向TblPerson表中插入2条数据.

select * from TblPerson
insert into TblPerson
values(‘百川儿‘,21,175,1),(‘小李‘,22,170,0)

--3.给TblScore中的studentId是1的英语成绩加10分
select * from TblScore
insert into TblScore
values(1,96,85),(2,93,88),(1,98,88)

update TblScore set tEnglish=tEnglish+10 where tSid=1

--3.1给TblScore中的studentId是1的英语成绩加10分,分数不能超过100.
--分数超过100的,都设置为100
--3.2给分数没有超过100的,每人加10分
select * from TblScore
update TblScore set tEnglish=100 where(tEnglish+10>100 or tEnglish+10=100)
update TblScore set tEnglish=tEnglish+10 where tEnglish+10<100

--4.所有男童鞋的年龄减1岁
select * from TblStudent
update TblStudent set tSAge=tSAge-1 where tSGender=‘男‘

--5.删除工资大于2000的老师
select * from Tblteacher
delete from Tblteacher where tTSalary>20000

--6.删除表,把自动增长列的值还原成种子(还原成默认值,最开始的状态,从1开始,每增加一次加1)
truncate table TblTeacher

--四、建立约束

--创建部门表
create table Department
(
    Depid int identity(1,1),
    DepName varchar(50)
)

--创建员工表

create table Employees
(
    EmpId int identity(1,1),
    EmpName varchar(50),
    EmpGender char(2),
    EmpAge int,
    Empmail varchar(100),
    EmpAddress varchar(500),

)

select * from Employees
select * from Department

--4.1非空约束:不能为空
--4.2主键约束(PK) primary key constraint 唯一且不能空
--4.3唯一约束(UQ) unique constraint 唯一,允许为空,但只能出现一次
--4.4默认约束(DF) default constraint 默认值
--4.5检查约束(Ck)check constraint 范围以及格式限制
--4.6外键约束(Fk) foreign key constraint表关系

--备注:当主键表中一个值被外键表被引用,则删除不了主键中的值,除非外键表不引用主键表

/*
--初始化表
truncate table TblScore
truncate table TblStudent
*/

--五、通过sql进行设置约束

/*--删除表,重新新建表
drop table Department
drop table Employees
*/

--5.1修改表结构。删除其中一列
--结构:
--alter table 表名 drop column EmpAddress
alter table Employees drop column EmpAddress
select * from Employees

--5.2增加一列EmpAddr nvarchar(1000)
--表中增加默认是列,所以不用写column
alter table Employees add EmpAddr nvarchar(1000)

--5.3修改表中,EmpEmaill的数据类型为varchar(200)

alter table Employees alter column Empmail varchar(200)

--5.4为EmpId增加一个主键约束
alter table Employees add constraint PK_Employees_EmpId primary key(EmpId)

--5.5为EmpName增加一个非空约束(修改列,由null修改为not null)

alter table Employees alter column EmpName varchar(50) not null

--5.6为EmpName增加唯一约束

alter table Employees add constraint UQ_Employees_EmpName unique(EmpName)

--5.7为性别增加一个默认约束,默认为‘男‘
alter table Employees add constraint DF_Employees_EmpGender default(‘男‘) for EmpGender

--5.8为性别增加一个检查约束,要求性别只能是:‘男‘ or ‘女‘
alter table Employees add constraint CK_Employees_EmpGender check(EmpGender=‘男‘ or EmpGender=‘女‘)
--为年龄增加一个检查约束:年龄必须在0--120岁之间。
alter table Employees add constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120)

select * from Department
select * from Employees
--5.9为部门表Department表设置主键,主键列是:DepId

alter table Department add constraint PK_Department_DepId primary key(DepId)

alter table Employees alter column 

--5.10为员工表中加入外键,增加一个DepId
alter table Employees drop column DepId
alter table Employees add EmpDepId int not null

--5.11添加外键约束
alter table Employees add constraint FK_Employees_Department foreign key(EmpDepId) references Department(Depid)

--5.12删除约束
--格式:
--alter table Employees drop constraint 外键1,外键2,外键3,
alter table Employees drop constraint FKEmployees_Department,PK_Department_DepId

--5.13通过一条代码增加多个约束
--格式:
--
alter table Employees add
constraint FK_Employees_Department foreign key(EmpDepId) references Department(Depid),
constraint PK_Department_DepId primary key(DepId),
constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120)

---备注:在创建表的时候吧约束就加上

drop table Department
drop table Employees
create table Department
(
    DepId int identity(1,1) primary key,
    DepName varchar(50) not null unique
)

--创建部门表
create table Department
(
    Depid int identity(1,1) primary key,
    DepName varchar(50) not null unique
)

--创建员工表

create table Employees
(
    EmpId int identity(1,1) primary key ,
    EmpName varchar(50) not null unique check(len(EmpName)>2) ,
    EmpGender char(2) default(‘男‘),
    EmpAge int check(EmpAge>0 and EmpAge<120),
    Empmail varchar(100) unique,
    EmpAddress varchar(500) not null,
    EmpDepId int foreign key references Department(DepId)  on delete cascade
    --EmpDepId int foreign key references Department(DepId)  on delete cascade //可以实现级联删除

)

--六、数据查询(****)
--显示所有行,所有列
--* 表示所有列
--查询语句中没有where条件,表示查询所有行
--先执行from语句,再执行select 语句
select *
from Tblteacher

--只查询部分列
select tTid,tTname,tTGender from Tblteacher

--根据条件,只查询部分行
select  *  from Tblteacher where tTId=5

--给查询结果的列起别名,也可以把 as  省略掉
select tTid as 编号,tTname as 姓名,tTGender as 性别 from Tblteacher

--格式变换,方便查看
select
    tTid as ‘(编号)‘,
    tTname as 姓名,
    tTGender as 性别
from Tblteacher

--备注:并不是select 必须和from 一起使用
--获取当前的时间
select GETDATE() 当前系统时间

--七、去掉重复
--distinct 是针对已经查询出的结果后去除重复
select   * from Tblteacher

select  distinct * from Tblteacher

select distinct tTGender from Tblteacher

--八、Top
--Top一般都与order by一起使用

------------排序
--order by 列名
--8.1按照年龄,降序排序
update Tblteacher set tTAge=16 where tTId=1
select * from Tblteacher order by tTAge desc

--8.2按照年龄,升序排序,
--备注:默认就是升序排序
select * from Tblteacher order by tTAge

--排序后,进行筛选前多少列
--显示前2条 top后面都有 * 号
select top 2 * from Tblteacher order by tTAge

--显示前20% 条数据,向上取整
select top 20 percent * from Tblteacher order by tTAge desc

--九、聚合函数--把多条聚合在一起,必须先进行分类。先分组再统计

--9.1统计出所有人的年龄的总和----sum()
select * from Tblteacher
select SUM(tTAge) as 年龄总和  from Tblteacher

--9.2统计表中有多少条记录----count()
select COUNT(*) from Tblteacher

--9.3计算平均年龄---avg()
select AVG(tTAge) as 平均年龄  from Tblteacher
select AVG(tTAge*1.0) as 平均年龄  from Tblteacher
select ((select SUM(tTAge) as 年龄总和 from Tblteacher)*1.0/(select COUNT(*)  as 总数 from Tblteacher))  as 平均年龄
--9.4计算年龄最大--max()
select max(tTAge) as 最大年龄  from Tblteacher

--9.4计算年龄最小--min()
select min(tTAge) as 最小年龄  from Tblteacher

------聚合函数的一些其他问题
--聚合函数不统计空值--count(),avg()      不统计空值,sum()把空值默认为0进行计算
--select count(tTAge) from Tblteacher

--如果使用聚合函数的时候,没有手动用group by 分组,那么聚合函数会把整个表中的数据作为一组来统计

--十、条件查询——————————————————————————————
--格式:
--select 列
--from 表
--where 条件

select * from TblScore

insert into TblScore(tSid,tEnglish,tMath)
values(1,85,42),
(2,85,80),
(3,35,90)

insert into TblScore
values(1,45,56)
--查询没有及格的学习
select * from TblScore where tEnglish<60 or tMath<60

--c查询年龄包含在20--30岁之间男同学(包含20和30)
select * from TblStudent where tSAge>=20 and tSAge<=30 and tSGender=‘男‘
select * from TblStudent where tSAge between 20 and  30 and tSGender=‘男‘

--查询出所有班级ID为3,4,5的那些学生
select * from TblStudent where tSClassId =3 or tSClassId =4  or tSClassId =5
--简化版
select * from TblStudent where tSClassId in(3,4,5)

--如果后面的值是连续的,则简化成下面的代码(区间的话,执行速度高效)
select * from TblStudent where tSClassId >=3 and tSClassId<=5

--备注:对于in或者or查询,如果查询中的条件是连续的几个数字,最好使用>= <= 或者 between and
--不要使用or 或者 in。提高效率

--十一、模糊查询(主要针对字符串)

--通配符:_ (下划线)  、  %  、  [] 、^
--:_(下划线)表示任意的单个字符

--查姓张,三个字(两个下划线)
select * from Tblteacher where tTName  like ‘苏__‘

--无论姓名的字数,只要是苏开头就可以
select * from Tblteacher where tTName  like ‘苏%‘

select * from Tblteacher where tTName  like ‘苏%‘ and LEN(tTName)=2

--:[](中括号)表示范围
--tTName:张a雨(女)(女)  把(女去掉)
update Tblteacher set tTName =REPLACE(tTName,‘(女)‘,‘‘)

--查询张开头,妹结尾,中间是数字

select * from Tblteacher where tTName like ‘张[0-9]妹‘
select * from Tblteacher where tTName like ‘张[a-z]妹‘
select * from Tblteacher where tTName like ‘张_妹‘

--张什么妹都可以,就是不是数字
select * from Tblteacher where tTName like ‘张[^0-9]妹‘

--数据中有名字中包含%。怎么查询(要进行转义)[放到中括号里]
select * from Tblteacher where tTName like ‘%\%%‘ --错误
select * from Tblteacher where tTName like ‘%[%]%‘--错误

--where columnA like ‘%5/%%‘ escape ‘/‘
select * from Tblteacher where tTName like ‘%/%%‘ escape ‘/‘

select * from Tblteacher where tTName like ‘%/]%‘ escape ‘/‘
select * from Tblteacher where tTName like ‘%/[%‘ escape ‘/‘
select * from Tblteacher where tTName like ‘%/[%/]%‘ escape ‘/‘

--十二、空值处理

select * from Tblteacher

--查询年龄中为空值的老师表
select * from Tblteacher where tTAge=null --查询不出来

--查询年龄中不是空值的老师表
select * from Tblteacher where tTAge<>null--查询不出来
select * from Tblteacher where tTAge=18 --查询出来
select * from Tblteacher where tTAge<>18 --查询出来

--备注:空值是空值(unknown),无法使用=或者<>进行比较
--判断null值必须使用is null 或者 is not null
select * from Tblteacher where tTAge is null
select * from Tblteacher where tTAge is  not null

--任何值和null计算都是null

---十三、order by排序
--1.降序order by 列名 desc
--2.升序order by 列名 asc 或者order by 列名(默认是升序)
--3.order by 语句必须一定要放在整个sql语句的最后
--select * from 表名
--where ...
--gourp by...
--haing ...
--order by ...

--4.根据多列进行排序
--先根据英语成绩排序,再根据数学成绩排名
--先按照英语成绩进行排序,英语成绩相同时,再按照数学成绩进行排序
select * from TblScore order by tEnglish desc,tMath desc

--向TblScore添加一列(平均成绩)
alter table TblScore add tAvg int
update TblScore set tAvg=(tEnglish+tMath)/2  where tScoreId =6
select *from TblScore

--显示的时候加入平均分
select * ,(tEnglish+tMath)/2 as 平均分

from TblScore
order by 平均分 desc 

--备注:执行顺序
select *  ---3执行
from TblScore ---1先执行
where tEnglish>=60 and tMath>=60 ----2执行
order by tEnglish desc,tMath desc  ---4最后

--top一般都要配合order by一起使用

--第十三章 数据分组

use HeiMal3

--分组一般都和聚合函数要一起连用
--对数据进行汇总统计
--对班级进行分组,并统计各班级人数
--查询每个班的班级ID和班级人数

select
    tSClassId as 班级ID,
    COUNT(*) as  班级人数
from TblStudent
group by tSClassId

--统计所有学生表中男同学与女同学的人数分别是多少?

select
    tSGender as 性别,
    COUNT(*) as  人数
from TblStudent
group by tSGender

--统计学生表中每个班的班级ID和班级中男同学的人数
select
    tSClassId as 班级ID,
    COUNT(*) as  男同学人数
from TblStudent
where tSGender=‘男‘
group by tSClassId
--先筛选,再分组

---只能出现分组中的列
--
select
    sum(tsage)  年龄,
    tsgender as 性别,
    count(*) as 人数

from TblStudent
group by tsgender
--当使用了分组语句(group by)或者是聚合函数的时候,在select的查询列表中不能再包含其他列的别名。
--除非该列同时也出现了group by 子语句中,或者该列也包含了某个聚合函数中

--第十四章 having----对分组以后的数据进行筛选:
--having与where都是对数据进行筛选,where是对分组的每一行数据进行筛选,而
--having是对分组后的每一组数据进行筛选
select
    tSClassId as 班级ID,
    COUNT(*) as  男同学人数
from TblStudent
where tSGender=‘男‘
group by tSClassId
having COUNT(*)>5
order by 男同学人数 asc --进行排序
--5>select 5.1选择列, 5.2>distinct,5.3>top(应用top选项最后计算)
--1>from 表
--2>where 条件
--3>group by 列
--4>having 筛选条件
--6>order by 列

--备注:select 语句的出来顺序
--以下显示select语句的处理顺序
--1.from
--2.on
--3.join
--4.where
--5.group by
--6.with |cube 或with rollup
--7.having
--8.select
--9.distinct
--10.order by
--11.top

------------test------------------------
/*

select 商品名称,
        SUM(销售数量) as 销量
from MyOrder
group by 商品名称
order by sum(销售数量) desc

select 商品名称,
        SUM(销售数量*销售价格) as 各总价格
from MyOrder
group by 商品名称
having sum(销售数量*销售价格) >3000
order by sum(销售数量*销售价格) desc

select 购买人,
        sum(销售数量) as 可口可乐的数量
from MyOrder
where 商品名称=‘可口可乐‘
group by 购买人

*/

--当把select查询后的结果用作后面的查询,必须要起一个别名
--必须起别名!!!!!!!!!!!!!!
/*
select
    SUM(T.销售数据) 喜爱度,
    T.购买人 客户

from (select * from MyOrder where 商品名称=‘可口可乐‘) as T
group by T.购买人
order by 喜爱度 desc
*/
时间: 2024-10-26 10:46:33

sql-server笔记-sql的相关文章

SQLSERVER 免费对比数据库结构和数据的工具支持:SQL Server 2012, SQL Server 2008 and SQL Server 2005

New xSQL Schema Compare - version 5 Compare the schemas of two SQL Server databases, review differences, generate synchronization script and execute it - xSQL Schema Compare makes database change management easy. xSQL Schema Compare supports SQL Serv

SQL SERVER 查看SQL语句IO,时间,索引消耗

1.查看SQL语句IO消耗 set statistics io on     select * from dbo.jx_order where order_time>'2011-04-12 12:49:57.580' set statistics io off 2.查看SQL语句时间消耗 set statistics time on      select * from dbo.jx_order where order_time>'2011-04-12 12:49:57.580' set st

连接SQL Server执行SQL语句

public static DataTable GetData() { string Connect = ConfigurationManager.AppSettings["ConnectionString"].ToString(); SqlConnection sc = new SqlConnection(Connect); sc.Open(); SqlCommand cm = new SqlCommand("select * from Department");

SQL Server 2008&mdash;&mdash;SQL命令INSERT

T-SQL的INSERT命令的语法: INSERT [INTO]     {table_name|view_name}     [{(column_name,column_name,-)}]     {VALUES (expression,expression,-)} 方括号内是可选的. 列名的列表必须用圆括号包围住,逗号分隔. 关键字VALUES是必须的,数据值用圆括号包围,逗号分隔. 最好是尽量避免在名称中包含空格: 如果表或视图的名称与保留字相同或包含空格,则必须用方括号或双引号将名称包围

(转)[SQL Server] 动态sql给变量赋值(或返回值给变量)

本文转载自:http://blog.csdn.net/xiaoxu0123/article/details/5684680 [SQL Server] 动态sql给变量赋值(或返回值给变量) declare @i_counts int, @i_times int; set @str_sql = 'select @tmp_counts = counts, @tmp_times=times ' + ' from ' +@str_dbname+ '.dbo.t_msisdn with(nolock) '

SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件

原文:SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件 从2005开始,就引入了"数据库邮件"功能.并且取代SQLMail.原有SQLMail可以继续使用. SQLMail要求有应用程序编程接口(Extended Messaging Application Programming Interface,MAPI),安装新的Office时可能导致SQLMail失败. 数据库邮件更加安全.可靠,并且不需要MAPI.具有群集感知能力.可以自动重传发送失败的

[Oracle][ODBC SQL Server Driver][SQL Server]对象名 &#39;RECOVER.HS_TRANSACTION_LOG&#39; 无效(转)

原帖由 qingyun 于 2010-6-21 15:44 发表 在写pl/sql的时候,有个很重要的注意点:比如:begin  update  某个sqlserver的表@dblink名字 .....;  update 某个oracle的表...;end; 这段pl/sql执行会报错:错误信息是:-----------------------------------------------------------------执行失败:ORA-02054: 事务处理 2.12.27634 有问题

SQL SERVER 插件SQL Prompt

打开SQL,提示“SQL Prompt has been disabled due to an error with the registration of a required DLL - TextMgrP.dll. To resolve the error, repair SQL Server Management Studio or Visual Studio from the Windows Control Panel.” 解决办法: 重新注册TextMgrP.dll 此动态库 开始->

Sql Server中sql语句自动换行

怎么让sql server中的sql语句自动换行呢? 如下图: 工具--选项--所有语言 Sql Server中sql语句自动换行

Sql Server利器sql prompt

看完园子里VAllen介绍sql prompt博文Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程后,结合自己的使用做些补充备忘. 解决问题 解决Sql Server Management Studio 中无法格式化Sql语句问题.原来切换到PL/Sql Developer中格式化Sql语句的日子终于结束了. 每次打select * from xxx,噼里啪啦一通打的过快导致字母顺序错乱.