select [ all | distinct ]
[top expression [percent] [with ties ]
< select_list >
[ into new_table ]
[ from [n ]
[ where ]
[ group by [ all ] group_by_expression [ n ]
[ with ]
h**ing < search_condition >
查询表中的所有字段。
select *
from 类别。
查询表中指定的字段。
select 类别名称,说明。
from 类别。
select 类别。类别名称, 类别。说明。
from 类别。
为查询添加计算列和别名。
select 订单id, 产品id, 单价, 数量, 折扣, 单价 * 1 . 折扣) *数量 as 总价。
from 订单明细。
select 订单id as 订单编号, 产品id as 产品编号,
单价, 数量, 折扣, 单价 * 1 . 折扣) *数量 as 总价。
from 订单明细。
查询前n条记录。
select top 10 *
from 订单明细。
order by 数量 desc
查询前n%条记录。
select top 10 percent *
from 订单明细。
order by 数量
查询前n%条记录(包含最后并列的排名数据)
select top 10 with ties *
from 订单明细。
order by 数量 desc
查询不重复的数据(n个字段同时不重复)
select distinct 货主城市。
from 订单。
select distinct 货主名称,货主城市。
from 订单。
查询表中的标识列。
select $identity
from 类别。
select $rowguid
from 类别。
多表联合查询语句(jion=inner jion,内部链接)
select 产品id,产品名称,类别名称,类别。类别id
from 产品 join 类别。
on 产品。类别id = 类别。类别id
select 产品。产品名称, 订单明细。单价, 订单明细。数量,
订单明细。折扣, 订单。订购日期。
from 订单明细 join
订单 on 订单明细。订单id = 订单。订单id join
产品 on 订单明细。产品id = 产品。产品id
select 产品。产品名称, 订单明细。单价, 订单明细。数量,
订单明细。折扣, 订单。订购日期。
from (订单明细 join 订单 on 订单明细。订单id = 订单。订单id )
join 产品 on 订单明细。产品id = 产品。产品id
select *
from 库存信息 inner join
订单信息 on 库存信息。产品名称 = 订单信息。产品名称。
多表联合查询语句(left outer join= left join,包含“inner jion”的同时,左边表的所有记录都要出现)
select *
from 库存信息 left outer join
订单信息 on 库存信息。产品名称 = 订单信息。产品名称。
多表联合查询语句(right outer join = right join, 包含“inner jion”的同时,右边表的所有记录都要出现)
select *
from 库存信息 right outer join
订单信息 on 库存信息。产品名称 = 订单信息。产品名称。
多表联合查询语句(full outer join = full join, 包含“inner jion”的同时,左右边表的所有记录都要出现)
select *
from 库存信息 full outer join
订单信息 on 库存信息。产品名称 = 订单信息。产品名称。
多表联合查询语句(cross join,左表和右表的所有记录进行交叉匹配)
select *
from 库存信息 cross join 订单信息。
表jion自身。
select 雇员。雇员id, 雇员。姓氏, 雇员。名字, 雇员。职务,
主管。姓氏 as 主管姓氏, 主管。名字 as 主管名字,
主管。职务 as 主管职务。
from 雇员 left outer join
雇员 as 主管 on 雇员。上级 = 主管。雇员id
说明:“雇员”表中有个字段是“雇员。上级”,该查询语句表示组合查询雇员和雇员的上级信息。
select 产品。*
from 产品 join 类别。
on 产品。类别id = 类别。类别id
where 产品。库存量 = 0 and 类别。类别名称 = n'调味品'
select 产品。*
from 产品 join 类别。
on 产品。类别id = 类别。类别id
where 产品。库存量 = 0 and
(类别。类别名称 = n'调味品' or 类别。类别名称 = n'日用品')
select * from 雇员。
where 雇用日期< convert(datetime, '1993.1.1', 102)
说明:convert将字符串'1993.1.1',转换成日期型,格式“102”
select * from 雇员。
where 雇用日期< '1993.1.1'
说明:这是隐式转换,效果等同以上语句。
select *
from 雇员。
where year(getdate())year(雇用日期) >13
说明:getdate()获取系统当前时间。
查询两个条件之间的记录between
select *
from 雇员。
where 雇用日期 between convert(datetime, '1993.01.01', 102)
查询记录为空值null的记录。
select *
from 雇员。
where 上级 is null
条件or的使用。
select *
from 雇员。
where 雇员id = 1 or 雇员id = 3 or 雇员id = 4
or 雇员id = 7 or 雇员id = 9
条件in的使用。
select *
from 雇员。
where 雇员id in (1,3,4,7,9)
条件not的使用。
select *
from 雇员。
where 雇员id not in (1,3,4,7,9)
将某个查询结果集作为条件使用。
select *
from 订单明细。
where 产品id in
(select 产品id
from 产品 join 类别。
on 产品。类别id = 类别。类别id
where 类别。类别名称 = n'日用品')
sql 模糊查询
在进行数据库查询时,有完整查询和模糊查询之分。
一般模糊查询语句如下:
select 字段 from 表 where 某字段 like 条件。
其中关于条件,sql提供了四种匹配模式:
1,% 表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%表示。
比如 select * from [user] where u_name like '%三%'
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件。
select * from [user] where u_name like '%三%' and u_name like '%猫%'
若使用 select * from [user] where u_name like '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。
2,_ 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
比如 select * from [user] where u_name like '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 select * from [user] where u_name like '三__'
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3,[ 表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
比如 select * from [user] where u_name like '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);
如 [ 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
select * from [user] where u_name like '老[1-9]'
将找出“老1”、“老2”、…老9”;
4,[^表示不在括号所列之内的单个字符。其取值和 相同,但它要求所匹配对象为指定字符以外的任一个字符。
比如 select * from [user] where u_name like '[张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
select * from [user] where u_name like '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、…
order by 语法。
order by
order_by_expression 要排序的列。
[ collate collation_name ] 排序规则。
[ asc | desc ] 升序或降序。
sql查询基本语法
1 计算列。select from emp 表示所有的。from emp 表示从emp表查询。select empno,ename from emp select ename,sal 12 as 年薪 from emp as可以省略,记住 年薪 不要写成 年薪 也不要写成年薪,方便移植。select...
BASH的基本语法
最简单的例子 hello world 关于输入 输出和错误输出 bash 中对变量的规定 与 c 语言的异同 bash 中的基本流程控制语法 函数的使用 2.1 最简单的例子 hello world 几乎所有的讲解编程的书给读者的第一个例子都是 hello world 程序,那么我们今天也就从这个例...
BASH的基本语法
最简单的例子 hello world 关于输入 输出和错误输出。bash 中对变量的规定 与 c 语言的异同 bash 中的基本流程控制语法。函数的使用。2.1 最简单的例子 hello world 几乎所有的讲解编程的书给读者的第一个例子都是 hello world 程序,那么我们今天也就从这个例...