1 select 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。
SQL语法:
SELECT column_name,column_name FROM table_name;
2 distinct 在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。DISTINCT关键词用于返回唯一不同的值。
SQL语法:
select distinct column_name,column_name from table_name;
3 where WHERE 子句用于提取那些满足指定标准的记录。
SQL语法:
select column_name,column_name
from table_name
where column_name operator value;
4 where子句中能进行的操作
= 等于
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值
5 and,or 在where子句中有多个条件时使用and,or将多个条件连在一起
SQL语法:
select id
from table_name
where id > 90 and id < 100;
6 order by 关键字用于对结果集按照一个列或者多个列进行排序。ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
SQL语法:
select column_name,column_name
from table_name
order by column_name,column_name asc|desc;
7 insert into 语句用于向表中插入新记录。
SQL语法:
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
8 update 语句用于更新表中的记录。
SQL语法:
update table_name
set column_name = value
where some_column = some_value;
还可以把某列的值赋值给另一列
update table_name
set name = id;
9 delete from 语句用于删除表中的记录。
SQL语法:
delete from table_name
where some_column = some_value;
10 select top, limit, rownum 用于规定要返回的记录的数目。
SQL语法:
select column_name, column_name
from table_name
limit number;
11 like 用于在 WHERE 子句中搜索列中的指定模式。
SQL语法:
select column_name, column_name
from table_name
where column_name like pattern (例如: where name like 'G%' 意思是选出name中以G开头的)
12 通配符
% 替代 0 个或多个字符
_ 替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 不在字符列中的任何单一字符
13 in 允许您在 WHERE 子句中规定多个值。
SQL语法:
select column_name, column_name
from table_name
where column_name in (value1,value2,value3...);
14 between 选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
SQL语法:
select column_name, column_name
from table_name
where column between value1 and value2;
15 as 可以为表名称或列名称指定别名。
SQL语法:
给列取别名
select column_name as alias_name
from table_name;
给表取别名
select a.column_name, w.column_name
from table_name as a, table_name as w;
16 inner join 用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
SQL语法:
select column_name, column_name
from table_name1
inner join table_name2
on table_name1.column_name = table_name2.column_name
17 left join 从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SQL语法:
select column_name, column_name
from table_name1
left join table_name2
on table_name1.column_name = table_name2.column_name
18 right join 从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SQL语法:
select column_name, column_name
from table_name1
right join table_name2
on table_name1.column_name = table_name2.column_name
19 full join 只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
SQL语法:
select column_name, column_name
from table_name1
full join table_name2
on table_name1.column_name = table_name2.column_name
20 union 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
SQL语法:
select column_name from table_name1
union
select column_name from table_name2;
21 select into 从一个或多个表复制数据,然后把数据插入到另一个新表中。
SQL语法:
select column_name, column_name
into new_table [in 其它数据库]
from table_name1
inner join table_name2
on table_name1.column_name = table_name2.column_name
order by table_name1.column;
22 insert into 从一个或多个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
SQL语法:
insert into table_name3 (column_name, column_name, column_name…)
select column_name, column_name, column_name
from table_name1
inner join table_name2
on table_name1.column_name = table_name2.column_name
order by column_name;
23 create database 创建数据库
SQL语法:
create database db_name;
24 create table 创建表
SQL语法:
create table table_name
(
column_name serial primary key not null,
column_name integer,
column_name varchar(255)
)
25 约束, 如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
SQL语法:
create table table_name
(
column_name data_type(size) constraint_name,
)
not null 字段不能为空
unique 字段值唯一
primary key 主键, not null和unique的结合,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
foreign key 外键, 保证一个表中的数据匹配另一个表中的值的参照完整性。
check 保证列中的值符合指定的条件。
default 规定没有给列赋值时的默认值。
26 check 用于限制列中的值的范围。
SQL语法:
create table table_name
(
id integer not null check(id > 0)
)
27 default 给字段一个默认值.
SQL语法:
create table table_name
(
country varchar(255) default ‘中国’
)
28 create index 创建索引
SQL语法:
create index index_name
on table_name(column_name, column_name); 哪张表的哪几个字段建索引
29 drop 删除
SQL语法:
drop database db_name; 删除数据库
drop table table_name; 删除表
alter table table_name drop index index_name; 删除索引
30 alter table 用于在已有的表中添加、删除或修改列。
SQL语法:
alter table table_name
add column column_name datatype; 增加一个字段
alter table table_name
alter column column_name type datatype; 修改列属性,不同数据库命令不同
alter table table_name
drop column column_name; 删除一个字段
31 auto increment 会在新记录插入表中时生成一个唯一的数字。默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
SQL语法:
create table table_name
(
id integer not null auto_increment
)
32 view 视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
SQL语法:
创建视图
create view view_name as
select column_name, column_name
from table_name1
inner join table_name2
on table_name1.column_name = table_name2.column_name
order by column_name;
更新视图
create or replace view view_name as
select column_name
from table_name
where condition
删除视图
drop view view_name;
33 日期 不同数据库函数不一样. 格式:YYYY-MM-DD HH:MM:SS
NOW() 返回当前的日期和时间
CURDATE() 返回当前的日期
CURTIME() 返回当前的时间
DATE() 提取日期或日期/时间表达式的日期部分
EXTRACT() 返回日期/时间的单独部分
DATE_ADD() 向日期添加指定的时间间隔
DATE_SUB() 从日期减去指定的时间间隔
DATEDIFF() 返回两个日期之间的天数
DATE_FORMAT() 用不同的格式显示日期/时间
34 null值 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。我们必须使用 IS NULL 和 IS NOT NULL 操作符。
SQL语法:
select column_name, column_name
from table_name
where column_name is null;
或者
where column_name is not null;
35 SQL Aggregate函数
AVG() - 返回平均值
COUNT() - 返回行数
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和
SQL Scalar函数
UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式
36 avg()函数 返回数值列的平均值。
SQL语法:
select column_name, column_name
from table_name
where column_name > (select avg(column_name) from table_name);
37 count()函数 返回匹配指定条件的行数。
SQL语法:
select count(distinct column_name)
from table_name;
38 first()函数 返回指定的列中第一个记录的值。
SQL语法:
select first(column_name)
from table_name;
39 last()函数 返回指定的列中最后一个记录的值。
SQL语法:
select last(column_name)
from table_name;
40 min() max()函数 返回指定列的最小值 最大值
SQL语法:
select min(column_name)
或者
select max(column_name)
from table_name;
41 sum()函数 返回数值列的总数。
SQL语法:
select sum(column_name)
from table_name;
42 group by 分组, 用于结合聚合函数,根据一个或多个列对结果集进行分组。
SQL语法:
select column_name, sum(column_name)
from table_name
group by column_name;
分组一般用于统计,所以会结合一些函数进行使用
43 having子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用 HAVING 子句可以让我们筛选分组后的各组数据。
SQL语法:
SELECT column_name,column_name FROM table_name;
2 distinct 在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。DISTINCT关键词用于返回唯一不同的值。
SQL语法:
select distinct column_name,column_name from table_name;
3 where WHERE 子句用于提取那些满足指定标准的记录。
SQL语法:
select column_name,column_name
from table_name
where column_name operator value;
4 where子句中能进行的操作
= 等于
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值
5 and,or 在where子句中有多个条件时使用and,or将多个条件连在一起
SQL语法:
select id
from table_name
where id > 90 and id < 100;
6 order by 关键字用于对结果集按照一个列或者多个列进行排序。ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
SQL语法:
select column_name,column_name
from table_name
order by column_name,column_name asc|desc;
7 insert into 语句用于向表中插入新记录。
SQL语法:
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
8 update 语句用于更新表中的记录。
SQL语法:
update table_name
set column_name = value
where some_column = some_value;
还可以把某列的值赋值给另一列
update table_name
set name = id;
9 delete from 语句用于删除表中的记录。
SQL语法:
delete from table_name
where some_column = some_value;
10 select top, limit, rownum 用于规定要返回的记录的数目。
SQL语法:
select column_name, column_name
from table_name
limit number;
11 like 用于在 WHERE 子句中搜索列中的指定模式。
SQL语法:
select column_name, column_name
from table_name
where column_name like pattern (例如: where name like 'G%' 意思是选出name中以G开头的)
12 通配符
% 替代 0 个或多个字符
_ 替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 不在字符列中的任何单一字符
13 in 允许您在 WHERE 子句中规定多个值。
SQL语法:
select column_name, column_name
from table_name
where column_name in (value1,value2,value3...);
14 between 选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
SQL语法:
select column_name, column_name
from table_name
where column between value1 and value2;
15 as 可以为表名称或列名称指定别名。
SQL语法:
给列取别名
select column_name as alias_name
from table_name;
给表取别名
select a.column_name, w.column_name
from table_name as a, table_name as w;
16 inner join 用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
SQL语法:
select column_name, column_name
from table_name1
inner join table_name2
on table_name1.column_name = table_name2.column_name
17 left join 从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SQL语法:
select column_name, column_name
from table_name1
left join table_name2
on table_name1.column_name = table_name2.column_name
18 right join 从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SQL语法:
select column_name, column_name
from table_name1
right join table_name2
on table_name1.column_name = table_name2.column_name
19 full join 只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
SQL语法:
select column_name, column_name
from table_name1
full join table_name2
on table_name1.column_name = table_name2.column_name
20 union 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
SQL语法:
select column_name from table_name1
union
select column_name from table_name2;
21 select into 从一个或多个表复制数据,然后把数据插入到另一个新表中。
SQL语法:
select column_name, column_name
into new_table [in 其它数据库]
from table_name1
inner join table_name2
on table_name1.column_name = table_name2.column_name
order by table_name1.column;
22 insert into 从一个或多个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
SQL语法:
insert into table_name3 (column_name, column_name, column_name…)
select column_name, column_name, column_name
from table_name1
inner join table_name2
on table_name1.column_name = table_name2.column_name
order by column_name;
23 create database 创建数据库
SQL语法:
create database db_name;
24 create table 创建表
SQL语法:
create table table_name
(
column_name serial primary key not null,
column_name integer,
column_name varchar(255)
)
25 约束, 如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
SQL语法:
create table table_name
(
column_name data_type(size) constraint_name,
)
not null 字段不能为空
unique 字段值唯一
primary key 主键, not null和unique的结合,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
foreign key 外键, 保证一个表中的数据匹配另一个表中的值的参照完整性。
check 保证列中的值符合指定的条件。
default 规定没有给列赋值时的默认值。
26 check 用于限制列中的值的范围。
SQL语法:
create table table_name
(
id integer not null check(id > 0)
)
27 default 给字段一个默认值.
SQL语法:
create table table_name
(
country varchar(255) default ‘中国’
)
28 create index 创建索引
SQL语法:
create index index_name
on table_name(column_name, column_name); 哪张表的哪几个字段建索引
29 drop 删除
SQL语法:
drop database db_name; 删除数据库
drop table table_name; 删除表
alter table table_name drop index index_name; 删除索引
30 alter table 用于在已有的表中添加、删除或修改列。
SQL语法:
alter table table_name
add column column_name datatype; 增加一个字段
alter table table_name
alter column column_name type datatype; 修改列属性,不同数据库命令不同
alter table table_name
drop column column_name; 删除一个字段
31 auto increment 会在新记录插入表中时生成一个唯一的数字。默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
SQL语法:
create table table_name
(
id integer not null auto_increment
)
32 view 视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
SQL语法:
创建视图
create view view_name as
select column_name, column_name
from table_name1
inner join table_name2
on table_name1.column_name = table_name2.column_name
order by column_name;
更新视图
create or replace view view_name as
select column_name
from table_name
where condition
删除视图
drop view view_name;
33 日期 不同数据库函数不一样. 格式:YYYY-MM-DD HH:MM:SS
NOW() 返回当前的日期和时间
CURDATE() 返回当前的日期
CURTIME() 返回当前的时间
DATE() 提取日期或日期/时间表达式的日期部分
EXTRACT() 返回日期/时间的单独部分
DATE_ADD() 向日期添加指定的时间间隔
DATE_SUB() 从日期减去指定的时间间隔
DATEDIFF() 返回两个日期之间的天数
DATE_FORMAT() 用不同的格式显示日期/时间
34 null值 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。我们必须使用 IS NULL 和 IS NOT NULL 操作符。
SQL语法:
select column_name, column_name
from table_name
where column_name is null;
或者
where column_name is not null;
35 SQL Aggregate函数
AVG() - 返回平均值
COUNT() - 返回行数
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和
SQL Scalar函数
UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式
36 avg()函数 返回数值列的平均值。
SQL语法:
select column_name, column_name
from table_name
where column_name > (select avg(column_name) from table_name);
37 count()函数 返回匹配指定条件的行数。
SQL语法:
select count(distinct column_name)
from table_name;
38 first()函数 返回指定的列中第一个记录的值。
SQL语法:
select first(column_name)
from table_name;
39 last()函数 返回指定的列中最后一个记录的值。
SQL语法:
select last(column_name)
from table_name;
40 min() max()函数 返回指定列的最小值 最大值
SQL语法:
select min(column_name)
或者
select max(column_name)
from table_name;
41 sum()函数 返回数值列的总数。
SQL语法:
select sum(column_name)
from table_name;
42 group by 分组, 用于结合聚合函数,根据一个或多个列对结果集进行分组。
SQL语法:
select column_name, sum(column_name)
from table_name
group by column_name;
分组一般用于统计,所以会结合一些函数进行使用
43 having子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用 HAVING 子句可以让我们筛选分组后的各组数据。