从入门到自闭之Python--MySQL数据库的单表操作

单表查询:select * from 表 where 条件 group by 分组 having 过滤 order by 排序 limit n;
  1. 语法:

    select distinct 字段1,字段2... from 表名 where 条件 group by 组名 having 筛选 order by 排序 limit 限制条数

    1. 找到表:from
    2. 拿着where指定的约束条件,去文件/表中取出一条条记录
    3. 将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
    4. 执行select(去重):select * from 表名;
    5. 将分组的结果进行having过滤
    6. 将结果按条件排序:order by
    7. 限制结果的显示条数
  2. 优先级:from > where > group by> select > distinct> having>order by >limit
  3. 避免重复:distinct:
    • select distinct xx from 表名;
  4. 通过四则运算查询:
    • select xx(+ - * /) as 新名字 from 表名;
  5. 重命名:
    1. select emp_name,salary*12 as annul_salary from employee;
    2. select emp_name,salary*12 annul_salary from employee;
  6. concat():用于连接字符串
    • select concat(‘姓名 :‘,emp_name),concat(‘年薪:‘,salary*12) from employee;
    • CONCAT_WS() 第一个参数为分隔符,select concat_ws(‘|‘,‘a‘,‘b‘,‘c‘)用管道符分割数据
    • 结合CASE语句:case when语句 == if条件判断句
      SELECT
             (
                 CASE
                 WHEN emp_name = 'jingliyang' THEN
                     emp_name
                 WHEN emp_name = 'alex' THEN
                     CONCAT(emp_name,'_BIGSB')
                 ELSE
                     concat(emp_name, 'SB')
                 END
             ) as new_name
         FROM
             employee;
  7. where 约束:select xx,xxx from 表名 where xx=="值";
    1. 比较运算符:> < >= <= <> !=

      • 格式:select xx,xxx,xxxx from employee where 条件;
    2. between 80 and 100 值在80到100之间(包括80和100)
      • 格式:select xx,xxx,xxxx from employee where xx between xx and xx;
    3. in(80,90,100) 值是80或90或100
      • SELECT 字段 FROM employee
        WHERE 字段条件 in (xxxx,xx,xxxx,xxxx) ;
    4. like ‘e%‘: 通配符可以是%或 _ ,%表示任意多字符,_ 表示一个字符
      • select * from 表名 where 字段名 like ‘xx%‘;
    5. regexp 正则匹配:select * from employee where emp_name regexp ‘^jin‘
    6. 逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
    7. 关键字IS NULL(判断某个字段是否为NULL不能用等号,需要用IS)
      • select * from 表名 where 字段 is null;
  8. GROUP BY分组聚合
    1. 单独使用:

      1. select 字段名 from 表名 group by 字段名;
      2. select * from 表 where 条件 group by 分组:加条件
    2. GROUP BY关键字和GROUP_CONCAT()函数一起使用:
      • SELECT post,GROUP_CONCAT(emp_name) FROM employee GROUP BY post;#按照岗位分组,并查看组内成员名,
      • SELECT post,GROUP_CONCAT(emp_name) as emp_members FROM employee GROUP BY post;
    3. GROUP BY与聚合函数一起使用
      1. select post,count(id) as count from employee group by post;#按照岗位分组,并查看每个组有多少人
  9. 聚合函数:聚合函数聚合的是组的内容,若是没有分组,则默认一组
    1. count(字段名):计数
    2. max(字段名):最大值
    3. min(字段名):最小值
    4. avg(字段名):平均值
    5. sum(字段名):求和
    6. 格式:
      1. select count/sum/max/min/avg(字段名) from 表名;
      2. select count/sum/max/min/avg(字段名) from 表名 where 条件;
  10. having过滤(group by + 聚合函数):
    1. 执行优先级从高到低:where > group by > having
    2. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。
    3. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数
      例子:查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
      select post,emp_name,count(id) from employee group by post having count(id)<2
  11. order by排序
    1. 单列排序:

      1. select * from 表名 order by 字段名;默认升序
      2. select * from 表名 order by 字段名 asc; 升序
      3. select * from 表名 order by 字段名 desc;降序
    2. 多列排序:
      1. 例子:先按照age排序,如果年纪相同,则按照薪资排序

        1. select * from 表名 order by age,salary desc;
        2. select * from employee order by age desc,salary;
  12. limit:限制查询记录数
    1. select * from 表 order by 列 limit n; 取前n条
    2. select * from 表 order by 列 limit m,n; 从m+1开始,取n条
    3. select * from 表 order by 列 limit n offset m; 从m+1开始,取n条

原文地址:https://www.cnblogs.com/heyulong1214/p/12069852.html

时间: 2024-10-13 15:38:10

从入门到自闭之Python--MySQL数据库的单表操作的相关文章

Python中使用SQLAlchemy连接Mysql数据库(单表操作)

一,SQLAlchemy的安装 使用 $ easy_install sqlalchemy 或 $ pip install sqlalchemy 如果出现什么错,就进去root用户下进行安装试试,或者网上查查 >>> import sqlalchemy >>> 这样说明成功了,切记是小写哦 二,使用 理论我也不懂,自己查查资料,现在用一个小的案例说一下使用步骤 1,在进行数据操作之前要先连上数据库. >>> from sqlalchemy import

Python数据库操作 MySQL数据库与数据表操作#学习猿地

# MySQL数据库与数据表操作 + 数据库的操作 + 数据库创建 + 数据库删除 + 数据表的操作 + 数据表的创建 + 数据表的修改 (表结构) + 数据表的删除 ### 数据库的操作 #### 1.数据库的创建 ```mysql # 链接mysql数据库后,进入mysql后可以操作数据 # 1. 创建库 create database if not exists tlxy default charset=utf8: -- 1. 数据库 tlxy 如果不存在则创建数据库,存在则不创建 --

MySql 数据库、数据表操作

数据库操作 创建数据库 语法 语法一:create database 数据库名 语法二:create database 数据库名 character set 字符集; 查看数据库 语法 查看数据库服务器中的所有的数据库:show databases; 查看某个数据库的定义的信息:show create database 数据库名; 删除数据库 语法(慎用) drop database 数据库名称; 其他数据库操作命令 语法 切换数据库:use 数据库名; 查看正在使用的数据库:select da

基于MySql数据库的单表与多表联合查询

这里以学生 班级 身份证 以及课程为例 1,启动MySql数据库  开启服务 2.1.0新建一张班级表 备注:CHARSET = UTF8 (指定编码格式为utf8 防止中文乱码) /*班级表*/ CREATE TABLE CLASS_INFO( C_ID INT PRIMARY KEY, CLASS_NAME VARCHAR(20) not NULL )CHARSET = UTF8; 运行效果: 新建成功 2.1.1依次建好学生表(学生表有一个指向班级表的主键  以便做关联查询) /*学生表*

MySQL 数据库之单表查询

一.查询语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键字执行优先级 from where group by having select distinct order by limit 1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组 4

JAVA 操作远程mysql数据库实现单表增删改查操作

package MysqlTest; import java.sql.DriverManager; import java.sql.ResultSet; import com.mysql.jdbc.Connection; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.Statement; public class MysqlTest02 { public static void main(String[] args)

MyBatis实现Mysql数据库分库分表操作和总结

阅读目录 前言 MyBatis实现分表最简单步骤 分离的方式 分离的策略 分离的问题 分离的原则 实现分离的方式 总结 前言 作为一个数据库,作为数据库中的一张表,随着用户的增多随着时间的推移,总有一天,数据量会大到一个难以处理的地步.这时仅仅一张表的数据就已经超过了千万,无论是查询还是修改,对于它的操作都会很耗时,这时就需要进行数据库切分的操作了. MyBatis实现分表最简单步骤 既然文章的标题都这么写了,不如直接上干货来的比较实际,我们就先来看看如何实现最简单的分表. 1.我们模拟用户表数

【转】python mysql数据库 &#39;latin-1&#39; codec can&#39;t encode character错误问题解决

UnicodeEncodeError: 'latin-1' codec can't encode character "UnicodeEncodeError:'latin-1' codec can't encode character ..." This is because MySQLdb normally tries to encode everythin to latin-1. This can be fixed by executing the following comman

MySQL数据库存储过程动态表建立(PREPARE)

PREPARE statement_name FROM sql_text /*定义*/ EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/ DEALLOCATE PREPARE statement_name /*删除定义*/ 这是我项目当中用到的,用作参考使用: DELIMITER $$ DROP PROCEDURE IF EXISTS `gpsdata`.`sp_test`$$ CREATE DEFINER=`r