执行sql文件
使用source file_path(绝对路径)
备份数据库
mysqldump -uuser -ppassword database_name [table1,table2] > ./back.sql
如果不在数据库名后面写具体的表名的话就是备份整个数据库,写具体的表名只备份单张或者多张(依据你写几张表的表名)表
普通的插入(增)
插入单行
insert into students(id,name,age) value(1,"xiaodong",23);
插入的另一种方式
insert into students set id=1,name="nick",age="23";
插入多行
insert into students(id,name,age) values (1,"xiaodong",23),(2,"xiaowang",24),(3,"xiaohong",25);
插入现有的表数据到已有表中
insert into class1(name,age) select name,age from students;
插入现有的表数据到新创建的表中
select name,age into class2 from students;
删
删除满足条件的行
从students表删除id=1的数据
delete from students where id = 1;
从students表删除name为xiaodong的数据
delete from students where name = "xiaowang";
删除整个表
删除表students
drop table students;
改
修改class1表id为1的age为22
update class1 set age = 22 where id =1;
如果要修改多字段
update class1 set age=22,name="Nick" where id = 1;
查
精确查找
select * from students where id >2 order by id asc;
# asc 升序, desc 降序
查询所有行和所有列
select * from students;
查询指定行,部分列
select id,name from students where id =3;
查询空行
select * from students where age is null;
查询的时候使用常量
select name, 24 as age from students
显示查询结果时,把所有的age都为24,但没有更改数据库数据
返回限制的行数
查询前10条age的数据
select top 10 age from students;
查询前60%的name 数据
select top 60 percent name from students;
模糊查询
查询name为小开头的且名字为2位的符合条件的行的所有列数据
select * from students where name like "小%"
查询name以xiao开头的不限制名字位数的行的所有列数据
select * from students where name like "xiao*"
分组查询
查询学号,学号对应的平均成绩,以学号分组
select student_id,AVG(score) as 平均成绩 from students group by student_id
使用having子句进行分组筛选
查询成绩科目再2门以上的学生的学号,名字,总分
select student_id as 学号,name as 名字,SUM(score) as 总分 from students group by student_id having count(score)>2;
多表连接查询
查询表a和表b相同name值的记录,返回 a表的name字段,b表的age字段
select a.name,b.age from a,b where a.name = b.name;
使用inner join
inner join 会将两张表符合条件的数据整合到一行上面,供你查找
select a.name,b.age from a inner join b on (a.name = b.name)
外连接: 分为左连接left join和右连接 right join
左连接的结果是除了匹配条件的数据还包含左边表中的所有数据,表结构以左边的表为准,右边表不存在左边的表数据时,补齐null,多的不显示
右连接的结果是除了匹配条件的数据还包含右边表中的所有数据,理论同左连接一样
网友评论