认识mysql(3)
认识mysql第三篇,发出的内容适合初学者,如果能持续关注我的博客,可以全面的掌握mysql的常用知识,后续我也会陆续发出python相关的知识,关注我,和我一共进步吧!
1、sql查询
1、执行顺序
3、select ...聚合函数 from 表名
1、where ...
2、group by ...
4、having ...
5、order by ...
6、limit ...
2、group by
1、作用 :给查询结果进行分组
2、示例
1、查询表中一共有几个国家
2、计算每个国家的平均攻击力
select country,avg(gongji) from sanguo
group by country;
3、查找所有国家中英雄数量最多的前2名的 国家名称和英雄数量
select country,count(id) as number from sanguo
group by country
order by number desc
limit 2;
3、注意
1、group by之后的字段名必须要为select之后的字段名
2、如果select之后的字段名和group by之后的字段不一致,则必须对该字段进行聚合处理(聚合函数)
3、having语句
1、作用
对查询的结果进行进一步筛选
2、示例
1、找出平均攻击力>105的国家的前2名,显示国家名和平均攻击力
select country,avg(gongji) as pjgj from sanguo
group by country
having pjgj>105
order by pjgj desc
limit 2;
3、注意
1、having语句通常和group by语句联合使用,过滤由group by语句返回的记录集
2、where只能操作表中实际存在字段,having可操作由聚合函数生成的显示列
4、distinct
1、作用 :不显示字段重复值
2、示例
1、表中都有哪些国家
select distinct country from sanguo;
2、计算蜀国一共有多少个英雄
select count(distinct id) from sanguo
where country="蜀国";
3、注意
1、distinct和from之间所有字段都相同才会去重
2、distinct不能对任何字段做聚合处理
5、查询表记录时做数学运算
1、运算符
+ - * / %
2、示例
1、查询时所有英雄攻击力翻倍
select id,name,gongji*2 as gj from sanguo;
## sudo apt-get install python3-pip
## sudo pip3 install pymysql
2、约束
1、作用 :保证数据的完整性、一致性、有效性
2、约束分类
1、默认约束(default)
1、插入记录,不给该字段赋值,则使用默认值
2、非空约束(not null)
1、不允许该字段的值有null记录
sex enum("m","f","s") not null defalut "s"
3、索引
1、定义
对数据库表的一列或多列的值进行排序的一种结构(btree方式)
2、优点
加快数据检索速度
3、缺点
1、占用物理存储空间
2、当对表中数据更新时,索引需要动态维护,降低数据维护速度
4、索引示例
1、开启运行时间检测 :set profiling=1;
2、执行查询语句
select name from t1 where name="lucy99999";
3、查看执行时间
show profiles;
4、在name字段创建索引
create index name on t1(name);
5、再执行查询语句
select name from t1 where name="lucy88888";
6、查看执行时间
show profiles;
5、索引
1、普通索引(index)
1、使用规则
1、可设置多个字段
2、字段值无约束
3、key标志 :mul
2、创建index
1、创建表时
create table 表名(...
index(字段名),index(字段名));
2、已有表
create index 索引名 on 表名(字段名);
create index name on t3(name);
3、查看索引
1、desc 表名; --> key标志为:mul
2、show index from 表名\g;
4、删除索引
drop index 索引名 on 表名;
2、唯一索引(unique)
1、使用规则
1、可设置多个字段
2、约束 :字段值不允许重复,但可为 null
3、key标志 :uni
2、创建
1、创建表时创建
unique(字段名),
unique(字段名)
2、已有表
create unique index 索引名 on 表名(字段名);
3、查看、删除 同普通索引
3、主键索引(primary key)
自增长属性(auto_increment,配合主键一起使用)
1、使用规则
1、只能有一个主键字段
2、约束 :不允许重复,且不能为null
3、key标志 :pri
4、通常设置记录编号字段id,能唯一锁定一条记录
2、创建
1、创建表时
(id int primary key auto_increment,
)auto_increment=10000;##设置自增长起始值
已有表添加自增长属性:
alter table 表名 modify id int auto_increment;
已有表重新指定起始值:
alter table 表名 auto_increment=20000;
2、已有表
alter table 表名 add primary key(id);
3、删除
1、删除自增长属性(modify)
alter table 表名 modify id int;
2、删除主键索引
alter table 表名 drop primary key;
4、外键索引
4、数据导入
1、作用 :把文件系统的内容导入到数据库中
2、语法
load data infile "/var/lib/mysql-files/文件名"
into table 表名
fields terminated by "分隔符"
lines terminated by "\n";
3、将scoretable.csv文件导入到数据库的表中
1、在数据库中创建对应的表
create table scoretab(
id int,
name varchar(15),
score float(5,2),
number bigint,
class char(7)
);
2、把文件拷贝到数据库的默认搜索路径中
1、查看默认搜索路径
show variables like "secure_file_priv";
/var/lib/mysql-files/
2、拷贝文件
sudo cp ~/scoretable.csv /var/lib/mysql-files/
3、执行数据导入语句
load data infile "/var/lib/mysql-files/scoretable.csv"
into table scoretab
fields terminated by ","
lines terminated by "\n";
4、文件权限
rwxrw-rw- 1 tarena tarena scoretable.csv
所有者 所属组
rwx : tarena用户
rw- : 同组其他用户
rw- : 其他组的其他用户(mysql用户)
r -> 4
w -> 2
x -> 1
chmod 644 文件名 rw-r--r--
5、excel表格如何转化为csv文件
1、打开excel文件 -> 另存为 -> csv(逗号分隔)
6、更改文件编码格式
1、用记事本/编辑器 打开,文件->另存为->选择编码
5、数据导出
1、作用
将数据库中表的记录导出到系统文件里
2、语法格式
select ... from 表名
into outfile "/var/lib/mysql-files/文件名"
fields terminated by "分隔符"
lines terminated by "\n";
3、把moshou库下的sanguo表英雄的姓名、攻击值、国家导出来,sanguo.txt
select name,gongji,country from moshou.sanguo
into outfile "/var/lib/mysql-files/sanguo.txt"
fields terminated by " "
lines terminated by "\n";
$ sudo -i
$ cd /var/lib/mysql-files/
$ ls
$ cat sanguo.txt
4、将mysql库下的user表中 user、host两个字段的值导出到 user.txt
select user,host from mysql.user
into outfile "/var/lib/mysql-files/user.txt"
fields terminated by " "
lines terminated by "\n";
本节完!
上一篇: redis高级