# 注释内容
-- 注释内容
/* 注释
内容
*/
select distinct * from ...
select * from ..
order by .. desc;
order by 多序排列时,靠前的优先级高,且可分组
order by a,b,c;
insert into table_name
values (value1,value2...);
update table_name
set column1=value1 , ...
where some_column=some_value;
表的结构、属性、索引都将保持不变
delete from table_name
where name='aim_to_delete_name';
根据不同的数据库选用不同的关键字
限制可以是数量(num),也可以是百分比(percent)
select * from table_name
where name like 'G%';
# "%"为通配符,例中表示以G开头的所有名字
“%” 匹配任意字符
“_” 任意单个字符
正则表达式
select * from table_name
where name REGEXP '^[abc]';
# 选取以a或b或c开头的所有name
# NOT REGEXP表示取反
select column_name(s)
from table_name
where column_name IN (value1,value2,...);#相当于多个and
select * from table_name
where column_name between value1 and value2;# 取反:not between
别名中有空格的话需使用单引号或双引号括起来
inner join 关键字在表中存在至少一个匹配时返回行(交集)
(inner 可省略)
select table1.id,table1...... ,table2.id ,.....
from table1
inner join table2
on table1.id=table2.id;
left join 关键字(左表为主,右表没有对应值为null)
左表table1中返回所有行,及时右表中没有匹配,不匹配的返回NULL
right jion 与上对应(右表为主,左表没有对应值为null)
full outer jion(取并集,两个表自己没有对应值的为null)
注意:Union每个select语句必须拥有相同数量的列,列也必须拥有相似的数据类型,且select语句中的列的顺序必须相同,才能进行union
select column_name(s) from table1
union
select column_name(s) from table2
where ...
order by ... ;
# select中列名必须对应
# 默认为选取不同的值,如允许选取重复的值需使用 union all
等价于
cerate table new_table
as
select * from old_table;
select *
into new_table
from old_table
where ...;
# 备注:新表将会使用select语句中定义的列名和类型进行创建,也可以使用as子句来应用新的名称
从一个表复制数据,然后插入到另一个已经存在的表中
insert into table_aim
select * from table_source;
# 只复制目标列到另一个已经存在的表中
insert into table_aim
(column_name(s))
select column_name(s)
from table_source;
create table table_name
(
column1 int,
column2 varchar(255),
...
);
create table table_name
(
id int not null;
...
)
# 添加not null 约束
alter table table_name
modify id int not null;
# 删除not null约束
alter table table_name
modify id int null;
# 创建表添加unique约束语法由数据库种类决定
# 不同数据库alter table 时添加、撤销此约束时语法亦有差异
创建索引,在不读取整个表的情况下,可以更快查找数据
create index index_name
on table_name (column_name,.....)
# 不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值
# 使用create unique index ......
drop table table_name
drop database database_name
# 删除索引视数据库决定
# 删除表中数据,而不删除表本身
truncate table table_name
# 在表中添加列
alter table table_name
add column_name datatype
# 修改表中列的数据类型
alter table table_name
alter column column_name datatype
# 删除表中列
alter table table_name
alter column column_name
新纪录插入表中时生成一个唯一的数字
create table table_name
(
id int not null auto_increment,
......
)
# 默认开始值是1,递增1
# 从固定值开始递增如下:
alter table table_name auto_increment=100
基于sql语句的结果集的可视化的表
create view view_name as
select column_name(s)
from table_name
where condition
select * from table_name
where column_name is not null
用于结合聚合函数,根据列对结果集进行分组
select column_name , arrregate_function(column_name)
from table_name
where column_name operator value
group by column_name
解决where关键字无法和聚合函数一起使用的问题,可以让我们筛选分组后的各组数据
select column_name,aggrefate_function(column_name)
from table_name
where column_name operator value
group by column_name
having aggregate_function(column_name) operator value;
判断查询子句是否有记录,如果有一天或者多记录则返回存在true,反之返回false
select column_name(s)
from table_name
where exists
(select ......);
以上是本人在菜鸟教程中复习sql基础知识的部分总结笔记,内容比较笼统,更多内容请访问
[菜鸟教程–SQL教程](SQL 教程 | 菜鸟教程 (runoob.com))