美文网首页数据库
mysql的增删改查以及备份数据库

mysql的增删改查以及备份数据库

作者: 陆_志东 | 来源:发表于2018-06-26 17:17 被阅读1次

    执行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,多的不显示

    右连接的结果是除了匹配条件的数据还包含右边表中的所有数据,理论同左连接一样

    相关文章

      网友评论

        本文标题:mysql的增删改查以及备份数据库

        本文链接:https://www.haomeiwen.com/subject/nldmyftx.html