前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL学习日记(二)

SQL学习日记(二)

作者头像
量子态的沐子呓
发布2019-12-25 14:47:03
3290
发布2019-12-25 14:47:03
举报
文章被收录于专栏:YINUXY

章节导航


  1. SQL语句的多表查询方式
  2. 创建和管理DLL
  3. 数据处理 DML
  4. 约束

SQL语句的多表查询方式

例如:按照 department_id 查询 employees(员工表)和 departments(部门表)的信息。

  • 方式一( 通用型):SELECT ... FROM ... WHERE
代码语言:javascript
复制
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.`department_id` = d.`department_id`;
  • 方式二:SELECT ... FROM ... NATURAL JOIN ...

有局限性:会自动连接两个表中相同的列(可能有多个:department_id 和manager_id)

代码语言:javascript
复制
SELECT last_name,department_id,department_name
FROM employees
NATURAL JOIN departments

方式三:

代码语言:javascript
复制
SELECT ... JOIN ... USING ...

有局限性:好于方式二,但若多表的连接列列名不同,此法不合适

代码语言:javascript
复制
SELECT last_name,department_id,department_name
FROM employees
JOIN departments
USING(department_id)

方式四:

代码语言:javascript
复制
SELECT ... FROM ... JOIN ... ON ...

常用方式,较方式一,更易实现外联接(左、右、满)

代码语言:javascript
复制
SELECT last_name,e.department_id,department_name
FROM employees e
JOIN departments d
ON e.department_id = d.department_id
  1. 内连接

    –等值连接 –不等值连接

    –非自连接 –自连接

  2. 外连接 –左外连接、右外连接、满外连接

创建和管理DLL

CRAETE TABLE /TRUNCATE TABLE /ALTER TABLE /REANME…TO/DROP TABLE ..操 作完以后,自动 commit;所以,rollback 对其操作,没有效果

  1. 创建表
    1. 直接创建 create table emp1( name varchar2(20), salary number(8,2)default 1000, id number(4), hire_date date );
    2. 通过子查询的方式创建 create table emp2 as select last_name name,employee_id id,hire_date from employees; 或者 create table emp2 as select last_name name,employee_id id,hire_date from employees where department_id = 80;/where 1=2;
  2. 修改表
    1. 增加新的列 alter table emp1 add(birthday date)
    2. 修改现有的列 alter table emp1 modify(name varchar2(25) default 'abc')
    3. 重命名现有的列 alter table emp1 rename column salary to sal;
    4. 删除现有的列 alter table emp1 drop column birthday;
  3. 清空表中的数据(与 与 delete from table_name truncate table emp2;
  4. 重命名表 rename emp2 to emp3;
  5. 删除表 drop table emp3;

数据处理

    1. 增添一条记录 insert into [表名](,,,,,) values(,,,,,)
    2. 从其它表中拷贝数据 insert into [表名] select .... from [另一个表] where ....
  1. 改 update [表名] set ..... where ....
  2. 删 delete from [表名] where ....
  3. 查(最常用的数据库操作) select .... from … where …. group by … having … order by ….

约束

对创建的表的列属性、字段进行的限制。诸如:not null/unique/primary key/foreign key/check

  1. 如何定义约束— 在创建表的同时,添加对应属性的约束
    1. 表级约束 & 列级约束 create table emp1( employee_id number(8), salary number(8), -- 列级约束 hire_date date not null, dept_id number(8), email varchar2(8) constraint emp1_email_uk unique, name varchar2(8) constaint emp1_name_uu not null, first_name varchar2(8), -- 表级约束 constraint emp1_emp_id_pk primary key(employee_id), constraint emp1_fir_name_uk unique(first_name), constraint emp1_dept_id_fk foreign key(dept_id) references departments(department_id) ON DELETE CASCADE )
    2. 只有 not null 时只能使用列级约束,其他的约束两种方式皆可
  2. 添加和删除表的约束– 在创建表以后,只能添加和删除,不能修改
    1. 添加 alter table emp1 add constaint emp1_sal_ck check(salary > 0)
      1. 对于 not null 来说,不用 add ,需要 modify :alter table emp1 modify (salary not null)
    2. 删除 alter table emp1 drop constaint emp1_sal_ck
    3. 使某一个约束失效:此约束还存在于表中,只是不起作用 alter table emp1 disable constraint emp1_email_uk;
    4. 使某一个约束激活:激活以后,此约束具有约束力 alter table emp1 enable constraint emp1_email_uk;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 章节导航
  • SQL语句的多表查询方式
  • 创建和管理DLL
  • 数据处理
  • 约束
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档