show tables; 查看所有的表
新建一个kai_user的表
create table kai_user 创建表名为"kai_user"
(id int(5)primary key auto_increment,
name varchar(20)not null,
class int(5),
phone bigint(20)default"13511111111",
time date);
数据类型;
int 整型,最大存储为2147483647(10位以下用)
bigint 长整型,存储手机号
varchar 存字符串(存的数据需要加单引号和双引号)
date 时间 如“2022-01-17”
float 浮点型 ,小数
常见的约束有哪些?
primary key 主见约束,字段值必须是唯一的,不能重复(例如省份证号,有一个且仅一个)
auto_increment 自增长约束 (例:1条添加一条,自动编码变为2)
not null 非空约束
default 默认值约束
foregin key 外键约束
【对表结构的修改】
desc kai_user 查看表结构
alter table kai_user rename fen; 将kai_user表名修改为fen;
alter table fen change id sid int(10); 将表fen的id字段修改为sid并且去掉自增长约束
alter table fen change sid id int(5)auto_increment; 将fen的sid字段修改为id并且自增长约束
alter table fen add id2 int(10); 添加id2这个字段
alter table fen add (id3 int(5),id4 int(5)); 同时增加id3,id4两个字段
alter table fen add id5 int(5)first; 将id5这个字段放到最前面(只针对新建的)
alter table fen add id6 int(6)after phone; 将id6字段放在phone字段后面
alter table fen drop id5 ; 将id5这个字段删除
alter table fen drop id6,drop id2,drop id3,drop id4; 同时删除多个字段
drop table fen; 删除fen这个表
【对表数据的操作】
增 删 改 查
增加: insert into
insert into fen(id,name,class,phone,time)valuse(1,"xiaozhang",1005,13476123986,"2002-01-17"); 增加对应字段的值(id=1,name=xiaozhang,class=1005,phone=13476123986,time=2002-01-17)
insert into fen(name)values("xiaoli");
insert into fen(name)values("xiaozhang"),("xiaowang"),("xiaowei");
"0"不等于null,null指的是空的属性 0是代表一个值。
删除: delete from fen where id=6; 删除id等于6 的数据
delete from fen; 删除整个表的数据
drop table fen ; 删除表数据和表结构
truncate fen; 删除表数据
修改:update fen set phone=13476123999 where id=2; 修改id等于2的数据
update fen set phone=13499999999 where id<=5; 修改id小于等于5的phone 数据
查找:select * from fen; 查询所有数据
select * from fen where name='xiaoli'; 查询表里面name为xiaoli的所有数据;
select id from fen where name='xiaoli'; 查询单个字段
select id,phone from fen where name='xiaoli'; 查询多个字段
单表查询
select * from fen; 查询fen表里面所有数据
select name from fen; 查询单个字段值
select name,id from fen; 查询多个字段值
select * from fen where name="xiaoli" ; 查找name等于xiaoli的所有字段值
select * from fen where phone != '13476123986'; 查找手机号不为13476123986的数据
select * from fen where phone <>'13476123986'; 查找手机号不为13476123986的数据
select * from fen where class =1004 and phone=134999999999;查询班级为1004且phone是13499999999的所有数据
select * from fen where class =1004 or phone=134999999999;查询班级为1004或者phone是13499999999的所有数据
select * from fen where id>=2 and id<=5; 查询id大于等于2和小于等于5的所有数据
select * from fen where id between 2 and 5; 查询id大于等于2或者小于等于5的所有数据
select * from fen where class in(1005,1004); 查询class为1004或1005
select * from fen where class not in(1005,1004); class不在1004或1005里面的数据
select * from fen where time is null; 查询time为空的数据,不能直接用=null
select * from fen where time is not null; 查询time不为空的数据
select * from fen where name like"%li%"; 查询name字段所有含有li的数值
select * from fen where name like"xiao%"; 查询name字段所有以xiao开头的所有数据
select * from fen where name like"%ang"; 查询name字段所有以ang结尾的所有数据
select * from fen name limit 1,4; 查询2到5的数据(2-1,5-1)
select * from fen name limit 0,5; 查询前5行的数据(0,0+5)
limit m,n m为下标,n为查询行数
排序
从小到大--升序
select * from fen order by class asc;
从大到小--降序
select * from fen order by class desc;
分组
select * from fen group by class; 通过class 字段分组班级
select class,count(*) from fen group by class; 通过class字段分组之后,求出每个组的人数
select class,count(*) from test group by class having class is not null;通过class字段进行分组然后加条件class不为null
注:
1.group by 分组之后,只能使用having进行条件筛选
2.使用 group by 分组之后,仅有分组字段和函数放置到from 前面
常用的聚合函数
count()------统计
sum()--------求和
avg()----------求平均值
max------------最大值
min------------最小值
distinct()-------去重
select count(*) from fen; 统计fen 这个表的数据
select sun(id) from fen where class=1003; 求class为1003班的id的和
select avg(id) from fen where class=1003; 求class为1003班的id的平均值
select max(id) from fen; 求id的最大值
select min(id) from fen; 求id的最小值
select distinct(phone) from fen; 对phone字段进行去重 (去phone 字段掉重复的数据)
|
|