创建时间:2016-10-19
表中数据的增、删、改 sql语句操作
插入数据
insert into 表名 values(null, "苹果手机", 8888);
删除数据
语法:delete from tb_表名 where 运算符 值;
从tb_xx删除 id = 4的这条记录
delete from tb_xx where id = 4;
更新数据
语法:update tb_表名 set 字段 = "值" where 条件;
更新tb_xx, 条件是 id=1 将该记录的name值改为刘凯
update tb_xx set name = "刘凯" where id = 1;
基本查询、单表查询
查询整个表的所有值
语法:select 字段名|* from 表名 where 运算符 值
*号代表所有字段
select * from tb_xxx;
查询指定字段的值
从tb_xx查询出字段为name,age的所有值
select name,addr from tb_student
给字段取别名
语法:select 字段 as 别名, 字段 as 别名,from tb_表名
select id as 学号, name as 姓名,sex as 性别,addr as 籍贯 from tb_student;
条件查询where【运算符】值
运算符 in 查出指定集中的数据
案例:从tb_xx表查出id=1跟id=3的数据
select * from tb_student where id in(1,3);
运算符 not in 查出不在指定集合中的数据
案例:从tb_xx表查出除了id=1跟id=3以外的所有数据
select * from tb_student where id not in(2,3);
运算符 between and 查出某个范围之内的数据
案例:从tb_student查出age值为8到20之间的数据
select * from tb_student where age between 8 and 20;
运算符 not between and 查出不在某个范围之内的数据
案例:从tb_student查出age值除了8到20之间以外的所有数据
select * from tb_student where age not between 8 and 20;
运算符 like 模糊查询
案例:从tb_student查出何开头的任意多个字符数据
select * from tb_student where name like "何%";
% 表示任意多个字符
_ 表示任意一个字符 需要匹配多个可以加多个_下划线
运算符 regexp 查出与正则匹配的数据
案例:从tb_student查出湖北开头的数据
select name,age,addr from tb_student where addr regexp "^湖北";
运算符 or 或 查出or两边为真的数据
案例:从tb_student查出age值大于30或id=2的数据
select * from tb_student where age>30 or id=2;
运算符 and 且 查出满足and条件的数据
案例:从tb_student查出name值为 刘开头且 addr值为江西开头的数据
select * from tb_student where name like "刘%" and addr like "江西%";
运算符 is null 查出字段没有值的数据
案例:从tb_student查出该字段值为空的数据
select * from tb_student where age is null;
#limit 限制查询条数
案例:查询0开始到第3条记录
select * from tb_student limit 0,3
运算符 order by 字段
案例:以age字段的值以升序或降序进行排序显示列表
select * from tb_student order by age asc select * from tb_student order by age desc
asc升序|desc降序

运算符 group by 分组
案例:按性别查出分组所有同学姓名
select name,sex form tb_student group by sex;
查询结果如下:

函数group_concat(字段) 连接
案例:按照sex字段分组,把组里面name字段的值用group_concat连接起来
select group_concat(name),sex from tb_student group by sex;
查询结果如下

运算符 函数 having 对分组进行过滤
案例:按照sex字段分组,把组里面name字段的值用group_concat连接起来,然后用having过滤出sex值为男的数据
select group_concat(name) 成员,sex 性别 from tb_student group by sex having sex="男";
查寻、多表查询
学生表

课程表

成绩表

inner join 内连接
案例:查出年龄在25岁以下的同学的姓名,所学的课程及成绩信息
三表查询【学生表tb_student 、成绩表 tb_chengji、课程表 tb】
select x.name,k.cname,c.grade from tb_student x inner join tb_chengji c on x.id=c.sid inner join tb_kecheng k on c.cid=k.id where x.age=25;
语法解释:
select x.name,k.cname,c.grade———— 查出学生表的name、成绩表的cname、课程表的grade
from tb_student x inner join tb_chengji c————关联学生表跟成绩表,给学生表命名x,给成绩表命名k
on x.id=c.sid inner join tb_kecheng k———— 找出学生表字段id跟成绩表sid匹配的值 并关联课程表字段命名c
on c.cid=k.id———— 找出成绩表cid跟课程表id匹配的值
where x.age=25;———— 条件 是 要学生表里面的age字段的值等于25
left join 左外链接 以左表为准查出与右表的交集
说人话就是:查出左表需要查询的所有数据,右表就算是空的 也要查出来
案例:查出姓名,年龄,性别,籍贯,条件是没有成绩的同学信息
select s.*,g.grade from tb_student s left join tb_grade g on s.id=g.id where g.grade is null;

right join 右外链接 以右表为准查出与左表的交集
案例:以右表(成绩表)为准,查出所有有成绩的数据
setect s.*,g.grade from tb_student s right gion tb_grade g on s.id=g.sid

union 全连接
(左链接) union (右链接)
案例:查出左表的所有数据 跟 右表的所有数据
(select s.*,g.grade from tb_student s left join tb_grade g on s.id=g.id) union (setect s.*,g.grade from tb_student s right gion tb_grade g on s.id=g.sid)

备份与恢复
备份与恢复必须是在开始菜单cmd下面操作,操作前必须设置电脑预定义变量,path的值改为mysql文件路径
mysqldump -uroot -p --database zjwdb_569598 >d:zjwdb_569598 备份
mysql -uroot -p
恢复
切换到 安装mysql的安装磁盘
cd D:wampinmysqlmysql5.5.24in
mysql -uroot -p 《d:xxx.sql
——————————————————————————————————
mysql预定义函数
sum(字段); 求和
max(字段) 最大值
min(字段) 最小值
avg(字段)平均值
count(字段)统计记录数
上一篇:7.02-数据库基本操作
下一篇:7.06-php操作数据库