#数据操作
/*关键字:insert 插入数据(增)*/
insert into 表名(字段列表) values (值列表);
例如: create table user(
id int(10) unsigned not null auto_increment comment 'id',
name char(10) not null default '' comment '名字',
age int(3) not null default 0 comment '年龄',
primary key (id)
)engine=InnoDB default charset=utf8 comment='用户表';
/*外键,一个特殊的索引,只能是指定内容*/
create table color(
nid int not null primary key,
name char(16) not null
)
create table fruit(
nid int not null primary key,
smt char(32) null ,
color_id int not null,
constraint fk_cc foreign key (color_id) references color(nid)
)
4.1 增
insert into 表 (列名,列名...) values (值,值,值...)
insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
insert into 表 (列名,列名...) select (列名,列名...) from 表
4.2 删
delete from 表
delete from 表 where id=1 and name='alex'
4.3 改
update 表名 set 字段1=新值1,字段n=新值n [修改条件]
例如:update 表 set name = 'alex'where id>1
4.4 查
4.4.1 普通查询
select * from 表
select nid,name,gender as gg from 表
a、条件
select * from 表 where id > 1 and name != 'alex' and num = 12;
select * from 表 where id between 5 and 16;
select * from 表 where id in (11,22,33)
select * from 表 where id not in (11,22,33)
select * from 表 where id in (select nid from 表)
b、限制
select * from 表 limit 5; - 前5行
select * from 表 limit 4,5; - 从第4行开始的5行
oracle 的分页:
SELECT *
FROM (SELECT a.*, ROWNUM rn
FROM (SELECT *
FROM table_name) a
WHERE ROWNUM <= 40)
WHERE rn >= 21
sql sever的分页
。。。
更多选项查询
4.4.2、数据排序(查询)
select * from 表 order by 列 asc - 根据 “列” 从小到大排列
select * from 表 order by 列 desc - 根据 “列” 从大到小排列
select * from 表 order by 列1 desc,列2 asc - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
4.4.3、模糊查询
select * from 表 where name like 'ale%' - ale开头的所有(多个字符串)
select * from 表 where name like 'ale_' - ale开头的所有(一个字符)
select count(*/字段名) from 数据表)——不建议conunt(*),建议用count(0)
2.聚合函数 max(),求某列的最大数值
select max(字段名)from 数据表
3.聚合函数min(),求某列的最小值
select min(字段名) from 数据表
4.聚合函数sum(),对数据表的某列进行求和操作
select sum(字段名) from 数据表
5.聚合函数avg(),对数据表的某列进行求平均值操作
select avg(字段名) from 数据表
6.聚合函数和分组一起使用
select count(*), group_concat(age) from students group by age;
1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
2、语法:group_concat([distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'])
分组
select num from 表 group by num
select num,nid from 表 group by num,nid
select num,nid from 表 where nid > 10 group by num,nid order nid desc
select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
select num from 表 group by num having max(id) > 10
特别的:group by 必须在where之后,order by之前
4.6、多表查询
a、连表
无对应关系则不显示
select A.num, A.name, B.name
from A,B
Where A.nid = B.nid
无对应关系则不显示
select A.num, A.name, B.name
from A inner join B
on A.nid = B.nid
A表所有显示,如果B中无对应关系,则值为null
select A.num, A.name, B.name
from A left join B
on A.nid = B.nid
B表所有显示,如果B中无对应关系,则值为null
select A.num, A.name, B.name
from A right join B
on A.nid = B.nid
b、组合
组合,自动处理重合
select nickname
from A
union
select name
from B
组合,不处理重合
select nickname
from A
union all
select name
from B