面试、工作中常用sql大全(建议收藏备用)

简介: 面试、工作中常用sql大全(建议收藏备用)

1)建表

create table test
    (
      test_id int,
      test_price decimal,
      test_desc varchar(255)
    );
create table hehe
    as
    select *  from emp;

2)排序

查询结果为默认升序,可以指定降序,ORDER BY子句可以有多个关键字(先排前)

SELECT * FROM emp ORDER BY empno DESC;

注意ORDER BY子句总放在SELECT子句的最后面。可以在查询中使用函数。

SELECT * FROM emp ORDER BY UPPER(ename);

3)过滤查询

SELECT DISTINCT ename FROM emp;

关键字UNIQUE与DISTINCT作用相同,但是UNIQUE为ORACLE特有语法,不易于移植。

4)where子句

    select * from emp where sal between 2000 and 3000;
    select * from emp where job in('SALESMAN','CLERK');

上面第2列代码指定字段job为’SALESMAN’,'CLERK’的职员。

   SELECT 
      empno,
      ename,
      job,
      sal,
      TO_CHAR(hiredate, 'YY-MM-DD') as hiredate
    from 
      emp
    where 
      job='CLERK' and EXTRACT(MONTH FROM hiredate)=12;

5)Fetch子句

fetch子句可以返回限定条数的数据。下列代码放回工资最高的五个员工(如果最后一个名额并列则全部显示,把with ties换成only则不会拓展显示数据)。

    --以下代码只有在Oracle12c以上的版本才可以执行
    select
      empno,
      ename,
      sal
    from 
      emp 
    order by
      sal desc
    fetch next 5 rows with ties;

6)In子句

    select
      empno,
      ename,
      job,
      sal
    from 
      emp 
    where 
      job not in('CLERK')
    order by
      sal desc;

7)Between And子句

    select
      empno,
      ename,
      job,
      hiredate
    from
     emp
    where
     hiredate between date '1980-01-01' and date '1981-01-01'
    order by
      empno;

8)like子句

like子句可以使用通配符匹配查询。下面查询姓名首字母为A的,至少有两个字母的员工,不区分大小写。

     select
      empno,
      ename,
      job
    from
      emp
    where
      upper(ename) like 'A_%'
    ORDER BY
      empno;

9)插入数据

INSERT INTO emp(empno,ename,job)
    VALUES(8003,'sg','CLERK');

10)更新数据

UPDATE  emp
    SET ename='pp'
    WHERE empno='8003';

11)删除数据

DELETE FROM emp
    WHERE empno='8003';

12)返回指定行数数据

select * from emp where rownum<=5;

该语句在数据量特别大的数据库中很有用。

13)别名

    select empno as id,ename as name from emp;
    select 
    e.empno,e.ename,d.dname,e.deptno,d.deptno
    from 
    emp e,dept d
    where e.deptno=d.deptno;

14)连接

内连接两张表的全部内容都会显示,外连接分为左连接和右连接,左连接左表全部显示。

    select 
    e.empno,e.ename,e.job,d.deptno,d.dname
    from 
    emp e
    inner join
    dept d
    on e.deptno=d.deptno;

15)Union和unionAll

合并多个select子句,其中unionAll允许重复值,而Union则不允许。

    select deptno from emp
    union all
    select deptno from dept
    order by deptno;

16)约束

常用primarary key,foreign key not null,check,default.

    create table teacher(
      tid VARCHAR(20) PRIMARY key,
      tname varchar(30),
      tsex VARCHAR(10)
    );
    alter table teacher
    add constraint ck_teacher check(tsex='M' or tsex='W');

17)创建索引

create index index_emp
    on emp(empno);

18)drop与truncate

drop index index_test;

truncate可以截断表中数据但是不删除表。

truncate table hehe;

19)函数

select avg(sal) from emp;
    select count( distinct ename) from emp;


20)group by子句

使用聚合函数group by可以分组查询,比如查各部门员工的平均工资。

select deptno,avg(sal) as avg_sal from emp group by deptno;

21)having子句

使用having关键字是因为where子句与聚合函数无法同时使用。

    select 
    deptno,avg(sal) as avg_sal 
    from
    emp 
    group by deptno
    having avg(sal)>1000;


相关文章
|
4月前
|
SQL 数据库
SQL面试50题------(初始化工作、建立表格)
这篇文章提供了SQL面试中可能会遇到的50道题目的建表和初始化数据的SQL脚本,包括学生、教师、课程和成绩表的创建及数据插入示例。
SQL面试50题------(初始化工作、建立表格)
|
4月前
|
SQL
sql面试50题------(1-10)
这篇文章提供了SQL面试中的前10个问题及其解决方案,包括查询特定条件下的学生信息、教师信息和课程成绩等。
sql面试50题------(1-10)
|
1月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
1月前
|
存储 安全 Java
面试高频:Synchronized 原理,建议收藏备用 !
本文详解Synchronized原理,包括其作用、使用方式、底层实现及锁升级机制。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
面试高频:Synchronized 原理,建议收藏备用 !
|
4月前
|
SQL
sql面试50题------(11-20)
这篇文章提供了SQL面试中的50道题目,其中详细解释了11至20题,包括查询与学号为“01”的学生所学课程相同的学生信息、不及格课程的学生信息、各科成绩统计以及学生的总成绩排名等问题的SQL查询语句。
|
4月前
|
SQL
sql面试50题------(21-30)
这篇文章是SQL面试题的21至30题,涵盖了查询不同老师所教课程的平均分、按分数段统计各科成绩人数、查询学生平均成绩及其名次等问题的SQL查询语句。
sql面试50题------(21-30)
|
5月前
|
存储 SQL 索引
面试题MySQL问题之使用SQL语句创建一个索引如何解决
面试题MySQL问题之使用SQL语句创建一个索引如何解决
58 1
|
6月前
|
SQL 大数据
常见大数据面试SQL-每年总成绩都有所提升的学生
一张学生成绩表(student_scores),有year-学年,subject-课程,student-学生,score-分数这四个字段,请完成如下问题: 问题1:每年每门学科排名第一的学生 问题2:每年总成绩都有所提升的学生
|
5月前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
83 0
|
5月前
|
SQL 监控 Java
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
321 0