GVKun编程网logo

基本SQLServer语句献给初学者(sqlserver基础语句)

11

最近很多小伙伴都在问基本SQLServer语句献给初学者和sqlserver基础语句这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展ISNULL-sqlserver语句、mssql

最近很多小伙伴都在问基本SQLServer语句献给初学者sqlserver基础语句这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展ISNULL-sqlserver语句、mssqlserver基本sql语句、SQL Server 压缩MS SQLServer日志语句示例、SQL Server 简单触发器的使用 献给SQL初学者等相关知识,下面开始了哦!

本文目录一览:

基本SQLServer语句献给初学者(sqlserver基础语句)

基本SQLServer语句献给初学者(sqlserver基础语句)

创建数据库 CREATE database mydtItcast on primary ( name='mydtItcast_data',fileName='D:\Program Files\Microsoft sql Server\MSsql10.MSsqlSERVER\MSsql\DATA\mydtItcast.mdf',size=5MB,maxSize=10MB,filegrowth=1MB ) log on ( name='mydtItcast_log',filename='D:\Program Files\Microsoft sql Server\MSsql10.MSsqlSERVER\MSsql\DATA\mydtItcast.ldf',size=1MB,maxsize=5MB,filegrowth=10% ) CREATE table Food ( fId int identity(1,1) primary key,fName nvarchar(10),fAddress nvarchar(50),--商品的厂商 FacId int not null ) CREATE table Factory ( FacId int identity(1,FacName nvarchar(20),FacAddress nvarchar(50),FacDesc nvarchar(20) ) ============================================= drop table myitstudent--删除一个表 CREATE table myItStudent--创建一个表 ( stuId int identity(1,--此时这列就是自动增长的列,是主键 stuName nvarchar(10),-- not null,代表不能为空 stuAge int --not null  年龄不能为空 ) 插入 insert INTO food(fname,faddress,facId)VALUES('汉堡包','东南大街',1) insert INTO food(fname,facId)VALUES('饼干','西南大街',2) INSERT INTO factory( FacName,FacAddress,FacDesc)VALUES('肯德基','中国北京','不是中国的') Insert into Food(fname,facid)  select '炒饭','门口饭店',3 union select '炒面',3  union select '炒冰',3  union select '炒菜',3  union select '炒肉',3 insert INTO tblstudent values('刘德华',1,27,'香港','131000','123','2010-01-27',1) 修改 update tblstudent SET tsage=tsage+1 UPDATE tblstudent SET tsage=30 WHERE tsgender='男' AND tsage<25 UPDATE TblStudent set tsname=tsname+'( ^_^ )/~~拜拜' where tsage=30 and tsname='张1忌' 删除 delete FROM student --数据没了  表还有 DROP TABLE student--删除表  delete from food WHERE fid=10--根据条件删除某一条记录 truncate table food--删除的时候 表 还有  数据没了--在删除的时候,id的值(主键,)相当于重置 --当创建了主外键关系后,如果在外键表中有任何记录引用了主键表中的某条记录,则在主键表中不能删除该记录。同时主键表也不能删除。 create table Employees ( EmpId int identity(1,1),--主键约束 EmpName varchar(50),--名字在到个字符,姓名不能重复 --len(EmpName)>=5 and len(EmpName)<=10 --不能重复唯一约束设计添加索引,UQ 唯一键,设置名字列 EmpGender char(2),--只能输入男女--EmpGender='男' or EmpGender='女' EmpAge int,--年龄在-120 同上EmpAge>=0 and EmpAge<=120 EmpEmail varchar(100),--不能重复,必须在-25之间字符 --len(EmpEmail)>5 and len(EmpEmail)<25 EmpAddress varchar(500) ) create table Department ( DepId int identity(1,DepName varchar(50) unique not null ) --主键约束选中表单击设计设为主键 --检查约束部门名称必须在到个字之间 --len(DepName)>=5 and len(DepName)<=10 --默认约束 选中列然后下面改默认 --外键约束的时候 选择表 设计 关系 添加就可以了 --如果就想删除,那就在外键表 设计 关系中找到删除规则,和更新规则变成级联就删了 --手动删除一列(删除EmpAddress列) alter table Employees drop column EmpAddress select * from employees --手动删除一列(删除EmpAddress列) --手动增加一列(增加一列EmpAddr varchar(1000)) alter table employees add EmpAddr varchar(100) --手动修改一下EmpEmail的数据类型(varchar(200)) ALTER table employees alter column empemail varchar(200) --为EmpId增加一个主键约束 ALTER table employees add constraint PK_EmpId primary key(EmpId) ----非空约束,为EmpName增加一个非空约束 alter table employees alter column empName varchar(50) not null ----为EmpName增加一个唯一约束 alter table employees add constraint UQ_EmpName unique(EmpName) --为性别增加一个默认约束,默认为'男' ALTER table employees add constraint DF_EmpGender default('男') for EmpGender --为年龄增加一个检查约束:年龄必须在-120岁之间,含岁与岁。 alter table employees add constraint CK_EmpAge check(empage>=0 and empage<=120) --然后为Employee表增加一个DepId列。 alter table employees add DepId int --增加外键约束 alter table employees add constraint FK_Employees_Department foreign key (DepId) references Department(DepId) SELECT disTINCT TSName FROM TblStudent---把重复的数据干掉了 == SELECT '数学最高成绩',max(TMath) from Tblscore SELECT max(TMath) as 数学最高成绩 from Tblscore SELECT min(tenglish),max(TMath) from Tblscore SELECT sum(tenglish) from Tblscore--null不参与运算 SELECT avg(tenglish) from Tblscore select count(*) FROM Tblscore--在求总行数的时候 * --求英语成绩 select '英语成绩'=sum(tenglish),tmath FROM Tblscore --查询年龄在20-30岁之间的男学生 select * FROM Tblscore where tmath BETWEEN 120 AND 150  --============================下面两种方法都能查询到 班级id为1,2,3的所有学生 select * FROM TblStudent where TClassId=1 OR TClassId=2 OR TClassId=3 select * FROM TblStudent where TClassId  IN(1,2,3) ========简单查 select * FROM TblStudent where TSName LIKE '张%'--%所有的字符 select * FROM TblStudent where TSName LIKE '张_'--_表示的是单个的字符 select * FROM TblStudent where TSName LIKE '张__' select * from TblStudent where tSName like '张%' and LEN(tSName)=3 ========= --请从学生表中查询出每个班的班级Id和班级人数: select TClassId as 班级id,班级的人数=count(*) FROM TblStudent GROUP BY TClassId --请从学生表中查询出每个班的班级Id和班级中男同学的人数 select TsClassId as 班级id,班级的人数=count(*) FROM TblStudent where TSGender='男' GROUP BY TsClassId --1.热销售商品排名表,【即按照每种商品的总销售数量排序】。 SELECT 商品名称,sum(销售数量) as 商品销售总数量 FROM myorders group BY 商品名称 order BY 商品销售总数量 desc SELECT 商品名称,销售总价= sum(销售数量*销售价格)from myorders group BY 商品名称 HAVING sum(销售数量*销售价格)>3000 order BY 销售总价 desc select 购买人,sum(销售数量) as 购买量 FROM myorders where 商品名称='可口可乐' GROUP BY 购买人 order BY sum(销售数量) desc --统计各个客户对"可口可乐"的喜爱度(既统计每个购买人对“可口可乐”的购买量) select '年纪为'+cast(90 AS VARCHAR(10)) SELECT '年纪为'+convert(VARCHAR(10),90) ---------------字符串的函数 select len('小赵喜欢凤姐,凤姐喜欢老马,老马喜欢老杨')--计算字符串的个数(长度) select datalength('小马f') print ltrim('    哇塞,我去,建了一个表'); print rtrim('    哇塞,建了一个表     '); print ('    哇塞,建了一个表     '); --截取的 select left('小赵猥琐',2); select right('老马邪恶',3); select * from T6 select getdate() 获得当前时间

ISNULL-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语句

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日志语句示例

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初学者

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初学者的相关知识,请在本站搜索。

本文标签: