zoukankan      html  css  js  c++  java
  • 数据库3

    1.单表查询补充

    1.select 想要的列 from 表
    2.where 先从这张表中查询的行
    3.group by 分组
    4.having 对组过滤
    5.order by 排序
    6.limit 取一个区间

    分组 group by

    select * from 表 group by 字段名

    根据重复率比较高的字段进行分组,例如:根据男女分组等.

    去重作用,分组过后就不能对具体的数据进行操作了.

    聚合函数: 一般都是和分组一起用,如果没有和分组一起使用,默认一张表就是一组.

    count(id) / count(*) 计数 :每个组对应几条数据
    max 求最大值: 这个组中某字段的最大值
    min 求最大值: 这个组中某字段的最小值
    avg 求平均值
    sum 求和值

    例子

    select min(hire_date) from employee     (聚合)
    求employee中所有人里最早入职的时间
    select min(hire_date) from employee group by post  (分组聚合)
    求每个部门中入职最早的时间
    
    求各部门薪资大于1w的人的个数
    select post,count(id) from employee where salary >10000 group by post;(分组聚合加条件)
    
    

    having 过滤条件

    就是一个对组进行筛选的条件.筛选过后的对象是组.

    例子

    要部门人数大于3个人的部门 count(id)>3
    select post from employee group by post having count(id)>3;
    

    order by 排序

    order by 字段 默认升序 从小到大排列
    order by 字段 asc 升序,从小到大排列
    order by 字段 desc 降序,从大到小排列

    order by 字段1,字段2 默认升序,在字段1相同的情况下,根据字段2升序,结合着排序
    order by 字段1 asc,字段2 desc 字段1升序,在字段1相同的情况下根据字段二的大小降序
    order by 字段1 desc,字段2 asc 字段1降序,在字段1相同的情况下根据字段二的大小升序
    order by 字段1 desc,字段2 desc 字段1降序,在字段1相同的情况下,根据字段2降序

    例子

    select * from employee order by age,salary;
    select * from employee order by age asc,salary desc;
    select age,salary from employee order by age asc,salary desc;
    查看employee的age,salary 的排列
    

    limit 取一个区间

    1.显示分页

    limit m,n / limit n offset m (这种写法不怎么用,一般都用limit m,n)

    表示从m+1开始,取n条
    limit 0,6 表示从1开始取6条
    limit 6,6 表示从7开始取6条
    limit 12,6 表示从13开始取6条
    limit 18,6 表示从19开始取6条

    2.取前n名

    limit n 表示取前n名,这里m默认为0

    可以和order by一起用.

    例子

    select * from employee limit 3;  取前3三行
    select * from employee limit 2,3; 从第3个开始取3条
    select * from employee order by age limit 2,3;  和order by 一起用
    

    2.拾遗

    1.表操作

    创建 crate table
    删除 drop table
    查看表结构 desc 表/show create table 表
    修改表
    表字段: id, age, name ,varchar(255)
    修改表名 alter table 表名 rename 新表名
    添加新字段 alter table 表名 add 新字段 类型(宽度) 约束;
    add 新字段 类型(宽度) 约束 after id (在id字段后添加新字段)
    add 新字段 类型(宽度) 约束 first id (在id字段前添加新字段)
    删除字段 alter table 表名 drop 字段名;
    修改字段名 alter table 表名 change 旧字段 新字段 类型(宽度) 约束;
    change name username char(12) not null
    change name name char(12) not null
    change name name varchar(255) after id;
    添加新类型和新约束 alter table 表名 modify 存在的字段 新类型(新宽度) 新约束;
    modify name char(12) unique;
    modify name char(12) unique after id;

    2.数据操作

    字段名 : id ,name ,gender
    增加
    insert into 表名 value (1,'alex','female')
    insert into 表名 values (1,'alex','female'),(1,'alex','female');
    insert into 表名(name,gender) values ('alex','female'); *****
    insert into 表名(name,gender) select (username,sex) from day38.表2;
    删除
    delete from 表名 where 条件
    修改
    update 表名 set 字段=值1 where 条件
    update 表名 set 字段1=值1,字段2=值2 where 条件

    单表查询

    3.Python操作数据库

    1.查询

    import pymysql
    conn = pymysql.Connection(host='127.0.0.1', user='root', password="123",
                      database='day40')
    cur = conn.cursor()   (游标 数据库操作符)
    sql = 'select emp_name,salary from employee where age = %s'
    cur.execute(sql,(80,))
    获取结果
    ret1 = cur.fetchone()
    ret2 = cur.fetchmany(2)
    ret3 = cur.fetchall()
    print(ret1)
    print(ret2)
    print(ret3)
    cur.close()
    conn.close()
    

    2.insert语句 写入

    import pymysql
    conn = pymysql.Connection(host='127.0.0.1', user='root', password="123",
                      database='day40')
    cur = conn.cursor()   (游标 数据库操作符)
    username = '太亮'
    sql = 'insert into employee(id,emp_name,sex,age,hire_date) values(%s,%s,"female",88,20170707)'
    cur.execute(sql,(21,username,))
    conn.commit()
    cur.close()
    conn.close()
    

    3.文件操作数据库

    conn = pymysql.Connection(host='127.0.0.1', user='root', password="123",
                    database='day40')
    cur = conn.cursor()   (游标 数据库操作符)
    cur.excute(sql,(值1,))
        # 查询
            # fetchone fethmany(10) fetchaLL
        # 插入更新删除
            # conn.commit()
    # cur.close()
    # conn.close()
    
  • 相关阅读:
    基于贝叶斯概率模型的单幅图像去运动模糊算法
    Hihocoder 1067 最近公共祖先二
    HDU 2855 Fibonacci Check-up 矩阵
    HDU 2276 Kiki & Little Kiki 2 矩阵
    HDU 3483 A Very Simple Problem 矩阵构造
    HDU 2807 The Shortest Path 矩阵 + Floyd
    HDU 5015 233 Matrix 矩阵快速幂
    ZOJ 3497 Mistwald 矩阵
    POJ 3233 Matrix Power Series 矩阵等比数列求和
    HDU 2157 How many ways?? 矩阵
  • 原文地址:https://www.cnblogs.com/hql1117/p/11283594.html
Copyright © 2011-2022 走看看