您的位置:首页 > 数据库

SQL(1) -- 基本知识点及注意事项

2016-04-12 00:14 239 查看
为了本文为SQL基本用法清单,不对sql用法做具体讲解,通过本文可对常见SQL知识点有大致了解,也便于以后自己查找用法。另,由于SQL基本语法大体一致,特殊部分语法以mysql语法为主,并包含少量oracle语法。

后续会补充上自己SQL练习的代码。

检索数据

查询单列:

select col from table_name;

查询多列:

select col1,col2 from table_name;

查询所有列:

select * from table_name;

查询不同值:

select distinct col_name from table_name;

限制结果(获取指定量的值):

select * from table_name rownum<5; – oracle前五条

select * from table_name limit 5;– mysql 前五条

结果排序

排序数据:

select stu_name,stu_id from table_name order by stu_id;

多列排序:

select stu_name,stu_id from table_name order by stu_name,stu_id; – name为第一关键字,id为第二关键字,即当name一样时按id顺序排序

按列位置排序:

select * from table_name order by 2,3;– 按照查询结果的第二 第三列排序;

指定排序方向:

select * from table_name order by stu_name desc ;– 将查询结果按name倒序排列,默认为asc 即正序排列。排序中大小写的排列顺序有dbms数据库设计规则而定。

过滤数据

where用法:

select * from table_name where name<10;–

where 常见操作符:

’ >, <, <=,>=,!=,!<,>,!>,between,is null

部分操作符由于dbms不同而由区别(不支持)。

组合where:

select * from table_name where x>1 and x<3;

select * from table_name where x>1 or x<3;

dbms处理and优先于or,使用时注意条件优先级,如果必要,请用()括号来增加优先级,防止查询结果错误,也消除歧义,使SQL有较好可读性。

in操作符:

select * from table_name where id in (‘a’,’b’);

查询出当id 为 a 或 b时的结果。in的作用和or类似,但它写法更简洁,in的执行效率也相对高于or语句。

not操作符

select * from table_name where not id=3;

查出id不等于3的结果

like操作符

用like模糊匹配

select * from table_name where xx_name like ‘%aaa%’;

%表示匹配任意多个任意字符串,前后各一个表示匹配所有xx_name含有‘aaa’的结果。同样的可以用% 过滤以指定字符串开头或指定字符串结尾的数据。%不会匹配指定字段为null的行。

select * from table_name where xx like ‘_aa%’;

_ 用来表示一个任意字符。即,开头为任意字母,第二、三字母为‘aa’的结果。

计算字段

select concact (id ,id,’_2’) from table_name;

rtrim() ltrim() trim() 函数;

字段别名(as根据dbms不同可选);

计算:

select count*price as sum from table_name;

常见函数

多数dbms支持以下类型函数:

文本类型、日期类型,数值计算类型,获取dbms信息类型

文本型

left()获取左边字符串

length()获取长度

lower()获取小写形式

ltrim()去掉左边空格

right() 获取右边字符串

rtrim() 去掉右边空格

soundex() 返回读音相似的;

upper() 获取大写形式

时间、日期处理

select * from table_name where year(order_date)=2012;

获取日期中 2012年相关数据;

数值处理

abs 绝对值

cos 余弦

exp 指数

pi π(圆周率)

sin正弦

sqrt平方根

tan正切

聚集函数

avg 平均数

count 统计

max 最大

min最小

sum 求和

distinct 聚集不同值

注:distinct 语法上虽可用户max min ,但实际没有意义,因为distinct无论大小 只考虑不同值;

distinct 不能与count(*)一起使用,必须指定列名,不能用于计算或表达式。

数据 分组

group by:

select id ,count(*) as num from table group by id;–查出table中所有数据,并将id相同的数据进行count统计,最终列出每种id的数据条数。

having ,having和where的区别:

where过滤行,having过滤分组;where 在数据分组前进行过滤,having在数据分组后进行过滤;

order by 对分组数据进行排序

常见关键字执行次序(优先级)

从大到小依次为:

select

from

where

group by

having

order by

子查询

select * from table_name where id in(aaa,bbb);

其中 aaa,bbb 为另一条sql的查询结果:

select id from table2 where xxx=asdf;

子查询总是从内向外处理,必须等内部sql执行完成有了结果后,才会将查询结果作为条件放在外部sql中执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: