--数据库操作语言
--INSERT 插入数据
use AdventureWorks;
go --插入还有函数的数据
insert into dbo.Departments
values(),(),();
--修改数据 UPDATE
--删除数据 DELETE
--查询语句 SELECT
USE AdventureWorks;
GO
SELECT * FROM Production.ProductPhoto P
WHERE P.LargePhotoFileName LIKE '%greena_' escape 'a'; --ESCAPE 'escape_character' 允许在字符串中搜索通配符,而不是将其作为通配符使用
USE AdventureWorks;
GO
select AVG(OrderQty) as 'Average Quantity',
NonDiscountSales = (OrderQty * UnitPrice)
from Sales.SalesOrderDetail sod
group by (OrderQty * UnitPrice)
order by (OrderQty * UnitPrice) desc;
go
--HAVING 子句是专为SELECT 语句而生的,因为它只能与SELECT语句一起使用。而且通常在GROUP BY 子句中。
use AdventureWorks;
go
select ss.SalesOrderID,SUM(ss.LineTotal) as SubTotal
from Sales.SalesOrderDetail ss
group by SalesOrderID
having SUM(LineTotal) > 100000.00 -- 使用HAVING子句 指定组或聚合应满足的查询条件
order by SalesOrderID;
--在查询中使用COMPUTE子句返回合计
use AdventureWorks;
go
select sso.CustomerID,sso.OrderDate,sso.SubTotal,sso.TotalDue
from Sales.SalesOrderHeader sso
where SalesPersonID =276
order by OrderDate
compute sum(SubTotal),SUM(TotalDue);--使用COMPUTE子句
--在查询中使用COMPUTE BY 返回合计
use AdventureWorks;
go
select s.SalesPersonID,s.CustomerID,s.OrderDate,s.SubTotal,s.TotalDue
from Sales.SalesOrderHeader s
order by SalesPersonID,OrderDate
compute sum(SubTotal),sum(TotalDue) by SalesPersonID;--使用COMPUTE BY 子句
--联接查询
--1、内联接 包括同联接和自然联接
--2、外联接 包括左外联接,右外联接和完全联接
--3、交叉联接 笛卡尔积联接
--内联接和等值联接
use AdventureWorks;
go
select e.EmployeeID
from HumanResources.Employee as e
inner join Sales.SalesPerson as s
on e.EmployeeID = s.SalesPersonID
--左外联接
use AdventureWorks;
go
select p.Name,pr.ProductReviewID
from Production.Product p
left outer join Production.ProductReview pr
on p.ProductID = pr.ProductID
--右外联接
use AdventureWorks;
go
select st.Name as Territory,sp.SalesPersonID
from Sales.SalesTerritory st
right outer join Sales.SalesPerson sp
on st.TerritoryID =sp.TerritoryID;
--完全联接:将返回左表和右表中的所有行。如果左表在右表中没有匹配行,则右表显示空值,同理,如果右表在左表没有匹配行,左表也显示空值
use AdventureWorks;
go
--full 关键词后面的OUTER关键词可以省略不写
select p.Name,sod.SalesOrderID
from Production.Product p
full outer join Sales.SalesOrderDetail sod
on p.ProductID = sod.ProductID
where p.ProductID is null or sod.ProductID is null order by p.Name;
--交叉联接
use AdventureWorks;
go
select p.SalesPersonID,t.Name as Territory
From Sales.SalesPerson p
cross join Sales.SalesTerritory t --使用cross关键词指定交叉联接
order by p.SalesPersonID;
--组合查询 union
use AdventureWorks;
go --判断表Gloves是否存在,如果存在则将其删除
if OBJECT_ID('dbo.Gloves','U') is not null
drop table dbo.Gloves;
go
--通过select into 语句 创建表Gloves表
SELECT P.ProductModelID,P.Name
INTO dbo.Gloves
FROM Production.ProductModel P
where P.ProductModelID in(3,4)
go
/*不正确的用法*/
use AdventureWorks;
go
select p.ProductModelID,p.Name
from Production.ProductModel p
where p.ProductModelID not in (3,4)
order by Name --这是错误的关键
union
select ProductModelID,Name
from dbo.Gloves;
go
/*正确用法*/
use AdventureWorks;
go
select p.ProductModelID,p.Name
from Production.ProductModel p
where p.ProductModelID not in(3,4)
union
select ProductModelID,Name
from dbo.Gloves
order by Name;--order by 语句放在最后,因为排序永远都是对已经查出的结果列
go
if not exists (select * from publishers where state ='NY')
begin
select 'Sales force needs to penetrate New York market'
end
else
begin
select 'we have publishers in new york'
end
if exists(select * from publishers where state ='NY')
begin
select 'we have publishers in new york'
end
else
begin
select 'sales force needs to penetrate new york market'
end
--两个语句之间的不同点包括执行的事务数,处理时间,从客户端到服务器端传送的数据量大小
--使用SQL语句或存储过程来计算任意一个月的天数?实现功能的SQL语句如下:
select DATEPART(DD,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+CAST(month(getdate())as varchar)+'-01' as datetime))))
--控制SQL语句操作--DCL
--数据控制语言 GRANT语句 和 DENY 语句
-- GRANT 语句授予数据库和表对象权限;
--DENY 语句拒绝授予他们权限
--1、授予权限(GRANT):对主体授予安全对象的权限
--2、拒绝权限(DENY):对主体授予安全对象的否定权限
--3、收回权限(REVOKE):收回(或撤销)已经授予的权限
--1、授予权限(GRANT):对主体授予安全对象的权限
--授予创建表的权限
use AdventureWorks;
grant create table to zhao;
go
--2、使用GRANT OPTION 授予 CREATE VIEW
use AdventureWorks;
GRANT CREATE VIEW TO CandyWITH GRANT OPTION;
GO
--GRANT 表级对象权限
--1、授予对表的查询权限
use AdventureWorks;
GRANT SELECT ON OBJECT:: Person.Address To Rose;
go
--2、授予对存储过程的执行权限。
use AdventureWorks;
GRANT EXECUTE ON OBJECT :: HumanResources.uspUpdateEmployeeHireInfo
To Roma;
go
--GRANT 数据库主体权限 主要是对操作对象的管理,包括授予对数据库用户、数据库角色或应用程序角色的权限
--1、将某个用户的控制权限授予一个用户
use AdventureWorks;
GRANT CONTROL ON USER:: Ben To Roma;
go
--2、将对用户的IMPERSONATE权限授予应用程序角色
USE AdventureWorks;
GRANT IMPERSONATE ON USER:: Rose TO Uncle;
go
--DENY语句 不允许具备某种权限
--1、拒绝创建证书的权限 拒绝用户Ben对AdventureWors数据库的CREATE CERTIFICATE权限
use AdventureWorks;
go
DENY CREATE CERTIFICATE TO Ben;
go
--2、使用CASCADE拒绝VIEW DEFINITION 权限
use AdventureWorks;
DENY VIEW DEFINITION TO Roma CASCADE;
GO
--DENY表级对象权限,表级对象就是表、视图、表值函数、存储过程、扩展存储过程等对象,拒约对以上对象
--1、拒绝对表的选择权限
use AdventureWorks;
DENY SELECT ON OBJECT:: Person.Address To Roma;
go
--2、拒绝对存储过程的执行权限
use AdventureWorks;
DENY EXECUTE ON OJBECT::HumanResources.uspUpdateEmployeeHiredInfo
to Ben;
go
--DENY数据库主体权限:就是对数据库的管理和操作的权限
use AdventureWorks;
DENY CONTROL ON USER:: MadaTo Acce;
go
--REVOKE 语句 剥夺权限 ,收回权限
--1、撤销创建证书的权限
use AdventureWorks;
REVOKE CREATE CERTIFICATE FROM Roma;
go
--2、从应用程序角色中撤销REFERENCES权限。
use AdventureWorks;
REVOKE REFERENCES FROM Acce;
go
--REVOKE 表级对象权限
--1、撤销对表的选择权限
use AdventureWorks;
REVOKE SELECT ON OBJECT:: Person.Address from Roma;
go
--2、撤销对存储过程的执行权限
use AdventureWorks;
REVOKE EXECUTE ON OBJECT:: HumanResources.uspUpdateEmployeeHireInfo
from Acce;
go
--REVOKE 数据库主体权限
--1、撤销一个用户对另一个用户的
use AdventureWorks;
REVOKE CONTORL ON USER:: Cendy FROM Roma;
go
--2、撤销数据库用户对数据库角色的权限
use AdventureWorks;
REVOKE VIEW DEFINITION ON ROLE:: AcceParking
from Rose CASCADE;
GO
分享到:
相关推荐
SQL Server 2008包含了众多功能,如T-SQL语言、数据仓库、数据挖掘、报表服务等,为开发者提供了强大的数据管理工具。其内置的Transact-SQL扩展性极强,可以编写复杂的查询语句,支持视图、存储过程、触发器等,满足...
总结来说,"java-sqlserver-connect.jar"是Java应用程序连接SQL Server数据库的关键组件,它为开发者提供了在Java环境中执行SQL查询和操作数据库的能力,同时支持JRE7和JRE8,确保了兼容性和灵活性。在实际项目中,...
三、数据操作语言(DML) DML用于对数据库中的数据执行操作,如查询、添加、更新和删除数据记录。主要的DML语句包括INSERT、UPDATE、DELETE和SELECT。 四、数据控制语言(DCL) DCL用于管理数据库中的数据访问和...
X-Pack SQL JDBC驱动是Elasticsearch官方提供的一个组件,主要功能是提供了一个JDBC接口,使得开发人员能够使用标准的SQL语言对Elasticsearch集群进行查询和操作。这个驱动的两个版本——x-pack-sql-jdbc-7.7.1.jar...
《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入探讨了SQL Server 2008中的T-SQL编程技术,这是SQL Server数据库管理与开发的核心语言。T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的...
T-SQL语言基础是SQL Server中的核心组成部分,用于管理和处理数据库中的数据。T-SQL扩展了标准SQL,提供了更多的功能和控制。 在T-SQL中,注释是开发者用来解释代码的重要工具。有两种类型的注释方式:单行注释使用...
《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》这本书是针对SQL Server 2008数据库管理系统,特别关注其Transact-SQL(T-SQL)语言的全面指南,非常适合初学者深入理解T-SQL的基础知识。T-SQL是SQL Server的...
与标准SQL语言相同,PL-SQL也是Oracle客户端工具(如SQL*Plus、Developer/2000等)访问服务器的操作语言。它有标准SQL所没有的特征:变量(包括预先定义的和自定义的);控制结构(如IF-THEN-ELSE等流控制语句);...
《SQL SERVER 2008 T-SQL基础》是一本由微软出版社出版的书籍,主要针对SQL Server 2008中的Transact-SQL(T-SQL)语言进行深入浅出的讲解。T-SQL是SQL Server的核心组件,用于数据查询、数据操纵、存储过程编写以及...
支持自定义查询以提供使用整个SQL语言的可能性。这是强大的,但有风险,请小心使用自定义查询。 要避免行导出重复,请使用WHERE子句中的$ @ $特殊字符,以递增方式导出未处理的行和插入的新行。 重要信息:为了...
T-SQL是SQL Server中用于数据查询、更新、操作和编程的主要语言。此书结合了理论与实践,通过清晰的解释和丰富的示例,帮助读者理解和掌握T-SQL的核心概念。 T-SQL在SQL Server中的重要性不言而喻,它是数据库管理...
《SQL SERVER-2008从入门到精通》是一本由Mike Hotek编著的电子书,主要针对SQL Server 2008这一数据库管理系统,旨在帮助初学者快速掌握SQL Server的基本操作和高级技巧,逐步成长为数据库管理的专业人士。SQL ...
- **DML**:数据操作语言,包括`SELECT`、`UPDATE`、`DELETE`和`INSERT INTO`,分别用于查询、更新、删除和插入数据。 - **DDL**:数据定义语言,用于创建和管理数据库结构,如`CREATE DATABASE`、`ALTER TABLE`、...
1.5 sql语言基础 11 1.5.1 sql的历史 11 1.5.2 sql语言的组成 12 1.5.3 sql语句的结构 13 .1.5.4 sql的优点 13 1.5.5 sql的执行 14 1.6 sql环境 15 1.6.1 环境 15 1.6.2 sql的层次结构 15 1.6.3 客户程序...
《笨方法学SQL》是一本深受读者喜爱的SQL学习书籍,其主要目标是通过实践性的方法帮助初学者...实践是学习SQL的关键,这本书通过大量的例子和练习,鼓励读者动手操作,从而真正理解并掌握SQL这一强大的数据查询语言。
《SQL-SERVER-2008-DBA入门经典》这本书是针对初学者设计的一本教程,旨在帮助读者快速掌握SQL Server 2008数据库管理系统的使用和管理技巧。SQL Server是Microsoft公司推出的一款强大的关系型数据库管理系统,广泛...
SQL标准经历了多个版本的更新,包括SQL-86、SQL-89、SQL-92、SQL:1999、SQL:2003、SQL:2008、SQL:2011、SQL:2016以及最新的SQL:2019等。每个新版本都在前一个版本的基础上增加了新的功能、优化了语法结构和提升了...
软考,数据库
软考,数据库