一、基本语句语法:
删除:delete from table1 where 条件表达式
更新:update table1 set field1=value1 where 条件表达式
查找:select * from table1 where field1 like ’%value1%’ (% _ 正则匹配)
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
二、关键字顺序结构
SELECT select_list
FROM table_name
[ WHERE search_condition ] 行级过滤
[ GROUP BY group_by_expression ] 分组说明
[ HAVING search_condition ] 组级过滤
[ ORDER BY order_expression [ ASC | DESC ] ] 排序依据 (多个排序列,中间用逗号隔开,默认ASC)
[limit m开始位置, n查多少条] 分页查询
-- 示例:
-- limit 0,10是从第一条开始,取10条数据
select classNo from table_name
group by classNo
having(avg(成绩)>70)
order by classNo
limit 0,10
三、where比较操作符
= 等于
<> != 不等于
< 小于
<= 小于等于
!< >= 不小于
> 大于
>= 大于等于
!> 不大于
between 在指定的两值之间
is nll 为null
四、where逻辑操作符
LIKE
% 表示任何字符出现任意次数(0~n)
_ 表示单个字符 下划线
[] 表示一个字符集 [A-Z] 可以用^(脱字号)来取反
^ [^A-Z]
五、聚集函数 (聚合函数)
以上五个函数,参数默认使用ALL 可以指定DISTINCT,表示只计算不同指。AVG(DISTINCT name)。 DISTINCT不能用作COUNT(*),用作MIN() MAX()也意义不大。
六、分组 GROUP BY
只能使用选择列或者表达式列,而且必须要使用每个选择的列表达式。即以什么分组,就要查询或者使用它
例:
七、过滤分组 HAVING
HAVING支持所有的WHERE操作符。
八、嵌套子查询
子查询:嵌套在其他查询中的查询。 子查询总是从内向外处理的。
作为子查询的select语句只能查询单个列,查询多个列会报错。查询性能问题。
九、联结表 与(left right full inner ) join
from 多表 where 联结条件 (表名用,隔开;联结条件用and隔开)
内部联结 inner join .. on ..
高级联结
*= =* (+)
十、复合查询 union
任何具有多个WHERE子句的select语句,都可以作为一个组合查询给出。
union中的每个查询必须包含相同的列、表达式或者聚合函数。顺序不必相同
列数据类型必须兼容。
union,重复的行数据自动取消。不想取消使用union all。
十一、插入查找的数据
select * into 表1 from 表2;
从一个表复制到另一个表
CREATE DATABASE database-name
删除数据库
drop database dbname
备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
删除新表
drop table tabname
增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
创建视图:create view viewname as select statement
删除视图:drop view viewname
选择:select * from table1 where 条件表达式
删除:delete from table1 where 条件表达式
更新:update table1 set field1=value1 where 条件表达式
查找:select * from table1 where field1 like ’%value1%’ (% _ 正则匹配)
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
二、关键字顺序结构
SELECT select_list
FROM table_name
[ WHERE search_condition ] 行级过滤
[ GROUP BY group_by_expression ] 分组说明
[ HAVING search_condition ] 组级过滤
[ ORDER BY order_expression [ ASC | DESC ] ] 排序依据 (多个排序列,中间用逗号隔开,默认ASC)
[limit m开始位置, n查多少条] 分页查询
-- 示例:
-- limit 0,10是从第一条开始,取10条数据
select classNo from table_name
group by classNo
having(avg(成绩)>70)
order by classNo
limit 0,10
三、where比较操作符
= 等于
<> != 不等于
< 小于
<= 小于等于
!< >= 不小于
> 大于
>= 大于等于
!> 不大于
between 在指定的两值之间
is nll 为null
四、where逻辑操作符
and 与
IN 指定条件范围,范围中的每个条件都可以进行匹配
LIKE
% 表示任何字符出现任意次数(0~n)
_ 表示单个字符 下划线
[] 表示一个字符集 [A-Z] 可以用^(脱字号)来取反
^ [^A-Z]
五、聚集函数 (聚合函数)
AVG() 平均值 给定数值列做参数(NULL值允许)
COUNT() 计数 count(列)忽略null值,count(*)不忽略null
MAX() 最大值 忽略null
MIN() 最小值
以上五个函数,参数默认使用ALL 可以指定DISTINCT,表示只计算不同指。AVG(DISTINCT name)。 DISTINCT不能用作COUNT(*),用作MIN() MAX()也意义不大。
六、分组 GROUP BY
只能使用选择列或者表达式列,而且必须要使用每个选择的列表达式。即以什么分组,就要查询或者使用它
例:
七、过滤分组 HAVING
HAVING支持所有的WHERE操作符。
WHERE过滤的是行; HAVING过滤的是分组。
即WHERE在数据分组前先进行行过滤,然后HAVING在分组后进行过滤
查询courses表中 超过5名学生的课(出处LeetCode)
例:select class from courses group by class having count(student)>=5八、嵌套子查询
子查询:嵌套在其他查询中的查询。 子查询总是从内向外处理的。
例:
作为子查询的select语句只能查询单个列,查询多个列会报错。查询性能问题。
九、联结表 与(left right full inner ) join
from 多表 where 联结条件 (表名用,隔开;联结条件用and隔开)
例子: select id,name,price
from goods,prices
where price.id=goods.id;
内部联结 inner join .. on ..
select id,name,price from goods inner join prices on price.id=goods.id;
其他join的使用略
高级联结
*= =* (+)
十、复合查询 union
任何具有多个WHERE子句的select语句,都可以作为一个组合查询给出。
例:
union中的每个查询必须包含相同的列、表达式或者聚合函数。顺序不必相同
列数据类型必须兼容。
union,重复的行数据自动取消。不想取消使用union all。
十一、插入查找的数据
insert into 表(列名,...)select 列名...from ...
例:
select * into 表1 from 表2;
从一个表复制到另一个表
例:
十二、库表类操作
创建数据库CREATE DATABASE database-name
删除数据库
drop database dbname
备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
删除新表
drop table tabname
增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
创建视图:create view viewname as select statement
删除视图:drop view viewname