广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python学习之数据库操作
  • 937
分享到

python学习之数据库操作

2024-04-02 19:04:59 937人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

一、数据库基本操作 数据库操作: 查看存储引擎: show engines; 查看数据库: show databases; 或者show crea

一、数据库基本操作
数据库操作:
查看存储引擎: show engines;
查看数据库: show databases; 或者show create database oldboy\G
创建数据库: create database oldboy default charset=utf8;
删除数据库: drop database oldboy;
进入数据库:  use oldboy;

数据表操作:
创建数据表:
create table tb_emp1 (
    -> id int(11),
    -> name varchar(25),
    -> deptId int(11),
    -> salary float
    -> )engine=innodb default charset=utf8;

primary key:
create table tb_emp2 (                                                                     
    -> id int(11) primary key,
    -> name varchar(25),
    -> deptId int(11),
    -> salary float
    -> )engine=innodb default charset=utf8;
    
多个primary key:
create table tb_emp3 ( id int(11), name varchar(25), deptId int(11), salary float,
 primary key(name, deptId) )engine=innodb default charset=utf8;  
 
外键约束foreign key:
主表:
create table tb_dept1 (
    -> id int(11) primary key,
    -> name varchar(22) not null,
    -> location varchar(50)
    -> )engine=innodb default charset=utf8;  
    
从表:
create table tb_emp5 (
    -> id int(11) primary key,
    -> name varchar(25),
    -> deptId int(11),
    -> salary float,
    -> constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id)
    -> )engine=innodb default charset=utf8;
    
非空约束not null:
create table tb_emp6 (
    -> id int(11) primary key,
    -> name varchar(25) not null,    #非空
    -> deptId int(11),
    -> salary float,
    -> constraint fk_emp_dept2 foreign key(deptId) references tb_dept1(id)
    -> )engine=innodb default charset=utf8;

唯一性约束unique,要求该列唯一,允许为空,但只能有一个值为空:
create table tb_dept2 (
    -> id int(11) primary key,
    -> name varchar(22) unique,
    -> location varchar(50)
    -> )engine=innodb default charset=utf8;
    
默认值default:
create table tb_emp7 (
    -> id int(11) primary key,
    -> name varchar(25) not null,
    -> deptId int(11) default 1111,
    -> salary float,
    -> constraint fk_emp_dept3 foreign key(deptId) references tb_dept1(id)
    -> )engine=innodb default charset=utf8;
    
自增主键auto_increment:
create table tb_emp8 (
    -> id int(11) primary key auto_increment,
    -> name varchar(25) not null,
    -> deptId int(11),
    -> salary float,
    -> constraint fk_emp_dept5 foreign key(deptId) references tb_dept1(id)
    -> )engine=innodb default charset=utf8;

插入tb_emp8三条数据:
insert into tb_emp8(name,salary) values('Lucy', 1000),('lura', 1200),('Kevin',1500);
id自增

查看表结构: desc tb_emp8; 或者show create table tb_emp8\G


修改数据表alter
修改表名: alter table tb_dept2 rename tb_deptment3;
修改字段类型: alter table tb_dept1 modify name varchar(30);
修改字段名: alter table tb_dept1 change location loc varchar(50);
添加字段: alter table tb_dept1 add managerId int(10);
添加有约束条件的字段: alter table tb_dept1 add column1 varchar(12) not null;
在某个位置添加字段: alter table tb_dept1 add column2 int(11) first;
在某个字段后面添加新字段: alter table tb_dept1 add column3 int(11) after name;
删除字段: alter table tb_dept1 drop column2;
修改表的存储引擎: alter table tb_deptment3 engine=MyISAM;
删除外键约束: alter table tb_emp9 drop foreign key fk_emp_dept;

删除数据表: drop table if exists tb_dept2;
删除外键关联的主表,需要首先取消外键关联,否则删除主表失败


数据类型
×××: TINYINT 1个字节  2**8 - 1=255个值
×××: smallint 2个字节
×××: int 4个字节
×××: bigint 8个字节

浮点数
单精度: float 4个字节
双精度: double 8个字节
decimal: 不固定,一般用于财务系统

日期时间类型
year: 1个字节,格式 YYYY
time: 3个字节,格式 HH:MM:SS
date: 3个字节,格式 YYYY-MM-DD
datetime: 8个字节,格式 YYYY-MM-DD HH:MM:SS
timestamp: 4个字节,格式YYYY-MM-DD HH:MM:SS

字符串类型
char(n): 固定长度字符串    #浪费内存,但查询速度快
varchar(n): 非固定长度字符串    #节省内存,但查询速度慢
text: 存放文本
longtext: 存放大数据文本


between .. and .. 关键字使用
select 4 between 4 and 6, 4 between 4 and 6, 12 between 9 and 10;

in, not in 关键字使用
select 2 in(1,3,5,'thks'), 'thks' in(1,3,5,'thks');

like用来匹配字符串
'%': 匹配任何数目的字符
'_': 只能匹配一个字符

select查询数据
create table fruits (
    -> f_id char(10) not null,
    -> s_id int not null,
    -> f_name char(255) not null,
    -> f_price decimal(8,2) not null,
    -> primary key(f_id)
    -> ) engine    -> ) engine=innodb =utf8;
    
插入字段:
insert into fruits(f_id,s_id,f_name,f_price) values
    -> ('a1',101,'apple',5.2),
    -> ('b1',102,'blackberry',10.2),
    -> ('bs1',102,'orange',11.2),
    -> ('bs2',105,'melon',8.2),
    -> ('t1',102,'banana',10.3),
    -> ('t2',102,'grape',5.3),
    -> ('o2',103,'coconut',9.2),
    -> ('c0',101,'cherry',3.2),
    -> ('a2',103,'apricot',2.2),
    -> ('l2',104,'lemon',6.4),
    -> ('b2',104,'lemon',7.6),
    -> ('m1',106,'manGo',15.6),
    -> ('m2',105,'xbabay',2.6),
    -> ('t4',107,'xbababa',3.6),
    -> ('m3',105,'xxtt',11.6),
    -> ('b5',107,'xxxx',3.6);

单表查询:
查询表: select f_id,f_name from fruits;
查询条件where: 
select f_id,f_name from fruits where f_price=10.2;    #等号 =
select * from fruits where f_price < 10;        #小于
select * from fruits where s_id in(101,102) order by f_name (desc);    #in关键字,按f_name排序,desc降序,asc升序
select * from fruits where f_price between 2.00 and 10.20;    #between and
select * from fruits where f_name like 'b%';    #like关键字匹配, %匹配任何多个字符
select * from fruits where f_name like '_____y';    #_匹配任意一个字符
select * from fruits where s_id='101' and f_price >=5;    #and多条件匹配
select * from fruits where s_id='101' or s_id=102;    #or多条件匹配

order by查询结果排序
select * from fruits order by f_name;
select * from fruits order by f_price desc;    #desc倒叙排列

group by分组
select s_id,count(*) as Total from fruits group by s_id; #根据s_id分组,s_id相同的数量
select s_id,count(*) as Total from fruits group by s_id having count(f_name) > 1;    #having后面加上查询条件

limit限制查询的数量
select * from fruits limit 4;    #查询四条
select * from fruits limit 4,3;    #索引为4,从第五条开始返回3条

inner join 内连接,返回两表中都有的记录
create table suppliers (
    -> s_id int(11) not null auto_increment primary key,
    -> s_name char(50) not null,
    -> s_city char(50),
    -> s_zip char(10),
    -> s_call char(50) not null
    -> )engine=innodb default charset=utf8;

以下操作是fruits和suppliers关联
select suppliers.s_id, s_name, f_name, f_price from fruits inner join suppliers on 
    -> fruits.s_id = suppliers.s_id;    #on后面是条件查询,

left join    返回包括左表中的所有记录和右表连接字段的所有记录
select s_name,f_price from fruits left join suppliers on fruits.s_id = suppliers.s_id;

子查询:
select s_id, f_name from fruits where s_id=(select s1.s_id from suppliers as s1 where s1.s_city='Tianjin');


uNIOn合并查询结果并去重
union all合并查询不去重
select s_id ,f_name,f_price from fruits where f_price < 9.0 union all select s_id,f_name,f_price from fruits where s_id in(101,103);
二、pyMysql模块操作数据库
例子:
#!/usr/bin/python
# --*-- coding:utf-8 --*--
import pymysql

conn = pymysql.Connect(host='127.0.0.1',user='root',passWord='aixocm',port=3306,database='oldboy',charset='utf8')
cursor = conn.cursor()
v = cursor.execute('select * from student')
print(v)
#cursor.fetchone()    #获取一条数据
#cursor.fetchmany(2)    #获取多条数据
result = cursor.fetchall()    #获取所有数据
print(result)
cursor.close()
conn.close()

#!/usr/bin/Python
# --*-- coding:utf-8 --*--
import pymysql

conn = pymysql.Connect(host='127.0.0.1',user='root',password='aixocm',port=3306,database='oldboy',charset='utf8')
cursor = conn.cursor()
#v = cursor.execute('insert into student(name) values("test")')
#print(v)
v = cursor.execute('delete from student where sid=7')
conn.commit()    #提交事务
cursor.close()
conn.close()

#!/usr/bin/python
# --*-- coding:utf-8 --*--
import pymysql

num=8
conn = pymysql.Connect(host='127.0.0.1',user='root',password='aixocm',port=3306,database='oldboy',charset='utf8')
cursor = conn.cursor()
#v = cursor.execute('insert into student(name) values("test")')
#print(v)
v = cursor.execute('delete from student where sid=%d' %(num))  #防止sql注入
conn.commit()
cursor.close()
conn.close()


--结束END--

本文标题: python学习之数据库操作

本文链接: https://www.lsjlt.com/news/37457.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python学习之数据库操作
    一、数据库基本操作 数据库操作: 查看存储引擎: show engines; 查看数据库: show databases; 或者show crea...
    99+
    2022-10-18
  • flask学习之数据库操作一
    数据库操作使用sqlalchemy模块安装(需安装MySQL-python/python-devel) pip install flask-sqlalchemy目录结构├── ...
    99+
    2022-10-18
  • Python练习之操作MySQL数据库
    目录一、创建mysql数据表三、向MySQL表中插入数据三、查询MySQL中的数据总结文章介绍内容: 操作MySQL数据库: 创建MySQL数据表;向表中插入记录;其他数据库操作。 面试题: 如何创建MySQL数据表?如...
    99+
    2022-06-13
    Python操作MySQL数据库 Python操作MySQL
  • Python练习之操作SQLite数据库
    目录前言1.创建SQLite数据库2.向SQLite表中插入数据3.查询SQLite表中的数据总结前言 文章包括下几点: 考点--操作SQLite数据库: 创建SQLite数据库;向表中插入记录;其他数据库操作。 面试题...
    99+
    2022-06-13
    Python操作SQLite数据库 操作SQLite数据库
  • MySQL数据库学习之查询操作详解
    目录1.示例表内容2.简单查询3.给列起别名4.列运算5.条件查询1.示例表内容 dept表: +--------+------------+----------+ | DEPTNO | DNAME | LOC...
    99+
    2022-07-24
    MySQL数据库查询 MySQL查询
  • 从零学习node.js之mysql数据库的操作(五)
    准备工作 在使用node操作mysql数据库时,需要先下载mysql模块: npm install mysql --save-dev 在引入mysql模块后,就可以进行数据库的连接和其他的操作了。 ...
    99+
    2022-06-04
    操作 数据库 node
  • Oracle学习(三) --- 数据库操作
    Oracle表与用户关联 每一个用户,需要确定表存放位置,这个位置称为表空间 在Oracle中表空间分2中:永久表空间、临时表空间 临时表空间:使用SQL语句操作时,结果先进入临时表空间 永久表空间:当执行commit时,数据将从临时表...
    99+
    2016-01-31
    Oracle学习(三) --- 数据库操作
  • Python学习之文件操作
    #/usr/bin/python content='''\                      #这里使用''' This is a test file for python ''' f=file('content.txt','w'...
    99+
    2023-01-31
    操作 文件 Python
  • 数据库之MySQL数据操作练习
    目录 练习内容 worker表要求 创建的表的表结构 表中的数据内容 对数据的操作 1.显示所有职工的基本信息 2.查询所有职工所属部门的部门号,不显示重复的部门号 3.求出所有职工的人数 4.列出最高工和最低工资 5.列出职工的平均工资...
    99+
    2023-09-20
    数据库 mysql
  • MySQL学习之数据库操作DML详解小白篇
    目录1.插入语句1.1插入一行1.2插入多行1.3插入查询语句2.修改语句2.1修改单表记录2.2修改多表记录3.删除语句3.1方式1使用delete删除3.2方式2使用t...
    99+
    2022-11-12
  • Python学习之使用Python操作R
    最近在写一个检查一台服务器上所有游戏区服配置文件中redis某个key值大小的脚本,本打算使用shell+awk+sed的方式去解决这个问题,但是由于redis的配置信息是php数组形式.shell脚本一时没有写出来,就请教他人帮忙写了个p...
    99+
    2023-01-31
    操作 Python
  • MySQL学习之数据更新操作详解
    目录UPDATE 语句UPDATE 语句练习①UPDATE 语句练习②UPDATE 语句练习③UPDATE 语句的表连接UPDATE 语句练习④UPDATE 语句 UPDATE 语句用于修改表的记录,语法如下 UPDAT...
    99+
    2022-08-08
    MySQL数据更新操作 MySQL数据更新
  • PythonPandas学习之基本数据操作详解
    目录1 索引操作1.1 直接使用行列索引(先列后行)1.2 结合loc或者iloc使用索引1.3 使用ix组合索引2 赋值操作3 排序3.1 DataFrame排序3.2 Serie...
    99+
    2022-11-13
  • MySQL数据库基础学习之JSON函数各类操作详解
    目录前言一、jsON语法规则二、JSON函数1.JSON_CONTAINS(json_doc,value)函数2.JSON_SEARCH()函数 3.JSON_PRETTY(json_doc)函数4.JSON_...
    99+
    2023-02-17
    MySQL JSON函数操作 MySQL JSON函数 MySQL JSON
  • Python操作数据库之 MySQL
    Python操作数据库之MySQL   一、安装Python-MySQLdb模块Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现...
    99+
    2022-10-18
  • Python之MySQLdb操作数据库
    一、python操作数据库1.格式:大概分为三部分1234567891011121314151617代码import MySQLdb conn = MySQLdb.c...
    99+
    2022-10-18
  • 数据库学习之一:数据库介绍
    一、数据库介绍 1、关系型数据库的特点 ​ 二维表 典型产品Oracle传统企业,MySQL是互联网企业 数据存取是通过SQL 最大特点,数据安全性方面强(ACID) 2、NoSQL:非关系型数据库(Not only SQL) ​...
    99+
    2019-01-28
    数据库学习之一:数据库介绍
  • python之cmd库学习
    一:cmd介绍    引用python的官方文档    The cmd class provides a simple framework for writing line-oriented command interpreters.  T...
    99+
    2023-01-31
    python cmd
  • 学习 Python 之 Pandas库
    学习 Python 之 Pandas库 Pandas库什么是Pandas库DataFrame 创建和存储1. 使用DataFrame构造函数(1). 使用列表创建(2). 使用字典创建(3)....
    99+
    2023-10-27
    python
  • python之_requests库学习_
    一、超时 可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应。 连接超时指的是在你的客户端实现到远端机器端口的连接时Request 会等待的秒数。一个很好的实践方法是把连接超时设为比 3 的倍数略大的...
    99+
    2023-01-30
    python _requests
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作