一、sql语句的执行顺序

  查询时数据库中使用最多的操作,一条sql语句的查询顺序是

    1、from Tb1 [ join on ]   得到查询的数据源

    2、where         对数据过滤(单条数据上过滤)

    3、group by                    对数据分组

    4、having        筛选分组(在组别上进行过滤)

    5、select distinct     获取结果集

    6、order by      对结果集排序

二、常用的基础知识

1.创建表和查看表结构

--exec sp_help cities  可以用来查看一张表的详细信息
--创建省份表
CREATE TABLE [dbo].[Provices] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
CONSTRAINT [PK_Provices] PRIMARY KEY CLUSTERED ([Id] ASC)
); --创建城市表
CREATE TABLE [dbo].[Cities] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[ProviceId] INT NOT NULL DEFAULT 0,
[Name] NVARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_Cities] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Cities_Provices_ProviceId] FOREIGN KEY ([ProviceId]) REFERENCES [dbo].[Provices] ([Id]) ON DELETE CASCADE,
);

  查看表结构(原文地址

SELECT
表名 = case when a.colorder=1 then d.name else '' end,
表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号 = a.colorder,
字段名 = a.name,
标识 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主键 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
类型 = b.name,
占用字节数 = a.length,
长度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数 = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空 = case when a.isnullable=1 then '√'else '' end,
默认值 = isnull(e.text,''),
字段说明 = isnull(g.[value],'')
FROM syscolumns a
  left join systypes b on a.xusertype=b.xusertype
  inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
  left join syscomments e on a.cdefault=e.id
  left join sys.extended_properties g on a.id=G.major_id and a.colid=g.minor_id
  left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
where d.name='LogInfo' --如果只查询指定表,加上此条件
order by
a.id,a.colorder

2.列的管理

  对字段进行修改和删除的时候要首先删除和字段相关的约束,否则无法修改/删除成功

----1.添加字段
ALTER TABLE Student ADD TESTCOL NVARCHAR(20) DEFAULT 'HELLOWORLD' NOT NULL; ----2.修改字段长度
ALTER TABLE Student DROP CONSTRAINT DF__CITIES__TESTCOL;
ALTER TABLE Student ALTER COLUMN TESTCOL VARCHAR(100) NOT NULL;
ALTER TABLE Student ADD DEFAULT ('HELLOWORLD1') FOR TESTCOL WITH VALUES ----3.删除字段
ALTER TABLE Student DROP CONSTRAINT DF__CITIES__TESTCOL;
ALTER TABLE Student DROP COLUMN TESTCOL;

3.约束管理

--主键约束
ALTER TABLE Student
ADD CONSTRAINT PK_StuNo PRIMARY KEY (StudentNo) --唯一约束
ALTER TABLE Student
ADD CONSTRAINT UQ_stuID UNIQUE (IdentityCard) --默认约束(地址不详)
ALTER TABLE Student
ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR Address --检查约束(出生日期是自1980年1月1日以后)
ALTER TABLE Student
ADD CONSTRAINT CK_stuBornDate CHECK(BornDate>='1980-1-1') --添加外键约束
ALTER TABLE Student
ADD CONSTRAINT FK_Student_Grade_GradID
FOREIGN KEY(GradeID) REFERENCES Grade(GradeID)
go ----查看和修改约束
exec sp_helpconstraint 'Student' --查看Student表的约束
alter table Student drop constraint FK_Student_Grade_GradID--删除约束

4.控制语句

----IF ELSE实例

declare @score int; SET @score=44;
IF (@score>=90) begin print '优秀'; end
ELSE if(@score>=60) begin print '及格'; end
ELSE begin print '不及格'; end ----WHILE实例 declare @i int; declare @sum int;
set @i=1; set @sum=0; WHILE(@i<=100)
BEGIN
SET @sum=@sum+@i ;
SET @i+=1;
END print @sum ----CASE实例 declare @sex int; SET @sex=1; --写法1
select
CASE
WHEN @sex=0 THEN 'female'
WHEN @sex=1 THEN 'male'
ELSE 'unknown'
END --写法2
select
CASE @sex
WHEN 0 THEN 'female'
WHEN 1 THEN 'male'
ELSE 'unknown'
END

一个小案例,当平均成绩小于60的时候进行加分来降低不及格率,90分以上的不加分,80分以上的加1分,其他的加3分

declare @avgscore int;
select @avgscore=avg(score) from stuScore
while(@avgscore<60)
begin
update stuScore set score+=
case
when score>=90 then 0
when score>=80 then 1
else 3
end
select @avgscore=avg(score) from stuScore;
end

5.常用的全局变量

select @@ERROR as 最后一个sql错误的错误码
select @@IDENTITY as 最后一次插入的记录的ID
select @@LANGUAGE as 语言
select @@MAX_CONNECTIONS as 可用的最大连接数
select @@ROWCOUNT as 最后一句sql语句的影响行数
select @@SERVERNAME as 本地服务器名称
select @@TRANCOUNT as 当前打开的事务数
select @@VERSION as sqlserver版本

SqlServer中的查询简单总结的更多相关文章

  1. sqlserver中怎么查询字段为空的记录

    sqlserver中怎么查询字段为空的记录的两种方法: 详细介绍请查看全文:https://cnblogs.com/qianzf/ 原文博客的链接地址:https://cnblogs.com/qzf/

  2. SqlServer中循环查询结果集

    ); begin ; open c_test_main;--打开游标 --开始循环 begin fetch next from c_test_main into @id,@value; --赋值到变量 ...

  3. sqlserver中xml查询

    DECLARE @DOC XML =' <books> <book category="C#">    <title language="e ...

  4. SQLServer中查询的数字列前面补0返回指定长度的字符串

    SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ ...

  5. Oracle&SQLServer中实现跨库查询

    一.在SQLServer中连接另一个SQLServer库数据 在SQL中,要想在本地库中查询另一个数据库中的数据表时,可以创建一个链接服务器: EXEC master.dbo.sp_addlinked ...

  6. SQLSERVER中的LOB页面简单研究

    SQLSERVER中的LOB页面简单研究 这篇文章和我另一篇文章是相辅相成的,在看<SQLSERVER2012 列存储索引的简单研究和测试>这篇文章之前希望大家先看一下这篇文章o(∩_∩) ...

  7. 用锁实现SQLSERVER中简单并发控制(转)

    研究Oracle的同学都知道,Oracle的select语句中可以使用for update或者for update nowait来控制并发,这一功能可以使开发人员轻易的将锁定控制在会话级+行级,可以说 ...

  8. 通过SQL脚本来查询SQLServer 中主外键关系

    在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好: 此篇文章主要介绍通过SQL脚本来查看Sqlserver中主 ...

  9. 【转载】Sqlserver中查询窗口显示行号

    在Sqlserver中编写语句的时候,有时候因为业务逻辑比较复杂,编写的语句会比较多,此时如果编辑器中显示代码的行号,则对于我们的语句编写有很好的辅助作用.sqlserver默认未开启行号显示功能,可 ...

随机推荐

  1. PHP MySql增删改查

    mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?p ...

  2. RAID 磁盘阵列说明

    Copy From wiki RAID档次 最少硬盘 最大容错 可用容量 读取性能 写入性能 安全性 目的 应用产业 单一硬盘 (引用) 0 1 1 1 无     JBOD 1 0 n 1 1 无( ...

  3. WPF将数据库和GridView绑定并更改GridView模板

    首先来看一下如何使用GridView,在前台的话代码如下:这里仅仅举出一个例子,GridView是作为子项嵌套在ListView中的,这里的数据源是通过绑定的方式来绑定到GridView中的. < ...

  4. 简单谈谈DNS协议

    DNS协议也可以称为DNS服务,全称是Domain Name System,即域名系统,和HTTP协议一样,也是一个位于应用层的协议(服务),它是基于运输层的UDP协议的,关于网络协议的分层介绍,见这 ...

  5. Java之Logger日志(Java8特性)

    import java.util.logging.Level; import java.util.logging.Logger; public class LoggingDemo { public s ...

  6. Nginx REWRITE阶段

    rewrite_log on ;#每次rewrite都会记录一条记录在errorlog里 error_log logs/xxx.log notice; location /first { rewrit ...

  7. BZOJ1018[SHOI2008]堵塞的交通——线段树

    题目描述 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总 ...

  8. BZOJ2863[SHOI2012]魔法树——树链剖分+线段树

    题目描述 输入 输出 样例输入 4 0 1 1 2 2 3 4 Add 1 3 1 Query 0 Query 1 Query 2 样例输出 3 3 2   树链剖分模板题,路径修改子树查询,注意节点 ...

  9. day11 内置函数

    特殊算数运算 计算整数的和 l = [1,2,3,4,5] print(sum(l)) 除法运算,然后取余 在做页面的时候可以根据数据量分页的时候使用 print(divmod(10,3)) # (3 ...

  10. IPython Notebook 运行python Spark程序

    1.安装pip 因为centos7.0自带的python系统是2.7.5,并没有安装pip,需要先安装pip $ wget https://bootstrap.pypa.io/get-pip.py $ ...