SQL复杂查询语句练习

SQL查询语句练习

题是我网上找的,我就贴下原题和自己做的答案以及见解,如有不对之处,欢迎挑错。
先贴下数据库E-R图
在这里插入图片描述
再贴下DDL

CREATE TABLE `customers` (
  `CustomerID` char(5) NOT NULL,
  `CustomerName` varchar(50) NOT NULL,
  `Phone` varchar(20) NOT NULL,
  `Address` varchar(50) DEFAULT NULL,
  `PostalCode` varchar(15) DEFAULT NULL,
  `City` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`CustomerID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 
CREATE TABLE `department` (
  `DepartmentID` char(5) NOT NULL,
  `DepartmentName` char(50) NOT NULL,
  PRIMARY KEY (`DepartmentID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 
CREATE TABLE `employees` (
  `EmployeeID` char(5) NOT NULL,
  `EmployeeName` varchar(30) NOT NULL,
  `sex` char(1) NOT NULL,
  `BirthDate` datetime DEFAULT NULL,
  `HireDate` datetime DEFAULT NULL,
  `DepartmentID` char(5) NOT NULL,
  `Title` varchar(20) DEFAULT NULL,
  `Address` varchar(50) DEFAULT NULL,
  `LinkPhone` varchar(20) DEFAULT NULL,
  `Salary` decimal(12,2) NOT NULL,
  PRIMARY KEY (`EmployeeID`),
  KEY `FK_EMPLOYEE_DEPTMENT` (`DepartmentID`),
  CONSTRAINT `FK_EMPLOYEE_DEPTMENT` FOREIGN KEY (`DepartmentID`) REFERENCES `department` (`DepartmentID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 
CREATE TABLE `orderdetails` (
  `OrderID` char(5) NOT NULL,
  `ProductID` char(5) NOT NULL,
  `UnitPrice` decimal(12,2) NOT NULL,
  `Quantity` smallint(6) NOT NULL,
  PRIMARY KEY (`OrderID`,`ProductID`),
  KEY `FK_ORDERDETAILS_PRODUCTS` (`ProductID`),
  CONSTRAINT `FK_ORDERDETAILS_ORDERS` FOREIGN KEY (`OrderID`) REFERENCES `orders` (`OrderID`),
  CONSTRAINT `FK_ORDERDETAILS_PRODUCTS` FOREIGN KEY (`ProductID`) REFERENCES `products` (`ProductID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 
CREATE TABLE `orders` (
  `OrderID` char(5) NOT NULL,
  `CustomerID` char(5) NOT NULL,
  `EmployeeID` char(5) NOT NULL,
  `OrderDate` datetime NOT NULL,
  `RequiredDate` datetime DEFAULT NULL,
  `Amount` decimal(12,2) NOT NULL,
  PRIMARY KEY (`OrderID`),
  KEY `FK_ORDERS_CUSTOMER` (`CustomerID`),
  KEY `FK_ORDERS_EMPLOYEE` (`EmployeeID`),
  CONSTRAINT `FK_ORDERS_CUSTOMER` FOREIGN KEY (`CustomerID`) REFERENCES `customers` (`CustomerID`),
  CONSTRAINT `FK_ORDERS_EMPLOYEE` FOREIGN KEY (`EmployeeID`) REFERENCES `employees` (`EmployeeID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 
CREATE TABLE `products` (
  `ProductID` char(5) NOT NULL,
  `ProductName` varchar(50) NOT NULL,
  `SupplierID` char(5) NOT NULL,
  PRIMARY KEY (`ProductID`),
  KEY `FK_PRODUCTS_SUPPLIER` (`SupplierID`),
  CONSTRAINT `FK_PRODUCTS_SUPPLIER` FOREIGN KEY (`SupplierID`) REFERENCES `supplier` (`SupplierID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

CREATE TABLE `supplier` (
  `SupplierID` char(5) NOT NULL,
  `SupplierName` varchar(50) NOT NULL,
  `Phone` varchar(20) NOT NULL,
  `Address` varchar(50) DEFAULT NULL,
  `PostalCode` varchar(15) DEFAULT NULL,
  `City` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`SupplierID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

题目:
–1、查找员工的编号、姓名、部门和出生日期,如果出生日期为空值,显示日期不详,并按部门排序输出。
考点:ifnull的使用
答案:SELECT e.EmployeeID, e.EmployeeName, d.DepartmentName, IFNULL(BirthDate, ‘不祥’) FROM employees e LEFT JOIN department d ON e.DepartmentID = d.DepartmentID ORDER BY e.DepartmentID
–2、查找与喻自强在同一个单位的员工ID、员工姓名、性别、部门和职称
考点:子查询
答案:SELECT e.EmployeeID, e.EmployeeName, CASE sex WHEN ‘M’ THEN ‘男’ WHEN ‘F’ THEN ‘女’ END, d.DepartmentName, e.Title FROM employees e LEFT JOIN department d ON e.DepartmentID = d.DepartmentID WHERE e.DepartmentID = (SELECT a.DepartmentID FROM (SELECT DepartmentID FROM employees WHERE EmployeeName = ‘喻自强’) a) AND e.EmployeeName != ‘喻自强’
–3、按部门进行汇总,输出部门名称和统计部门总工资。
考点:分组和聚合函数
答案:SELECT d.DepartmentName, SUM(e.Salary) FROM employees e LEFT JOIN department d ON e.DepartmentID = d.DepartmentID GROUP BY e.DepartmentID
–4、查找商品名称为14寸显示器商品的销售情况,显示该商品的编号、销售数量、单价和金额
考点:子查询和聚合函数
答案:SELECT ProductID, SUM(Quantity), UnitPrice, SUM(Quantity) * UnitPrice FROM orderdetails WHERE ProductID = (SELECT ProductID FROM products WHERE ProductName = ‘14寸显示器’)
–5、在销售明细表中按产品编号进行汇总,统计每种产品的销售数量和金额
考点:分组和聚合函数
答案: SELECT ProductID, SUM(Quantity), SUM(Quantity) * UnitPrice FROM orderdetails GROUP BY ProductID
–6、按客户编号统计每个客户1996年的订单总金额超过50万的客户编号和订单总金额
考点:having子句
答案:SELECT c.CustomerID, SUM(o.Amount) FROM orders o LEFT JOIN customers c ON c.CustomerID = o.CustomerID WHERE o.OrderDate LIKE ‘1996%’ GROUP BY o.CustomerID HAVING SUM(o.Amount) > 500000
–7、查找有销售记录的客户编号、名称和订单总额
考点:分组和聚合函数
答案:SELECT c.CustomerID, c.CustomerName, SUM(o.Amount) FROM orders o LEFT JOIN customers c ON c.CustomerID = o.CustomerID GROUP BY o.CustomerID
–8、查找在1997年中有销售记录的客户编号、名称和订单总额
考点:分组和聚合函数
答案:SELECT c.CustomerID, c.CustomerName, SUM(o.Amount) FROM orders o LEFT JOIN customers c ON c.CustomerID = o.CustomerID WHERE o.OrderDate LIKE ‘1997%’ GROUP BY o.CustomerID
注:个人不是很喜欢用like,更多时候用的是YEAR(o.OrderDate) = ‘1997’ ,使用正则也可以,REGEXP ‘^1997’
–9、查找一次销售最大的销售记录
考点:子查询和聚合函数
答案:SELECT * FROM orders WHERE Amount = (SELECT MAX(Amount) FROM orders)
–10、查找至少有3次销售的业务员名单和销售日期
考点:having子句
答案:SELECT e.EmployeeName, GROUP_CONCAT(o.OrderDate) FROM orders o LEFT JOIN employees e ON o.EmployeeID = e.EmployeeID GROUP BY o.EmployeeID HAVING COUNT(0) >= 3
–11、用存在量词Exists查找没有订货记录的客户名称
考点:exists
答案:SELECT CustomerName FROM customers c WHERE NOT EXISTS (SELECT CustomerID FROM orders o WHERE o.CustomerID = c.CustomerID)
–12、使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额、订货日期,按客户编号排序,同一客户再按订单降序排序输出
考点:order by
答案:SELECT o., c.CustomerName FROM orders o LEFT JOIN customers c ON c.CustomerID = o.CustomerID ORDER BY o.CustomerID ASC, OrderID DESC
–13、查找产品“16M DRAM”的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用男、女表示
考点:case…when…then…end
答案:SELECT e.EmployeeName, CASE e.sex WHEN ‘M’ THEN ‘男’ WHEN ‘F’ THEN ‘女’ END, o.OrderDate, od.Quantity, o.Amount FROM orders o LEFT JOIN orderdetails od ON o.OrderID = od.OrderID LEFT JOIN employees e ON e.EmployeeID = o.EmployeeID WHERE od.ProductID = (SELECT ProductID FROM products WHERE ProductName = ‘16M DRAM’)
–14、查找每个人的销售记录,要求显示销售员的编号、姓名、性别、产品名称、数量、单价、金额和销售日期
考点:多表查询
答案:SELECT o.OrderID, e.EmployeeID, e.EmployeeName, CASE e.sex WHEN ‘M’ THEN ‘男’ WHEN ‘F’ THEN ‘女’ END, p.ProductName, od.Quantity, od.UnitPrice, o.Amount FROM orders o LEFT JOIN orderdetails od ON o.OrderID = od.OrderID LEFT JOIN employees e ON e.EmployeeID = o.EmployeeID LEFT JOIN products p ON p.ProductID = od.ProductID
–15、查找销售金额最大的客户名称和总货款
考点:子查询
答案:SELECT c.CustomerName, d.Amount FROM customers c, (SELECT a.CustomerID, a.Amount FROM (SELECT o.CustomerID, SUM(o.Amount) amount FROM orders o GROUP BY o.CustomerID) a WHERE a.amount = (SELECT MAX(amount) FROM (SELECT o.CustomerID, SUM(o.Amount) amount FROM orders o GROUP BY o.CustomerID) b)) d WHERE c.CustomerID = d.CustomerID
–16、查找销售总额少于1000元的销售员编号、姓名和销售额
考点:这题大概是考细心程度吧,不过我觉得更可能是原作者就没想到。销售总额小于1000的销售员是包括销售总额为0的销售员的,所以需要将两个结果联合起来
答案:SELECT e.EmployeeID, e.EmployeeName, b.amount FROM employees e, (SELECT a.EmployeeID, a. amount FROM (SELECT EmployeeID, SUM(Amount) amount FROM orders GROUP BY EmployeeID) a WHERE a.amount < 1000) b WHERE e.EmployeeID = b.EmployeeID UNION ALL SELECT EmployeeID, EmployeeName, 0 AS amount FROM employees WHERE EmployeeID NOT IN (SELECT EmployeeID FROM orders)
–17、查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额
考点:多表查询、子查询等
答案:SELECT c.CustomerID, c.CustomerName, p.ProductID, p.ProductName, od.Quantity, o.Amount FROM customers c, orderdetails od, orders o, products p WHERE c.CustomerID = o.CustomerID AND od.OrderID = o.OrderID AND od.ProductID = p.ProductID AND c.CustomerID IN (SELECT b.CustomerID FROM(SELECT CustomerID, COUNT(DISTINCT(ProductID)) FROM (SELECT CustomerID, ProductID FROM orders, orderdetails WHERE orders.OrderID = orderdetails.OrderID) a GROUP BY CustomerID HAVING COUNT(DISTINCT(ProductID)) >= 3)b)
–18、查找至少与客户“世界技术开发公司”销售相同的客户编号、名称和商品编号、商品名称、数量和金额
考点:子查询
答案:SELECT c.CustomerID, c.CustomerName, p.ProductID, p.ProductName, od.Quantity, o.Amount FROM customers c, orderdetails od, orders o, products p WHERE c.CustomerID = o.CustomerID AND od.OrderID = o.OrderID AND od.ProductID = p.ProductID AND od.ProductID = (SELECT ProductID FROM orders o, orderdetails od WHERE o.OrderID = od.OrderID AND CustomerID = (SELECT CustomerID FROM customers WHERE CustomerName = ‘世界技术开发公司’)) AND c.CustomerName != ‘世界技术开发公司’
–19、查找表中所有姓刘的职工的工号,部门,薪水
考点:like或者regexp
答案:SELECT EmployeeID, EmployeeName, DepartmentName FROM employees e, department d WHERE e.DepartmentID = d.DepartmentID AND e.EmployeeName LIKE ‘刘%’
–20、查找所有定单金额高于20000的所有信息(包括客户编号和名称)
考点:多表查询
答案:SELECT c.CustomerID, c.CustomerName, p.ProductID, p.ProductName, od.Quantity, o.Amount, e.EmployeeName FROM customers c, orderdetails od, orders o, products p, employees e WHERE o.EmployeeID = e.EmployeeID AND c.CustomerID = o.CustomerID AND od.OrderID = o.OrderID AND od.ProductID = p.ProductID AND o.Amount > 20000
–21、统计表中员工的薪水在40000-60000之间的人数
考点:between…and…
答案:SELECT COUNT(0) FROM employees WHERE Salary BETWEEN 40000 AND 60000
–22、查询表中的每个部门的职工的平均工资,但只查询”住址”是”上海市”的员工
考点:聚合函数
答案:SELECT DepartmentName, AVG(Salary) FROM department d, employees e WHERE d.DepartmentID = e.DepartmentID AND e.Address = ‘上海市’ GROUP BY e.DepartmentID
–23、将表中住址为"上海市"的员工住址改为"北京市"
考点:基础
答案:UPDATE employees SET Address = ‘北京市’ WHERE Address = ‘上海市’
–24、查找业务部或会计部的女员工的基本信息。
考点:in或者or
答案:SELECT * FROM employees WHERE sex = ‘F’ AND DepartmentID IN (SELECT DepartmentID FROM department WHERE DepartmentName IN (‘会计部’, ‘业务部’))
–25、显示每种产品的销售金额总和,并依销售金额由大到小输出。
考点:聚合函数和order by
答案:SELECT p.ProductName, SUM(o.Amount) FROM orders o, orderdetails od, products p WHERE o.OrderID = od.OrderID AND od.ProductID = p.ProductID GROUP BY od.ProductID
–26、选取编号界于‘C0001’和‘C0004’的客户编号、客户名称、客户地址。
考点:between…and…
答案:SELECT * FROM customers WHERE CustomerID BETWEEN ‘C_001’ AND ‘C_004’
–27、计算出一共销售了几种产品。
考点:distinct
答案:SELECT COUNT(DISTINCT(ProductID)) FROM orderdetails
–28、将业务部员工的薪水上调3%。
考点:基础
答案:UPDATE employees SET Salary = Salary * 1.03 WHERE DepartmentID = (SELECT DepartmentID FROM department WHERE DepartmentName = '业务部
–29、由employee表中查找出薪水最低的员工信息。
考点:聚合函数和子查询
答案:SELECT * FROM employees WHERE Salary = (SELECT MIN(Salary) FROM employees)
–30、使用join查询客户姓名为"客户丙"所购货物的"客户名称",“定单金额”,“定货日期”,“电话号码”
考点:关联查询
答案:SELECT c.CustomerName, o.OrderDate, o.Amount, c.Phone FROM orders o JOIN customers c ON o.CustomerID = c.CustomerID WHERE c.CustomerName = ‘客户丙’
–31、由Orders表中查找出订单金额大于“E0013业务员在1996/10/15这天所接每一张订单的金额”的所有订单。
考点:子查询
答案:SELECT * FROM orders WHERE Amount > (SELECT MAX(Amount) FROM orders WHERE EmployeeID = ‘E_003’ AND OrderDate = ‘1996-10-15 00:00:00’)
–32、计算’P0001’产品的平均销售单价
考点:聚合函数
答案:SELECT SUM(UnitPrice
Quantity)/SUM(Quantity) FROM orderdetails WHERE ProductID = ‘P_001’
–33、找出公司女员工所接的定单
考点:多表查询
答案:SELECT orders.* FROM orders, employees WHERE orders.EmployeeID = employees.EmployeeID AND employees.sex = ‘F’
–34、找出同一天进入公司服务的员工
考点:自连接
答案:SELECT DISTINCT(e1.EmployeeName), e1.HireDate FROM employees e1, employees e2 WHERE e1.HireDate = e2.HireDate
–35、找出目前业绩超过232000元的员工编号和姓名。
考点:having
答案:SELECT o.EmployeeID, e.EmployeeName FROM orders o, employees e GROUP BY o.EmployeeID HAVING SUM(Amount) > 232000
–36、查询出employee表中所有女职工的平均工资和住址在"上海市"的所有女职工的平均工资
考点:联合
答案:SELECT AVG(Salary) FROM employees WHERE sex = ‘F’ UNION SELECT AVG(Salary) FROM employees WHERE sex = ‘F’ AND Address = ‘上海市’
–37、在employee表中查询薪水超过员工平均薪水的员工信息。
考点:子查询
答案:SELECT * FROM employees WHERE Salary > (SELECT AVG(Salary) FROM employees)
–38、找出目前销售业绩超过40000元的业务员编号及销售业绩,并按销售业绩从大到小排序。
考点:having和order by
答案:SELECT EmployeeID, SUM(Amount) FROM orders GROUP BY EmployeeID HAVING SUM(Amount) > 40000 ORDER BY SUM(Amount) DESC
–39、找出公司男业务员所接且订单金额超过2000元的订单号及订单金额。
考点:多表
答案:SELECT o.OrderID, o.Amount FROM orders o, employees e WHERE o.EmployeeID = e.EmployeeID AND o.Amount > 2000 AND e.sex = ‘M’
–40、查询Orders表中订单金额最高的订单号及订单金额。
考点:子查询
答案:SELECT OrderID, Amount FROM orders WHERE Amount = (SELECT MAX(Amount) FROM orders)
–41、查询在每张订单中订购金额超过24000元的客户名及其地址。
考点:子查询和连表
答案:SELECT c.CustomerName, c.Address FROM orders o, customers c WHERE o.CustomerID = c.CusTomerID AND o.Amount > 24000
–42、求出每位客户的总订购金额,显示出客户号及总订购金额,并按总订购金额降序排列。
考点:分组
答案:SELECT CustomerID, SUM(Amount) FROM orders GROUP BY CustomerID ORDER BY SUM(Amount) DESC
–43、求每位客户订购的每种产品的总数量及平均单价,并按客户号,产品号从小到大排列。
考点:分组和排序
答案:SELECT o.CustomerID, od.ProductID, SUM(UnitPriceQuantity)/SUM(Quantity) FROM orders o, orderdetails od WHERE o.OrderID = od.OrderID GROUP BY o.CustomerID, od.ProductID ORDER BY o.CustomerID, od.ProductID
–44、查询订购了三种以上产品的订单号。
考点:子查询和having
答案:SELECT DISTINCT(OrderID) FROM orderdetails WHERE OrderID IN (SELECT OrderID FROM orderdetails GROUP BY OrderID HAVING COUNT(ProductID) >= 3)
–45、查询订购的产品至少包含了订单10003中所订购产品的订单。
考点:子查询
答案:SELECT OrderID FROM orderdetails WHERE ProductID IN (SELECT ProductID FROM orderdetails WHERE OrderID = ‘00003’)
–46、在Orders表中查找出订单金额大于“E0013业务员在1996/11/-05这天所接每一张订单的金额”的所有订单,并显示承接这些订单的业务员和该订单的金额。
考点:
答案:SELECT e.EmployeeName, o.Amount FROM orders o, employees e WHERE o.EmployeeID = e.EmployeeID AND o.Amount > (SELECT MAX(Amount) FROM orders o, employees e WHERE o.EmployeeID = e.EmployeeID AND o.EmployeeID = ‘E_003’ AND DATE(OrderDate) = ‘1996-11-05’)
–47、查询末承接业务的员工的信息。
考点:子查询
答案:SELECT * FROM employees WHERE EmployeeID NOT IN (SELECT EmployeeID FROM orders)
–48、查询来自上海市的客户的姓名,电话、订单号及订单金额。
考点:多表查询
答案:SELECT c.CustomerName, c.Phone, o.OrderID, o.Amount FROM orders o, customers c WHERE o.CustomerID = c.CustomerID AND c.Address = ‘上海市’
–49、查询每位业务员各个月的业绩,并按业务员编号、月份降序排序。
考点:排序
答案:SELECT EmployeeID, YEAR(OrderDate), MONTH(OrderDate), COUNT(0), SUM(Amount) FROM orders GROUP BY YEAR(OrderDate), MONTH(OrderDate) ORDER BY EmployeeID DESC, YEAR(OrderDate) DESC, MONTH(OrderDate) DESC
–50、求每种产品的总销售数量及总销售金额,要求显示出产品编号、产品名称,总数量及总金额,并按产品号从小到大排列。
考点:连表和分组
答案:SELECT od.ProductID, ProductName, SUM(UnitPrice
Quantity), SUM(Quantity) FROM orderdetails od, products p WHERE od.ProductID = p.ProductID GROUP BY od.ProductID
–51、查询总订购金额超过’C0002’客户的总订购金额的客户号,客户名及其住址。
考点:子查询
答案:SELECT a.CustomerID, a.amount, c.CustomerName FROM (SELECT CustomerID, SUM(Amount) amount FROM orders WHERE CustomerID != ‘C_002’ GROUP BY CustomerID) a, customers c WHERE a.amount > (SELECT SUM(Amount) FROM orders WHERE CustomerID = ‘C_002’) AND a.CustomerID = c.CustomerID
–52、查询业绩最好的业务员号、业务员名及其总销售金额。
考点:子查询
答案:SELECT a.EmployeeID, MAX(a.amount) FROM (SELECT EmployeeID, SUM(Amount) amount FROM orders GROUP BY EmployeeID) a
–53、查询每位客户所订购的每种产品的详细清单,要求显示出客户号,客户名,产品号,产品名,数量及单价。
考点:连表
答案:SELECT o.OrderID, o.CustomerID, c.CustomerName, od.ProductID, p.ProductName, od.UnitPrice, od.Quantity FROM orders o, orderdetails od, customers c, products p WHERE o.CustomerID = c.CustomerID AND o.OrderID = o.OrderID AND od.ProductID = p.ProductID
–54、求各部门的平均薪水,要求按平均薪水从小到大排序。
考点:分组和聚合函数
答案:SELECT d.DepartmentName, AVG(e.Salary) FROM department d, employees e WHERE d.DepartmentID = e.DepartmentID GROUP BY d.DepartmentID
–55、根据订单明细表更新每笔订单的总金额
考点:基础
答案:UPDATE orders o SET Amount = (SELECT SUM(UnitPrice * Quantity) FROM orderdetails WHERE OrderID = o.OrderID)

总结:其实基本都是表和表之间进行连接查询,可以用from tableA, tableB where A.Column = B.Column或者join进行连接。难度不大,适合初学者。

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的SQL接口。 它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。    结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。    美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。    SQL语言包含4个部分:    数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。    数据查询语言(DQL),例如:SELECT语句。    数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。    SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值