python学习之数据库操作

一、数据库基本操作
数据库操作:
查看存储引擎: 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);
时间: 2024-11-02 23:26:17

python学习之数据库操作的相关文章

PHP学习之-数据库操作

PHP学习之-数据库操作 1.PHP支持那些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Sybase,Db2,Oracle,PostgreSQL,Access等,这些数据库PHP都能够安装扩展来支持,一般情况下常说的LAMP架构指的是:Linux.Apache.Mysql.PHP,因此Mysql数据库在PHP中的应用非常广泛,我们会在本章中简单的了解Mysql的操作方法.

[Python] Python 学习 - 可视化数据操作(一)

Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文件目录 折线图 cube_squares.py import matplotlib.pyplot as plt x_values=list(range(1, 5000)) y_values=[pow(x, 3) for x in x_values] plt.scatter(x_values, y_v

用Python进行SQLite数据库操作

用Python进行SQLite数据库操作 -----转自:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 简单的介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/L

[python]用Python进行SQLite数据库操作

用Python进行SQLite数据库操作 1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ import sqlite3 2. 创建/打开数据库 在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开. cx = sqlite3.connect("E:/test.db") 也可以创建数据库在内存中. con = sqlite3.c

python学习笔记-day7-【python操作数据库】

上次说到了Python操作数据库,这里继续补充python操作数据库,如何获取数据表里的所有字段值以及将数据导出来到excel里,作为excel表表头. 一.上次说到封装一下mysql的操作 1.装一下函数执行数据库操作 #封装一下函数执行数据库操作def my_db(host,user, passwd, db,sql, port=3306, charset='utf8'): import pymysql conn = pymysql.connect(user=user,host=host,po

python学习之数据库mariadb操作

数据库简介数据库分类关系型数据库:指采用了关系模型来组织数据的数据库.关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织.主流的关系型数据库有:Oracle.Microsoft SQL Server.MySQL.PostgreSQL,SQLite.MariaDB(MySQL的一个分支)Microsoft Access.SAP.非关系型数据库:指非关系型的,分布式的,以键值对存储且结构不固定,可以减少一些时间和空间的开销.非关系型数据库都是针对某些特定的

Python进行MySQL数据库操作

最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运维来说,都应该学会用Python来提高工作效率.下面简单的介绍一下Python DB API MySQLdb 使用Python DB API访问数据库的流程图: 在Centos下安装MySQLdb模板(为了方便演显,我用yum安装,也是最快最省事的安装): yum install MySQL-pyt

python小白-day9 数据库操作与Paramiko模块

paramiko模块 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostna

flask学习之数据库操作一

数据库操作使用 sqlalchemy模块安装(需安装MySQL-python/python-devel) pip install flask-sqlalchemy 目录结构 ├── app │   ├── __init__.py │   └── models.py ├── config.py 配置环境 vim config.py #coding:utf-8 SQLALCHEMY_DATABASE_URI = 'mysql://mysqlTest:[email protected]/mysqlTe