SQL> desc s_dept;(部门表)
Name Null? Type
----------- -------- ----------------------------------
ID 部门编号 NOT NULL NUMBER(7)
NAME 部门名称 NOT NULL VARCHAR2(25)
REGION_ID 地区编号 NUMBER(7)
SQL> desc s_emp;(员工表)
Name Null? Type
-------------- -------- -------------------------------
ID 员工编号 NOT NULL NUMBER(7)
LAST_NAME 姓 NOT NULL VARCHAR2(25)
FIRST_NAME 名 VARCHAR2(25)
USERID xfWang VARCHAR2(8)
START_DATE 雇佣日期 DATE
COMMENTS -- VARCHAR2(255)
MANAGER_ID 管理者ID NUMBER(7)
TITLE 部门名称 VARCHAR2(25)
DEPT_ID 部门ID NUMBER(7)
SALARY 工资 NUMBER(11,2)
COMMISSION_PCT 员工奖金 NUMBER(4,2)
-------------------------------------------------------
SQL> desc s_region;(地区表)
Name Null? Type
------------------------------------------------------
ID 地区编号 NOT NULL NUMBER(7)
NAME 地区名称 NOT NULL VARCHAR2(50)
练习:
1.列出所有的员工以及他们所在的部门名称和部门对应的地区名称
Name Null? Type
----------- -------- ----------------------------------
ID 部门编号 NOT NULL NUMBER(7)
NAME 部门名称 NOT NULL VARCHAR2(25)
REGION_ID 地区编号 NUMBER(7)
SQL> desc s_emp;(员工表)
Name Null? Type
-------------- -------- -------------------------------
ID 员工编号 NOT NULL NUMBER(7)
LAST_NAME 姓 NOT NULL VARCHAR2(25)
FIRST_NAME 名 VARCHAR2(25)
USERID xfWang VARCHAR2(8)
START_DATE 雇佣日期 DATE
COMMENTS -- VARCHAR2(255)
MANAGER_ID 管理者ID NUMBER(7)
TITLE 部门名称 VARCHAR2(25)
DEPT_ID 部门ID NUMBER(7)
SALARY 工资 NUMBER(11,2)
COMMISSION_PCT 员工奖金 NUMBER(4,2)
-------------------------------------------------------
SQL> desc s_region;(地区表)
Name Null? Type
------------------------------------------------------
ID 地区编号 NOT NULL NUMBER(7)
NAME 地区名称 NOT NULL VARCHAR2(50)
练习:
1.列出所有的员工以及他们所在的部门名称和部门对应的地区名称
select first_name,s_dept.name,s_region.name from s_emp,s_dept,s_region where dept_id=s_dept.id and s_dept.region_id=s_region.id;
2.列出部门编号,部门名称,部门人数,并按人数的多少降序排列
select s_emp.dept_id,s_dept.name,count(s_emp.id) as num from s_emp,s_dept where s_emp.dept_id=s_dept.id group by s_emp.dept_id,s_dept.name order by num;
注意:在SQL语法中,用了group by 则select之后的字段除了聚集函数外都必须出现在group by中。这条很关键,否则select语句会报错,类似于:not a GROUP BY expression