zoukankan      html  css  js  c++  java
  • mysql基础

    insert into 表名(field1,field2,field3...) values(value1,value2,value3...),(value11,value22,value33...);

     

    update 表名 set field1=new_value,field2=new_value where 条件

    注意:

    a.完全可以更新一个字段或者多个字段
    b.where相当于Python中的if语句
    c.可以指定任何条件到where子句中
    d.如果没有where子句,则默认所有的行都被同时更新为指定的操作

     

    delete from 表名 where 条件

    注意: a.如果where子句没有指定,则默认将表中的数据全部删除 b.可以指定任何条件在where子句中

    #删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少

    #Truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用

    注意: delete: 删除表中的数据,表结构还在,删除之后的数据可以找回, 不会重置自动递增的数据; 例如(id int auto_increment primary key) truncate: 不但删除表中的数据,还drop掉了表结构,删除的数据是不能找回的,执行速度比delete快,会重置自动递增的数据.

     

    1.基础查询

    select * from student;

    2.条件查询

    主要结合where的使用

    between...and:介于。。和。。。之间

    and:逻辑与

    or:逻辑或

    in:类似于Python中的成员运算符

    not in:

    is:类似于Python中的身份运算符

    is not:

    3.模糊查询

    where子句中=表示精准查询

    like 通配符:一般情况下结合where子句使用

    通配符:

    _:匹配任意一个字符

    %:匹配0~n个字符【n大于等于1】

    例: select * from student where name like '_c%';

    4.字段控制查询

    as:起别名,用法 :select 字段 as 别名

    ifnull:将null转换为其他数据,用法,ifnull(字段名,其他数据)

    distinct:去除重复记录

    distinct 字段名: 根据指定字段去重 ;  

    对于需要返回stu表中2列以上的结果时会有歧义, 比如:

    例1: select distinct id, name from stu;

    实际上返回的是 id与name同时不重复的结果,也就是DISTINCT同时作用了两个字段,必须得id与name都相同时才会去重.

    例2: select id,distinct name from stu;

    这里id和name会发生冲突, 去了重的name对应的id有好几个,不知道显示哪个id,会报错;

    order by : 排序,指定数据返回顺序

    asc:ascending,升序

    desc:descending,降序

    用法:select from 表 order by xxx

    #1.查询所有的记录,按照年龄升序排序 select * from student order by age asc;

    #2.查询所有学生记录,按照年龄降序排序,如果年龄相等,则按照编号进行升序排序 select * from student order by age desc,id asc;

    聚合函数

    1.count():统计指定列不为null的记录行数

    count(*)  它返回检索行的数目(对行数目进行计数), 不论其是否包含 NULL值。

    count(column_name) 对列中不为null的行进行计数, 若找不到匹配字段的项,则count()返回 0 ;(所以分组后,指定匹配列的项全为null时,返回0)

    count(distinct 字段名) 返回不同的非NULL值数目。

    2.sum():计算指定列的数值和

    例: select sum(age) from student;

    3.求指定列中的最大值和最小值

    max():

    min():

    例: select max(age),min(age) from student;

    4.avg():求平均数

    例: select avg(age) from student;

    总结: 查询关键字的书写顺序:select 聚合函数 from where order by

    5.分组查询

    group by:分组查询

    having:有...,表示条件,类似于where的用法

    例: select deptno,sum(sal) from emp group by deptno having sum(sal)>7000;

    having和where的区别:

    a.二者都表示对数据执行条件

    b.having是在分组之后对数据进行过滤

      where是在分组之前对数据进行过滤

    c.having后面可以使用聚合函数

          where后面不可以使用聚合函数

     

    6.分页查询

    limit m n:从下标m开始查询,查询n行; 下标从0开始

    例: select * from emp limit 0,4; 查询4行记录,起始行从0开始

     

    总结:

    **查询语句书写顺序:select----》from---》where---》group by-----》having-----》order by----->limit**

    **查询语句的执行顺序:from----》where-----》group by----》having----》select-----》order by----》limit**

     

    7.多表查询

    表与表之间的关系

    一对一

    通过嵌套的方式

    一对多【多对一】

    添加外键

    多对多

    单独创建一张新的表

    连接查询

    1.内连接

    特点:查询结果必须满足条件

    select s.stuid,s.stuname,c.score,c.courseid from student s join score c on s.stuid=c.stuid;

    等价写法:

    select s.stuid,s.stuname,c.score,c.courseid from student s,score c where s.stuid=c.stuid;

    2.外连接

    特点:以其中一个表作为参照连接另外一个表

    参照表数据全部显示, 另一个表没有对应相同字段的显示为null

    左外连接: left join on

    右外连接:right join on

     

    8.子查询

    a.子查询出现的位置:

        from后

    where子句的后面,作为条件的一部分被查询

    b.当子查询出现在where后面作为条件时,可以使用关键字:any、all

    c.子查询结果集的形式

        单行单列

    单行多列
    多行多列

    多行单列

     

     

    数据库的备份和恢复

    备份

    生成SQL脚本,导出数据

    命令:mysqldump -u root -p 数据库名>生成sql脚本的路径

    注意:可以不需要登录数据库

    演示: rock@rockrong:~$ mysqldump -u root -p mydb1>/home/rock/Desktop/mydb1.sql Enter password:

     

    恢复

    执行sql脚本,恢复数据

    命令: source sql脚本存放路径

    前提:必须先创建数据库【空的】

    注意:需要先登录数据库,然后进入指定的数据库,执行sql脚本

    演示: source /home/rock/Desktop/mydb1.sql;

    事务使用

    执行语句说明
    start transaction 执行开始事务命令后,下面将进入事务模式.
    update、delete、insert 操作 在事务执行后,这些操作只在内存状态下进行,而不是在物理状态下
    commit 在事务执行完成后,确认执行无误且成功,就可以使用commit把内存中执行的结果,提交到物理内存中
    rollback 如果在事务执行过程中,发生了错误,则可以使用rollback命令回滚到上一个事务操作

     

    python操作mysql

    import pymysql

    1.连接mysql

    con = pymysql.connect('localhost','root','password','mydb')

    2.创建游标对象,可以执行sql语句

    cursor = con.cursor()

    3.写sql语句

    sql=''

    4.执行sql语句

    cursor.execute(sql) 执行sql

    con.commit() 提交事务 (增删改需要提交, 查询不需要)

    查询数据:

    1. res = cursor.fetchone() 每次执行获取查询的下一条数据

    2. res = cursor.fetchall() 获取查询的所有数据

    3. res = cursor.fetchmany(3) 获取查询的前3条数据

    4. cursor.rowcount() 总的数据条数

    5.关闭游标对象和mysql连接

    cursor.close() 关闭游标

    con.close() 关闭连接

     

     

     

     

  • 相关阅读:
    11.6八校联考T1,T2题解
    NOIP2014解方程
    luogu P2107 小Z的AK计划
    差分及树上差分学习笔记
    Noip2015提高组解题报告
    日常个人训练计划
    dij 费用流
    哈尔滨站总结
    SOSdp
    2018-2019 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2018)
  • 原文地址:https://www.cnblogs.com/Deaseyy/p/10859822.html
Copyright © 2011-2022 走看看