文章目录
前言
该系列教程,将会从实际问题出发,边干边学,逐步深入讲解SQL的各方面知识。
你需要完成所有的问题吗?绝对不是。介绍性的问题相当简单,所以你可以直接跳过到“中级问题”部分。如果你不是初学者,但不确定应该从哪里开始,请在“入门问题”部分看看问题和预期结果,并确保你理解这些概念。如果已经理解了这些概念,请开始阅读“中级问题”部分。
你想从这本书中复制代码并在你的服务器上运行?我建议你手动输入,而不是复制粘贴。为什么要去麻烦地重新打字呢?科学表明,打字的行为会在你的脑中留下更深刻的印象。当你只是复制和粘贴时,代码只是直接从你电脑里的一个窗口转到另一个窗口,而不会给你留下多少印象。但是当你把它打出来时,你必须集中精力,这非常有助于保留信息。
一旦你完成了所有的问题,将拥有一些在数据分析和高级Select语句使用方面非常有用的技能。当然,这并不是SQL的全部内容。还有修改数据(更新、插入、删除)、DDL(数据定义语言,即如何创建和修改数据库对象)、编程(如存储过程)和许多其他主题。
该系列教程中,只涉及到了使用Select语句检索数据的问题,这几乎是所有其他数据库主题的基础开端。
介绍性问题
1.我们有哪些承运商?
我们有一张表叫承运商(Shippers)。返回Shippers的所有行的所有字段。
-- 预期结果
ShipperID CompanyName Phone
----------- ------------- ------------------------
1 Speedy Express (503) 555-9831
2 United Package (503) 555-3199
3 Federal Shipping (503) 555-9931
(3 row(s) affected)
提示:返回所有列和所有行的的SELECT语句是“Select * from TableName”
2. 从目录表中查询特定字段
在“类别Categories”表中,使用此SQL选择所有字段:
Select * from Categories
…将返回4列。但是我们只想看到两列:类别名称(CategoryName)和描述(Description)。
-- 预期结果
CategoryName Description
--------------- ----------------------------------------------------------
Beverages Soft drinks, coffees, teas, beers, and ales
Condiments Sweet and savory sauces, relishes, spreads, and seasonings
Confections Desserts, candies, and sweet breads
Dairy Products Cheeses
Grains/Cereals Breads, crackers, pasta, and cereal
Meat/Poultry Prepared meats
Produce Dried fruit and bean curd
Seafood Seaweed and fish
(8 row(s) affected)
提示:在Select语句中,使用逗号分隔的列名返回特定列的结果
3.销售代表
我们只想看看Employees表中所有头衔(Title)为销售代表(Sales Representative)的员工的FirstName、LastName和雇佣日期(HireDate)。编写一个只返回这些员工的SQL语句。
-- 预期结果
FirstName LastName HireDate
---------- -------------------- -----------------------
Nancy Davolio 2010-05-01 00:00:00.000
Janet Leverling 2010-04-01 00:00:00.000
Margaret Peacock 2011-05-03 00:00:00.000
Michael Suyama 2011-10-17 00:00:00.000
Robert King 2012-01-02 00: