I. 基础SQL语句
A. 数据定义语言(DDL)
1、创建表(CREATE TABLE)
创建表是数据库设计的第一步,它定义了存储数据的结构和类型,创建一个员工表可以使用以下语句:
CREATE TABLE employees ( employee_id NUMBER(6), first_name VARCHAR2(20), last_name VARCHAR2(25), email VARCHAR2(25), phone_number VARCHAR2(20), hire_date DATE, job_id VARCHAR2(10), salary NUMBER(8, 2), commission_pct NUMBER(2, 2), manager_id NUMBER(4), department_id NUMBER(4) );
在这个例子中,我们定义了一个包含员工基本信息的表,包括员工的ID、姓名、邮箱、电话、雇佣日期、职位、薪资、佣金比例、经理ID和部门ID等字段。
2、修改表结构(ALTER TABLE)
当需要更改表的结构时,可以使用ALTER TABLE语句,如果我们想要为员工表添加一个新的列来存储员工的地址信息,可以使用以下语句:
ALTER TABLE employees ADD address VARCHAR2(50);
3、删除表(DROP TABLE)
当不再需要一个表时,可以使用DROP TABLE语句将其删除,删除上述创建的员工表,可以使用以下语句:
DROP TABLE employees;
B. 数据操纵语言(DML)
1、插入数据(INSERT INTO)
向表中插入新数据使用INSERT INTO语句,向员工表插入一条新员工记录,可以使用以下语句:
INSERT INTO employees (employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id) VALUES (1, 'John', 'Doe', 'john.doe@example.com', '1234567890', TO_DATE('20230101', 'YYYYMMDD'), 'IT_PROG', 5000, NULL, NULL, 10);
这里我们插入了一条员工记录,包括员工的ID、姓名、邮箱、电话、雇佣日期、职位、薪资、佣金比例、经理ID和部门ID等信息。
2、更新数据(UPDATE)
更新表中的数据使用UPDATE语句,更新上述插入的员工记录的薪资信息,可以使用以下语句:
UPDATE employees SET salary = 5500 WHERE employee_id = 1;
这里我们将员工ID为1的员工薪资更新为5500。
3、删除数据(DELETE)
从表中删除数据使用DELETE语句,删除上述更新的员工记录,可以使用以下语句:
DELETE FROM employees WHERE employee_id = 1;
这里我们删除了员工ID为1的员工记录。
4、查询数据(SELECT)
查询表中的数据使用SELECT语句,查询所有员工的姓名和薪资信息,可以使用以下语句:
SELECT first_name, last_name, salary FROM employees;
这里我们选择了员工表中的姓名和薪资字段进行查询,将返回所有员工的这些信息。
II. 高级SQL语句
A. 联合查询(UNION)
联合查询用于合并两个或多个SELECT语句的结果集,如果我们有两个部门的员工表,一个用于销售部门(sales_employees),另一个用于技术部门(tech_employees),我们可以使用UNION来获取所有员工的列表:
SELECT employee_id, first_name, last_name FROM sales_employees UNION SELECT employee_id, first_name, last_name FROM tech_employees;
这将返回一个结果集,其中包含两个表中所有员工的ID、名和姓。
子查询是指嵌套在其他SQL语句中的查询,它们通常用于WHERE子句中,要找出薪资高于平均薪资的所有员工,可以使用以下带有子查询的SELECT语句:
SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
在这个例子中,子查询计算了员工表中的平均薪资,而外部查询则选择了所有薪资高于这个平均值的员工记录。
C. 集合操作(如INTERSECT, EXCEPT)
集合操作符如INTERSECT和EXCEPT用于比较两个查询的结果集,INTERSECT返回两个查询共有的记录,而EXCEPT返回第一个查询有但第二个查询没有的记录,要找出同时在销售部门和技术部门工作的员工,可以使用INTERSECT:
SELECT employee_id FROM sales_employees INTERSECT SELECT employee_id FROM tech_employees;
相反,如果我们想找出只在销售部门工作而不在技术部门工作的员工,可以使用EXCEPT:
SELECT employee_id FROM sales_employees EXCEPT SELECT employee_id FROM tech_employees;
这些高级SQL语句使得能够执行复杂的数据分析和操作,从而满足更多样化的业务需求。
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/318467.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复