python(二十九)——MySQL安装、python连接MySQL数据库
发布日期:2021-06-30 16:35:26 浏览次数:2 分类:技术文章

本文共 5114 字,大约阅读时间需要 17 分钟。

目录


MySQL

MySQL安装

MySQL的安装可以参考:

MySQL图形化界面navicat安装:

 

 

一、基本命令

1、启动服务

  • 说明:以管理员身份运行cmd
  • 格式:  net start 服务名称
  • 示例:  net start mysq157

2、停止服务

  • 说明:以管理员身份运行cmd
  • 格式:  netstop服务名称
  • 示例:  net stop mysq157

 

3、连接数据

  • 格式: mysq1 -u用户名-p
  • 示例: mysq1  -u root -p
  • 输入密码(安装时设置的)

4、退出登录(断开连接) 

  • quit或exit 

 

5、查看版本(连接后可以执行)

  • 示例: select version( );

6、显示当前时间(连接后可以执行)

  • 示例: select now();

7、远程连接

  • 格式: mysq1 -h ip地址 -u 用户名 -p 输入对方mysq1密码

 

二、数据库操作

1、创建数据库

  • 格式: create database 数据庠名charset=utf8;
  • 示例: create database sunck charset=utf8;

2、删除数据库

  • 格式: drop database 数据庠名;
  • 示例: drop database sunck ;

3、切换数据库

  • 格式:use数据库名;
  • 示例:  use sunck ;

4、查看当前选择的数据库

  • select . database( ) ;

 

三、表操作

 

1、查看当前数据库中所有表

  • show tables ;

2、创建表

  • 格式:create table表名(列及类型);
  • 说明:auto_ increment表明自增长  primary key主键   not null表示不为空
  • 示例: create table student( id int auto_ increment primary key,name varchar(20) not null);

3、删除表

  • 格式: drop table表名;
  • 示例:  drop table student ;

4、查看表结构

  • 格式:desc 表名;
  • 示例:desc student;

 

5、查看建表语句

  • 格式:  show create table表名;
  • 示例: show create table student;

6、重命名表名

  • 格式:  rename table 原表名 to 新表名;
  • 示例:  reanme  table car to newcar;

 

7、修改表

  • 格式: alter table 表名 add | change | drop 列名 类型;
  • 示例:alter table newcar add isDelete bit default 0

 

四、数据操作

 

1、增

a、全列插入

  •      格式: insert into表名values(...)
  •       说明:主键列是自动增长,但是在全列插入时需要占位,通常使用日,插入成功以后以实际数据为准
  •       示例:  insert into student values(日, "tom" ,19,1, "北京",0)

b、缺省插入

  • 格式: insert into 表名(列1,列2, values(値1, 値2,......);
  • 示例:  insert into student (name, age, address) values("1ilei" ,19,"_上海");

c、同时插入多条数据

  • 格式:  insert into 表名values(..:),(..·),...
  • 示例:  insert into student values(0, "hanmeimei" ,18,0, "北京",0)

2、删

  • 格式:  delete from 表名 where 条件;
  • 示例:  delete from student where id=4 ;
  • 注意:没有条件是全部删除,慎用

3、改

  • 格式: update 表名set 列1=值1,列2=值..... where 条件;
  • 示例:  update student  set  age=16 where id=7 ;
  • 注意:没有条件是全部列都修改,慎用

4、查

 

  • 说明:查询表中的全部数据
  • 格式: select  *  from表名;
  • 示例:  select * from . student ;

 

 

五、查

1、基本语法

  • 格式:select * from表名
  • 说明:
  • a、from关键字后面是表名,表示数据来源于这张表
  • b、select后面写表中的列名,如果是*表示在结果集中显示表中的所有列
  • c、在select之后的列名部分,可以使用as 来取别名,这个别名显示在结果集中
  • d、如果要查询多个列,之间使用逗号分隔
  • 示例:

          select * from student ;

          select  name ,  age from student ;

          select name as a, age from student;

2、消除重复行

  • 在select 后面列前面使用distinct可以消除重复的行
  • 示例:
  •       select gender from student ;
  •       select distinct gender from student ;

3、条件查询

  • a、语法
  •       select * from表名where 条件
  • b、比较运算符
  •    等于   =
  •    大于   >
  •    小于   <
       大于等于  >=
  •    小于等于   <=
       不等于  !=或<>
       需求:查询id值大于8的所有数据
       示例:  select  from student where id>8;
  • C、逻辑运算符
  •       and    并且
  •       or       或者
  •       not     非
  • d、模糊查询
  •      like   
  •       % 表示任意多个任意字符
  •       _  表示一个任意字符
  • e、范围查询
  •       in                    表示在一个非连续的范围内
  •       between...and...  表示在一个连续的范围内
  • f、空判断
  •          注意:null与""是不同的
  • 判断空: is null

    判断非空:  is not nu11

    需求:查询没有地址的同学

    示例: select * from student where address is null ;
    需求:  查询有地址的同学
    示例:  select * from student where address is not null ;

  • g、优先级
  • 小括号,not比较运算符,逻辑运算符
    and比or优先级高,如果同时出现并希望先选or,需要结合()来使用

4、聚合

  • 为了快速等到统计数据,提供了5个聚合函数
  • a、count(*)  表示计算总行数,括号中可以写*和列名
  • b、max(列)  表示求此列的最大值
  • c、min(列)  表示求此列的最小值
  • d、sum( 列)  表示求此列的和
  • e、avg(列)  表示求此列的平均值
  •      需求:查询学生总数
  •      示例:  select count(* ) from student ; 

5、分组

  • 按照字段分组,表示此字段相同的数据会被放到一个集合中。
  • 分组后,只能查询出相同的数据列,对于有差异的数据列无法显示在结果集中
  • 可以对分组后的数据进行统计,做聚合运算
  • 语法: select 列1,列2,聚..... from 表名 group by 列1,列2,列3...
  • where与having的区别:

    where是对from后面指定的表进行筛选,属于对原始数据的筛选
    having是对groupby的结果进行筛选

6、排序

语法: select * from 表名 order by 列1 asc desc,列2 asc l desc

说明:

  • a、将数据按照列1进行排序,如果某些列1的值相同,则按照列2进行排序
  • b、默认按照从小到大的顺序排序
  • c、asc降序
  • d、desc升序

7、分页

 

语法:  select* from 表名 limit start , count ;

说明: start  索引从0开始

示例:

  • select * from student limit 0,3
  • select * from student limit 3,3
  • select * from student where gender=1 limit 0,3

 

 

关联查询:

      select students. name, class.name from class inner join students on class. id=students. classid;
      select students. name,class.name from class left join students on class. id=students. classid;
分类:
1、表A inner join 表B:
      表A与表B匹配的行会出现在结果集中

2、表A left join 表B:

      表A与表B匹配的行会出现在结果集中,外加表A中独有的数据,未对应的数据使用null填充

3、表A right join 表B:

      表A与表B匹配的行会出现在结果集中,外加表A中独有的数据,未对应的数据使用null填充

 

python连接MySQL数据库

python要连接MySQL数据库,需要安装PyMySql包

例子:使用python代码获取MySQL的版本号

import pymysql#连接数据库#参数1:mysql服务所在的主机IP#参数2:用户名#参数3:密码#参数4:要连接的数据库名db = pymysql.connect('localhost','root','passwd','class')#创建一个cursor对象cursor = db.cursor()#sql语句打印版本号sql = 'select version()'#执行sql语句cursor.execute(sql)#获取返回的信息data = cursor.fetchone()print(data)#断开连接cursor.close()db.close()

运行结果:

 

例子:给数据库创建一个新表

import pymysqldb = pymysql.connect('localhost','root','passwd','class')cursor = db.cursor()#检测表是否存在,如果存在则删除cursor.execute('drop table if exists bandcard')#建表sql = 'create table bandcard(id int auto_increment primary key,money int not null)'cursor.execute(sql)cursor.close()db.close()

运行结果:

 

例子:向表格中插入数据

import pymysqldb = pymysql.connect('localhost','root','passwd','class')cursor = db.cursor()sql = 'insert into bandcard values(0,100)'try:    cursor.execute(sql)    db.commit()except:    #如果提交失败,回到上一次的数据    db.rollback()cursor.close()db.close()

运行结果:

 

fetchone():功能:获取下一个查询结果集,结果集是一个对象fetchall():功能:接收全部的返回的行rowcount:是一个只读属性,返回execute()方法影响的行数

例子:查询表中数据

import pymysqldb = pymysql.connect('localhost','root','123456ddd','class')cursor = db.cursor()sql = 'select * from student'try:    cursor.execute(sql)    reslist = cursor.fetchall()    for row in reslist:        print('%d--%s' %(row[0],row[1]))except:    print('失败')    #如果提交失败,回到上一次的数据    db.rollback()cursor.close()db.close()

运行结果:

 

 

 

 

一起学习,一起进步 -.- ,如有错误,可以发评论

转载地址:https://kongchengji.blog.csdn.net/article/details/95982416 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python(三十)——从数据库查询应用、MongoDB数据库
下一篇:python(二十八)——线程通信,生产者与消费者,线程调度,协程

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年05月03日 22时52分47秒