5.1数据查询SELECT的用法2.SELECT子句SELECT子句指定查询返回的列:这些列可以是个或多个表或视图(View)中的列。见【案例51【案例5.2】【案例5.3】SELECTALLDISTINCT][TOPexpressionPERCENT][WITHTIES]]<select list><selectlist>=(*tablename/viewname|tablealias.*I(column_name|[]expression[[AS] column_alias]Icolumn_alias=expression[....n]SQLSERVER数据库程序设计
SQL SERVER 数据库程序设计 5.1 数据查询SELECT的用法 2. SELECT子句 SELECT子句指定查询返回的列,这些列可以是 一个或多个表或视图(View)中的列。见【案例5.1】 【案例5.2】【案例5.3】。 SELECT [ ALL | DISTINCT ] [ TOP expression [ PERCENT ] [ WITH TIES ] ] <select_list> <select_list> ::= { * | { table_name | view_name | table_alias }.* | { column_name | [ ] expression } [ [ AS ] column_alias ] | column_alias = expression } [ ,.n ]
5.1数据查询SELECT的用法【案例5.1】从eTradeInfo数据库的员工信息表employees中查SELECTemp name AS姓名.emp titleAS职务FROMemployeesWHEREempbirthday<'1950-01-01【案例52】从eTradeInfo数据库的产品信息表products中查询单价高于11005.20元的前100条产品信息SELECTTOP(1OO)*FROMproductsWHEREUnitPrice11005.20【案例5.3】从eTradelnfo数据库的产品信息表products中查询不同型号的产品名称、型号和生产日期SELECTDISTINCTProTypeAS型号.ProductAS产品名称ProDateAS生产日期FROMproductsSQLSERVER数据库程序设计
SQL SERVER 数据库程序设计 5.1 数据查询SELECT的用法 【案例5.1】从eTradeInfo数据库的员工信息表employees中查 SELECT emp_name AS 姓名,emp_title AS 职务 FROM employees WHERE emp_birthday < '1950-01-01' 【案例5.2】从eTradeInfo数据库的产品信息表products中查询 单价高于11005.20元的前100条产品信息。 SELECT TOP(100) * FROM products WHERE UnitPrice > 11005.20 【案例5.3】从eTradeInfo数据库的产品信息表products中查询 不同型号的产品名称、型号和生产日期。 SELECT DISTINCT ProType AS 型号, Product AS 产品名称, ProDate AS 生产日期 FROM products
5.1数据查询SELECT的用法3.INTO子句通过查询语句创建新表,并将查询的结果插入新表中【案例5.4】从数据库eTradelnfo中的employees表中查询在询结果存储到新表someEmployeesSELECT emp name,emp titleINTO someEmployeesFROMemployeesWHEREemp_birthday1950-01-01SQLSERVER数据库程序设计
SQL SERVER 数据库程序设计 5.1 数据查询SELECT的用法 3. INTO子句 通过查询语句创建新表,并将查询的结果插入 新表中。 【案例5.4】 从数据库eTradeInfo 中的employees表中查询在 询结果存储到新表someEmployees。 SELECT emp_name,emp_title INTO someEmployees FROM employees WHERE emp_birthday < '1950-01-01
5.1数据查询SELECT的用法4.FROM子句指定从其中检索记录行的数据表、视图、派生表和联接表等[FROM<tablesource>[..n]]<tablesource>=table name[[AS |table alias]Iview name[As|tablealiaslIderived table[As]table_alias[(column_alias[...n])][<joinedtable><joinedtable><table_source>< join_type><table_source>ON<search condition>I<table_source>CROSSJOIN<tablesource><joined_table><join_type>=[INNER|LEFT|RIGHT|FULLIOUTER】JOINSQLSERVER数据库程序设计
SQL SERVER 数据库程序设计 5.1 数据查询SELECT的用法 4. FROM子句 指定从其中检索记录行的数据表、视图、派 生表和联接表等。 [ FROM { < table_source > } [ ,.n ] ] < table_source > ::= table_name [ [ AS ] table_alias ] | view_name [ [ AS ] table_alias ] | derived_table [ AS ] table_alias [ ( column_alias [ ,.n ] ) ] | < joined_table > < joined_table > ::= < table_source > < join_type > < table_source > ON < search_condition > | < table_source > CROSS JOIN < table_source > | < joined_table > < join_type > ::= [ INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } ] JOIN
5.1数据查询SELECT的用法【案例5.5】使用CROSSJOIN查询eTradelnfo数据库中两个数据表employees和departments的所有记录。SELECT*FROMdepartmentsCROSSJOINemplovees查询返回的结果集是由departments和employees中所有行的完全联接组成(笛卡尔积)试与以下语句比较:SELECT*FROMdepartments,employees【案例5.6】从eTradeInfo数据库两个数据表departments和将departments表中所有没有分配员工的部门也查询出来(使用LEFTJOIN)SELECTempname,deptnameFROMdepartmentsLEFTOUTERJOINemployeesON(departments.dept id-employees.dept id)SQLSERVER数据库程序设计
SQL SERVER 数据库程序设计 5.1 数据查询SELECT的用法 【案例5.5】使用CROSS JOIN,查询eTradeInfo数据库中两个 数据表employees和departments的所有记录。 SELECT * FROM departments CROSS JOIN employees 查询返回的结果集是由departments和employees中所有行的完 全联接组成(笛卡尔积)。 试与以下语句比较:SELECT * FROM departments, employees 【案例5.6】从eTradeInfo数据库两个数据表departments和 将departments表中所有没有分配员工的部门也查询出来(使 用LEFT JOIN)。 SELECT emp_name,dept_name FROM departments LEFT OUTER JOIN employees ON (departments.dept_id = employees.dept_id)