mysql从创库到查询基本命令
创建数据库
创建数据库 'db_my ',并设置为utf-8编码
create database if not exists db_my character set = utf8;
show databases; 显示数据库
use db_my; 切换到数据库 db_my
drop database if exists db_my; 删除数据库 db_my;
创建表
字段id 为主键,且自增从1开始
字段createtime 的类型为timestamp,该时间类型支持默认值,以当前时间为默认值
desc tb_prd; 查询表结构
alter table tb_prd add index index_id (id); 增加索引,索引名为index_id 索引列(id);
alter table tb_prd add email varchar(50) not null; 增加列 email varchar(50) not null
alter table tb_prd modify user varchar(40) not null; 把列user修改为 user varchar(40),原来是 user varchar(30) not null
修改后的表结构
rename table tb_prd to tb_pra; 修改表名tb_prd为tb_pra;
drop table if exists tb_pra; 删除表 tb_prd,如果存在的话
插入数据
insert into tb_pra values (1,‘name_a’,‘123’,now(),‘myqq@qq.com’);
也可以指定列插入数据
insert into tb_pra (user,password,email) values (‘name_b’,‘456’,‘qq@163.com’);
多行插入数据,数据部分之间以逗号隔开
insert into tb_pra (user,password,email) values (‘name_a’,‘123’,‘myqq@qq.com’),(‘name_b’,‘456’,‘qq@163.com’);
修改数据
update tb_pra set password=‘123’ where id=2;
删除数据
delete from tb_pra where id=2;
数据查询
select * from tb_prd; 查询表的所有列所有行
select user,password from tb_prd;查询表的user,password所有行
条件查询
select * from tb_prd where id=1; 查询id=1的记录
in语句
select * from tb_prd where password in (‘123’,‘456’); 即password的值与括号内的值相符的记录,可理解为password=‘123’ or passowrd=‘456’
between and 语句
select * from tb_prd where id between 1 and 3;可理解为 1<=id and id<=3
(and 指多个结果true则true, or 则指有一个结果为true 则true)
带like的字符匹配查询
select * from tb_prd where createtime like “2018-10-13%”;
‘%’可以匹配一到多个字符(最少0个字符)
select * from tb_prd where createtime like “2018-10-13%”;
'_‘只能匹配一个字符(一定要匹配一个字符)’
select * from tb_prd where user like “name_”; 不会匹配到name
is null
如何值为null,则会返回true,否则返回false
select * from tb_prd where id is null;
select * from tb_prd where od is not null;
distinct 去除结果中的重复行
select distinct password from tb_prd;
只会显示字段password的非重复结果
order by 对查询结果排序
order by 字段名 [asc|desc] asc升序(默认),desc降序
按多个字段排序,先比较password,如果 password相同,再比较id
select * from tb_prd order by password asc,id desc;
group by 分组 ,将数据划分到不同的组中
select count(*) from tb_prd group by password;将password相同的记录分成同一组
LIMIT 限制查询结果的数量
select * from tb_prd limit 3; 查询前3行
select * from tb_prd where id order by id asc limit 2,2;第一个参数2,指 跳过2条记录,即从第3条记录开始查询,第2个参数 2 指查询数据结果数量2条
聚合函数
count()
select count(*) from tb_prd;
select count(id) from tb_prd;
统计选择集合中非NULL值的行的数目
sum()
选择字段取值的总合
select sum(id) from tb_prd;
AVG()
所选择字段取值的平均值
select avg(id) from tb_prd;
MAX()
所选择取值的最大值
select max(id) from tb_prd;
MIN()
所选择取值的最小值
select min(id) from tb_prd;
连接查询
tb_pra
tb_prd
内连接
select tb_prd.user,tb_pra.user,tb_prd.password from tb_prd,tb_pra
where tb_prd.password=tb_pra.password;
左连接
将左表部分中的所有数据分别与右表中的每条数据进行组合,
包括左表中不符合条件的数据,并在右表的相应列中添加NULL值
select tb_prd.user,tb_pra.user,tb_prd.password from tb_prd left join tb_pra
on tb_prd.password=tb_pra.password;
右连接
与左连接相返,相当于tb_pra left join tb_prd;
select tb_prd.user,tb_pra.user,tb_prd.password from tb_prd right join tb_pra
on tb_prd.password=tb_pra.password;
exists 有则返回true,无则返回false
select * from tb_prd where exists (select * from tb_prd where id=0);
ANY表示 满足任意一个条件
select * from tb_prd where id <any (select id from tb_prd where id >=3);
ALL表示满足所有条件
select * from tb_prd where id <all (select id from tb_prd where id>3);
union 将查询的结果合并在一起并除去相同记录
select * from tb_prd where password=‘123’ union select * from tb_prd where password=‘456’;
union all 不会去除相同记录
内容比较基础,但讲述的比较繁琐,放入了大量执行结果的图片,希望有助于大家对这些命令的理解,多动手尝试。