数据库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()

转载于:https://www.cnblogs.com/hql1117/p/11283594.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值