最近很多小伙伴都在问基本SQLServer语句献给初学者和sqlserver基础语句这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展ISNULL-sqlserver语句、mssql
最近很多小伙伴都在问基本SQLServer语句献给初学者和sqlserver基础语句这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展ISNULL-sqlserver语句、mssqlserver基本sql语句、SQL Server 压缩MS SQLServer日志语句示例、SQL Server 简单触发器的使用 献给SQL初学者等相关知识,下面开始了哦!
本文目录一览:- 基本SQLServer语句献给初学者(sqlserver基础语句)
- ISNULL-sqlserver语句
- mssqlserver基本sql语句
- SQL Server 压缩MS SQLServer日志语句示例
- SQL Server 简单触发器的使用 献给SQL初学者
基本SQLServer语句献给初学者(sqlserver基础语句)
ISNULL-sqlserver语句
语法
ISNULL ( check_expression , replacement_value )
参数
check_expression
将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
replacement_value
在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。
返回类型
返回与 check_expression 相同的类型。
注释
如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value。
下面的示例为 titles 表中的所有书选择书名、类型及价格。如果一个书名的价格是 NULL,那么在结果集中显示的价格为 0.00。
USE pubs GO SELECT SUBSTRING(title,1,15) AS Title,type AS Type,ISNULL(price,0.00) AS Price FROM titles GO
下面是结果集:
Title Type Price --------------- ------------ --------------------------
The Busy Execut business 19.99
The Psychology UNDECIDED 0.00
mssqlserver基本sql语句
1.创建数据库
create database 数据名
2.创建表
create table 表名(列名 列类型)
3默认值约束
create table 表名(列名 列类型 default 值)
4.check约束
create table 表名 (列名 列类型 check (表达式))
5.主键约束
create table 表名(列名 列类型 primary key)
6.外键约束
create table 表名(列名 列类型 foreign key references 主键表名(主键列名))
7.唯一约束
create table 表名(列名 列类型 unique)
8.查询
select 列名 from 表名//查看一个字段
select 列名1,列名2 from 表名//查看多个字段
select * from 表名//查看所有字段
条件
select * from 表名 where 条件
多重条件
select * from 表名 where 条件1 and(or) 条件2
查询中的字符连接
select '字符串'+列名1+'字符串'+列名2 from 表名//要实现字符相加,必须保证所引用的列名类型一致
别名
select 列名 as 别名 from 表名
显示行数
select top 显示的行数 列名 from 表名
聚合函数
sum 总合
select sum(列名) from 表名//列名必须为数值类型,并且返回值一定是单行单列数值
平均值
select avg(列名) from 表名//列名必须为数值类型,并且返回值一定是单行单列数值
行总数
select count(*) from 表名
最大值
select max(列名) from 表名
最小值
select min(列名) from 表名
分组
select 列名1 from 表名 group by 列名1
模糊查询
select * from 表名 where 列名 like '%值%'
在什么之内
select * from 表名 where 列名 in(值1,值2,值3)
在什么之间
select * from 表名 where 列名 between 值1 and 值2
自联
select a.电话 from 职员表 as a inner join 职员表 as b on a.部门=b.部门 and b.姓名='张三' and a.职务='经理'
select 电话 from 职员表 where 职务='经理' and 部门 in(select 部门 from 职员表 where 姓名='张三')
插入数据
insert into 表名 values(值1,....)
扩展 : insert into 表名(字段1,字段2) values(值1,值2)
修改数据
update 表名 set 字段1=值 where 条件
删除数据 delete from 表名 where 条件
SQL Server 压缩MS SQLServer日志语句示例
感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!
代码如下:
--====================================================================
-- sql:数据库压缩语句
----------------------------------------------------------------------
-- Description: 压缩数据库
-- Modify: x.zhong
--====================================================================
DECLARE @db_name varchar(200)
--得到当前数据库名称
declare getdbname cursor for select db_name()
open getdbname
fetch getdbname into @db_name
while @@fetch_status = 0
begin
fetch getdbname into @db_name
end
close getdbname
DEALLOCATE getdbname
--压缩数据库日志
DUMP TRANSACTION @db_name WITH NO_LOG
BACKUP LOG @db_name WITH NO_LOG
DBCC SHRINKDATABASE(@db_name)
SQL Server 简单触发器的使用 献给SQL初学者
感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!
首先,啰嗦几句废话如下:(1)触发器(trigger)是个特殊的存储过程,它的执行并不需要我们去显式调用,而是由一些事件触发,这有点类似C#中的事件处理机制。当使用UPDATE,INSERT 或DELETE的一种或多种对指定的数据库的相关表进行操作时,会触发触发器。
(2)触发器可以包含复杂的sql语句,主要用于强制复杂的业务规则或要求。
(3)触发器能够维持数据库的完整性,当执行插入、更新或删除操作时,触发器会根据表与表之间的关系,强制保持其数据的完整性。
好,啰嗦完了开始贴代码,首先贴上我创建的两张表所包含的列,他们的关联关系是1对多,以UserID进行关联。
【图片暂缺】
然后来一个非常简单的触发器
代码如下:
IF EXISTS(SELECT * FROM sysobjects
WHERE name='tr_Users_OnUpdate' AND TYPE='TR')
DROP TRIGGER tr_Users_OnUpdate
GO --这里呢创建触发器与存储过程类似(都是DDL)
--先判断如否存在同名触发器就删除然后重建
CREATE TRIGGER tr_Users_OnUpdate
ON Users FOR UPDATE
AS PRINT ‘Users表已发生修改'
GO
上述代码中,tr_Users_OnUpdate为触发器名称,Users为表名。这触发器的作用是当向Users表执行Update时将打印“Users表已发生修改”。
好了我们可以看到这个触发器的实用性不是很大,那么接下来呢我们再来学习下关于触发器里两种特殊的表“inserted”和“deleted”。这两张表主要用于触发器。Deleted 表用于存储 执行DELETE 和 UPDATE操作时所影响的行的副本。而Inserted 表则用于存储 INSERT 和 UPDATE 语句所影响的行的副本。那么我们看到执行UPDATE操作时都会有记录分别存储到“inserted”和“deleted”。其实理解起来不难deleted表存储的是Update之前的记录,而inserted存储的呢则是Update之后的记录,这里关于理论性东西我不再赘述,官方资料有更详细说明。
现在我们要做的就是本文的重点,当往WordInfo添加一条记录时,使用触发器使UserInfo的相应记录的LeaveCount字段增加1。代码如下:
代码如下:
--添加留言的触发器
IF EXISTS(SELECT name FROM sysobjects WHERE name='tr_LeaveWord_Add' AND TYPE='TR')
DROP TRIGGER tr_LeaveWord_Add
GO
CREATE TRIGGER tr_LeaveWord_Add
ON WordInfo FOR INSERT
AS UPDATE UserInfo SET LeaveCount=LeaveCount+1
WHERE UserID=(SELECT TOP 1 UserID FROM Inserted)
GO
OK,到这里就可以收工了,值得注意的是如果触发器是UPDATE触发的,那么在执行Update后再查询更新之前的数据改成查询deleted表即可。
今天关于基本SQLServer语句献给初学者和sqlserver基础语句的讲解已经结束,谢谢您的阅读,如果想了解更多关于ISNULL-sqlserver语句、mssqlserver基本sql语句、SQL Server 压缩MS SQLServer日志语句示例、SQL Server 简单触发器的使用 献给SQL初学者的相关知识,请在本站搜索。
本文标签: