数据操作:
查询:select * fom 表名;
增加数据:
全列增加:insert into 表名 values(…);
缺省增加:insert into 表名(列1,…)values(值1,…);
同时插入多条数据:insert into 表名 values(…),(…)…;
或insert into 表名(列1,…)values(值1,…),(值1,…)…;
主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准。
修改:update 表名 set 列1 = 值1, … where 条件;
删除(物理删除):delete from 表名 where 条件;
逻辑删除(其实就是更新)update students set isDelete=1 where id=7;
然后做一个筛选 select * from students where isDelete=0;没有显示isDelete值为1的数据。
备份与恢复
数据备份:进入超级管理员 sudo -s
进入mysql库目录 cd /var/lib/mysql
运行mysqldump命令:mysqldump -uroot -p 数据库名 > ~/desktop/备份文件.sql
按提示输入mysql的密码。
数据恢复
连接mysql,创建数据库
退出连接 执行如下语句
creat database py31 charset=utf8;然后退出
mysql -uroot -p py31 < bak.sql 然后再次进入数据库进行查看
查询
select * from 表名;
from关键字后面写表名,表示数据来源于这张表。
select后面写表中的列名,如果*表示在结果中显示表中所有列。
在select后面的列名部分,可以使用as为列起别名,这个别名出现在结果集中。
如果要查询多个列,之间使用逗号分隔。
消除重复行 在select后面列钱使用distinct可以消除重复的行。
select distinct gender from students; 是否重复比较的是这一行当中所选的字段是是否都重复。
条件
使用where子句对表中的数据进行筛选,结果为true的行会出现在结果集中。
语法如下:select * from 表名 where 条件;
比较运算符:
= > < >= <= !=
查询id>3的学生。
逻辑运算符
and
or
not
查询编号大于3的女同学
查询编号小于4或没有被删除的学生
模糊查询
like
% 表示任意多个任意字符
_表示一个任意字符
查询姓henry的学生
范围查询
in表示在一个非连续的范围内
查询编号是1或3或8的学生
between…and…表示在一个连续的范围内。
查找id在3到8之间的男生
select * from students where id between 3 and 8 and gender=1;
空判断
注意:null与‘’是不一样的。
判空是is null
查询没有填写生日的学生
判非空is not null
查询填写了生日的学生
优先级
小括号,not,比较运算符,逻辑运算符
and比or先运算,如果同时出现并希望先算or,需要结合(来使用)
聚合
为了快速得到统计数据,提供了5个聚合函数
count(*)表示计算总行数,括号中写星与列名,结果是相同的。
查询学生总数:
max(列)mix(列)表示求此列的最大最小值。
查询女生的编号最大值
select max(id) from syudents where gender=0;
查询未删除的学生最小编号
查询男生的编号之和
查询未删除女生编号的平均值
分组
按照字段分组,表示次字段相同的数据会被放到一个组中
分组后,只能查询出相同的数据列,对于有差异的数据列无法实现在结果集中
可以对分组后的数据进行统计,做聚合运算。
查询男女学生的人数
分组后的数据筛
对比where与having
where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
having是对group by的结果进行筛选。
排序
select * from 表名 order by 列1 asc|desc,列2 asc|desc…
asc从小到大排序,即升序
desc从大到小排序,即降序
查询未删除男生学生信息,按学号降序
获取部分行
当数据量过大时,在一页中查看数据时一件麻烦的事情。
select * from表名 limit start,count;
从start开始,获取count条数据
start索引从0开始。
已知:每个显示m条数据,当前是第n页。
n从1开始 m=5
0,5=0,1,2,3,4
1,5=5,6,7,8,9
…
n start
1 0
2 m
3 2m
…
n (n-1)m
完整的select语句
select distinct * from 表名 where …
group by … having… order by… limit star,count
执行顺序
from 表名
where…
group by…
select distinct *
having…
order by …
limit star,count