SQL面试题

文章目录

      • SQL面试题
        • select
          • limit
          • distinct
          • group by
          • order by
          • having
        • insert
        • update
        • delete
        • index
        • join
          • inner join,内连接
          • right join,右连接
          • full outer join,全连接

SQL面试题

sql知识点,其实很重要,如果面试的时候,面试官问你一些简单的sql语句,如果你没有回答上来,

印象会大打折扣,所以何不花点时间,跟我一起复习一下sql语法

select

基本用法

SELECT column_name,column_name FROM table_name;
SELECT * FROM table_name;
limit

limit关键字作用是分页,一般用法limit offset, pageSize

offset是偏移量,开始第一条数据的偏移量是0,offset=1,代表第二条数据,pageSize页面大小,

所以limit offset pageSize的意思是从offset位置开始,选取pageSize条数据

limit pageSize等同于limit 0, pageSize

distinct

distinct关键字作用是去重,可以对单列或者多列进行去重,

distinct必须放在select子句中所有列名的开头

SELECT DISTINCT column_name,column_name FROM table_name;
group by

group by关键字用于分组

**group by子句必须出现在where子句之后,order by子句之前. **

使用group by子句后,select子句的列名列表中只能出现分组属性和聚集函数

#错误
select * from sc group by Cno; 
select Con, count(Sno) from sc group by Cno;
order by

order by主要的作用是排序, 默认升序排列,

用法:order by colunm_name或者order by column desc降序排列.

having

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

HAVING 子句可以让我们筛选分组后的各组数据。

HAVING语句必须在ORDER BY子句之前

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

insert

两种固定用法

#值的顺序必须与创建表时候列名顺序一致
INSERT INTO table_name
VALUES (value1,value2,value3,...);

#值的顺序与语句中列名顺序一致,如果列有默认值,可以省略对该列的赋值
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

update

固定用法

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

delete

固定用法

DELETE FROM table_name
WHERE some_column=some_value;

index

向表中添加索引

alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;

join

用法

select * from table_name left join other_table_name on table_name.column = other_table_name.column;
inner join,内连接

只连接匹配的行

img

left join, 左连接

LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

img

right join,右连接

RIGHT JOIN返回右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。

img

full outer join,全连接

FULL JOIN 会从左表 和右表 那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替

img

你可能感兴趣的:(Java学习)