sql知识点,其实很重要,如果面试的时候,面试官问你一些简单的sql语句,如果你没有回答上来,
印象会大打折扣,所以何不花点时间,跟我一起复习一下sql语法
基本用法
SELECT column_name,column_name FROM table_name;
SELECT * FROM table_name;
limit关键字作用是分页,一般用法limit offset, pageSize
。
offset是偏移量,开始第一条数据的偏移量是0,offset=1,代表第二条数据,pageSize页面大小,
所以limit offset pageSize
的意思是从offset位置开始,选取pageSize条数据
limit pageSize
等同于limit 0, pageSize
distinct关键字作用是去重,可以对单列或者多列进行去重,
distinct必须放在select子句中所有列名的开头
SELECT DISTINCT column_name,column_name FROM table_name;
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 colunm_name
或者order by column desc
降序排列.
在 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 INTO table_name
VALUES (value1,value2,value3,...);
#值的顺序与语句中列名顺序一致,如果列有默认值,可以省略对该列的赋值
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
固定用法
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
固定用法
DELETE FROM table_name
WHERE some_column=some_value;
向表中添加索引
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) ;
用法
select * from table_name left join other_table_name on table_name.column = other_table_name.column;
只连接匹配的行
left join, 左连接
LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。
RIGHT JOIN返回右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。
FULL JOIN 会从左表 和右表 那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替