python数据库操作-mysql数据库
一:连接
1:本地连接
mysql -u用户名 -p密码
2:连接远程服务器
mysql -u用户名 -p密码 -hip地址 -P端口号 线下修改远程服务端上部署的mysql服务器
二:创建数据库
create database 名字 utf8;
三:显示数据库
show databases;
四:使用数据库
use 数据库名;
五:删除数据库
drop database if exists 数据库名
六:查看数据库的结构
show create database 数据库名
七:从外部导入sql文件
导入备份的文本文件:说白了就是把文本文件重新执行一遍。
例如从桌面导入sql.sql文件
source C:\Users\Administrator\Desktop\sql.sql 正确导入桌面的sql语句,并执行里面的创库语句和显示所有库的命令。
八:创建数据表
create table class(id int primary key auto_increment,cname varchar(30),des varchar(100)) charset utf8;
需要说明:表的编码格式不指定,会默认继承数据库的编码格式。
九:查看表的结构
desc 表名 直接查看表的结构
十:删除表
drop table if exists class 删除的原因是,上面的建表语句中,cname字段都是可以为null的,这与真实情况不符。
create table class(id int primary key auto_increment,cname varchar(30) not null,des varchar(100) null) charset utf8;
十一:表中添加数据
方式一: insert into class set cname="后盾人",des="这是一个学习网站"; 插入一组值
方式二: insert into class(cname,description) values("mysql","关系型数据库"),("js","前端开发语言"),("python","胶水语言"); 可插入一组值,也可多组值。
# 其他的插入方式 TODO
十二:根据其他表结构生成相同的表结构
create table copyclass like class; 根据class的表结构创建一个copyclass的表。
十三:两个相同结构的表,数据互传。
insert into copyclass select * from class; 全部字段都复制过来
insert into copyclass(cname) select cname from class; 仅仅复制cname字段。
十三:复制一个表的结构和数据的形式创建表。
create table testclass select * from class;
十四:查询的基本方式
select * from class; 全部字段查询
select id,cname from class; 部分字段查询
select cname,id from class; 部分字段查询 说明:查询显示的顺序和select 后面的字段顺序排列一致。
特殊情况:假如多表联合查询,每个表都有id字段,都要显示怎么办。不能都显示成id吧,因此可以给选择的字段进行命名,显示时候按照命名显示。
select id as classs_id,cname from class;
十五:条件查询 where
select * from class where id>2; 显示id>2的字段信息
select * from class where cname="mysql";显示字段名字为mysql的字段信息。
select * from class where description like "%水%";显示描述中含有水这个字信息的所有字段。 where 字段 like 模糊查询条件。
select * from class where cname like "p%"; 显示名字以p开头的所有字段。 %是like查询中的占位符,表示0个或多个任意字符。
select * from class where cname not like "p%";显示名字不以p开头的所有字段。 not like 否定形式
select * from class where cname not like "p%" and id>2; 显示名字不以p开头且id>2的字段信息 and 可以连接 条件查询的条件1和条件2,表示并且
十六:条件查询
先准备一个表:
create table stu(id int primary key auto_increment,sname char(10),class_id int default null,age smallint not null);
insert into stu(sname,class_id,age) values("刘德华",1,18),("张学友",2,20),("郭富城",1,22),("黎明",null,24),("陈奕迅",3,26);
1:查询学生名字包含张或者班级为2班的学生。
select * from stu where sname like "张" or class_id = 2; or 可以连接 条件查询的条件1和条件2,表示或
2:查询目前一共有几个班
select class_id from stu; 显示结果又重复,去重用 distinct
select distinct class_id from stu; 将class_id的字段进行去重。
3:查看年龄在20-24的所有学生。
select * from stu where age>20 and age <24; 不包含两端的值
select * from stu where age between 20 and 24; 包含两端的值
4:查看班级为2或班级为3的所有学生
select * from stu where class_id =2 or class_id =3;
select * from stu where class_id in (2,3);
十七:条件查询:处理null的技巧
1:要查询没有班级号码为null的所有学生
select * from stu where class_id = 'null"; 得不到结果
select * from stu where class_id = null; 得不到结果
null的比较:需要使用 is 和 is not 进行判断
select * from stu where class_id is null;
select * from stu where class_id is not null;
2:查询所有学生,如果有班级编号,显示班级编号,没有显示,无。
select sname,if(class_id,class_id,"无") from stu;
select sname,if(class_id,class_id,"无") as class_id from stu;
select sname,ifnull(class_id,"无") as class_id from stu;
# TODO if函数的作用
十八:排序操作
select sname,class_id from stu order by age desc; 从大到小排列
select sname,age from stu order by age asc; 从小到大排列
select sname,age,class_id from stu order by class_id desc;
# 同时要对班级相同的年龄从大到小排序,需要进行两次排序,先排序班级,在排序年龄。
select sname,age,class_id from stu order by class_id desc age desc;
order by 条件1,条件2,条件3 优先级是条件1 > 条件2 > 条件3
找到班上最后报名的学生:
select * from stu order by id desc; 从所有的里面找,第一个
select * from stu order by id desc limit 1; 从所有的里面,只显示第一个。 限制显示条数 limit
注意:limit(a,b) a---从哪里开始取 b---取几个。
select * from stu where class_id=2 and age is not null order by age asc limit 1;
目的:是为了查找二班中年龄最小的一个人。但是存在隐患,要是班上有两个人,年龄都最小,那么就会漏过一个人。
因此需要借助后面更加复杂的子查询语句进行限制,后面会讲到。下面的语句查询出来更加准确。
select * from stu where age = (select age from stu where class_id =2 and age is not null order by age asc limit 1);
十九:更新表结构的使用技巧
假如:要将上表中,班级class_id为null的改为class_id=2
update stu set class_id = 2 where class_id is null; update ......set........
需求:1班中年龄小于20的给年龄增加10岁。
update stu set age=age+10 where age<20 and class_id=1;
二十:删除操作
delete from stu where age < 30 and class_id is null;
delete from stu order by id desc limit 2; 将id最大的两个从表中删除。
二十一:表的维护-修改表名
方式一:alter table stu rename stus;
方式二:rename table stus to stu;
二十二:修改表的字符集和查看表的建表结构
1. 修改表的字符集
alter table stu charset "gbk";
2. 查看表的建表信息
show create table stu; 注意:desc stu 是查看表的字段信息,而不是建表信息。
二十三:删除表中的所有数据
truncate stu;
二十四:删除表
drop table if exists stu;
二十五:修改表的字段类型
需求:将cname的type从varchar(30)改为varchar(50) 不能为空
alter table class modify cname varchar(50) not null;
alter 是修改表的关键字 搭配 modify rename change 等方法使用
需求:将cname改为class_name char(50) 可以为空 默认是高级班
alter table class change cname class_name char(30) null default "高级班";
需求:给表class添加一个字段stu_num,int(30) not null default 30
alter talbe class add stu_num int(30) not null default 30;
需求:删除class表中的stu_num字段
alter table 表明 drop 字段名
二十六:待完成
二十七:数据类型
1.字符串类型
2.字符集
字符串:二进制和非二进制类型,二进制存储视频和图片,非二进制存储文本内容,非二进制文本受字符集和校对规则影响。
字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。常用的字符集有GBK、BIG5、UTF8。
UTF8字符包含文字内容更广,如韩文、日文、德文兼容度更高,也是推荐使用的字符集。
show character set; 查看服务器支持的字符集
默认:表不设置字符集继承数据库,字段不设置字符集继承表。
3.校对规则
数据库支持的字符集,校对规则是字符集内,字符比较和排序的一套规则,_ci结尾的是对大小写不敏感,_bin结尾的是不区分大小写。
# TODO 怎么更改字段的校对规则,区分大小写。
4.常用字符串处理函数
字符串截断函数
需求:将http改为http:
结果:
update class set cname = concat("http:",mid(cname,5)) where id >=5;
获取字符的区间值
获取字符的长度
拼接两个值为一个值 concat函数
需求:取一个字段的内容,如果内容超过八个字符,后面有.....代替
5.正则表达式在mysql中的使用技巧
需求:cname中第二个字母是y的数据 select * from class where cname like "_y%"; _表示占位符,一个任意的字符,y后面必须加%,站位符,表示0或者多个。
需求:描述字段中包含语言这两个字的数据
需求:将所有描述字段中包含语言的数据,都加上后盾人这个三个字。
6.数值类型
整型
取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
m的含义不是允许字段的长度,而是显示长度,在为字段设置 zerofill
时有效。
需求:添加有前导零的字段
浮点型
7.ENUM/SET
8.
二十八:时间日期
1.DBeaver
2.数据类型
3.创建字段
4.格式化
5.时间戳
6.常用函数
7.基本查询
8.时间计算
二十九:摘要和排序
1.order
2.count
3.min/max
4.sum/avg
5.distinct
6.group
三十:多表攻略
1.多表攻略
2.表关联
3.笛卡尔积
4.inner
5.outer join
6.self join
7.多对多
8.union
9.多表删除
三十一:事务出来
1.事务处理
2.存储引擎
3.提交模式
4.程序控制
5.事务隔离
三十二:锁机制
1.锁机制
2.存储引擎
3.事务处理
4.悲观锁
5.乐观锁
6.表锁机制
三十三:外键约束
1.外键约束
2.创建外键
3.选项说明
4.创建动作
# group_by 一般和聚合函数一起使用
python数据库操作-mysql数据库的更多相关文章
- python 之操作mysql 数据库实例
对于python操作mysql 数据库,具体的步骤应为: 1. 连接上mysql host 端口号 数据库 账号 密码2. 建立游标3. 执行sql(注意,如果是update,insert,delet ...
- Python之 操作 MySQL 数据库
什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. 安装 Pytho ...
- python实现操作mysql数据库
实现代码如下: #mysql数据库的查询等 import pymysql from xctest_tools.xc_ReadFile.get_ReadTxt import * class mysql: ...
- python 安装操作 MySQL 数据库.
以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 xpower@xpower-CW65S:~$ sudo service mysql start [sudo] xpower 的密码: ...
- Python之操作MySQL数据库
一.操作步骤 1.导入pymysql模块 2.建立连接(ip.用户名.密码.数据库名.端口号.字符集.(自动提交参数)) 3.建立游标 4.执行sql语句 (4.需要提交的提交) 5.关闭游标 6 ...
- python 连接操作mysql数据库
开发数据库程序流程: 1.创建connection对象,获取cursor 2.使用cursor执行SQL 3.使用cursor获取数据.判断执行状态 4.提交事务 或者 回滚事务 import: 数据 ...
- python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据
今天想给数据库换一个数据引擎,mysiam转为 innodb 结果 python 插入数据时失败,但是自增id值是存在的, 换回mysiam后,又可以插入了~~ 想换php插入试试,结果php数据引擎 ...
- python 3 操作mysql数据库的方法
参考:http://www.cnblogs.com/txw1958/archive/2012/07/22/python3-mysql.html http://www.jb51.net/article/ ...
- python接口自动化(三十八)-python操作mysql数据库(详解)
简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...
随机推荐
- centos6.X mysql 5.1 主主配置
1.配置文件 A库的配置文件: 在 /etc/my.cnf [mysqld] 段 新增: server_id= # log_bin 日志路径.格式以及删除时间(30天) log_bin=/var/li ...
- SDK使用NinePatch(.9)资源
.9资源是啥? .9图是一种可以拉伸的图片格式,当你把它用作背景图时,android系统会根据实际情况来拉伸图片资源.比如按钮的背景必须根据上面显示文字的长短作拉伸.NinePatch就是额外包含了一 ...
- JS备忘--子父页面获取元素属性、显示时间,iframe之间互相调用函数
//页面加载完成后执行 $(function () { getHW();}); //当用户改变浏览器大小改变时触发 $(window).resize(function () { setHW(); }) ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第4节 ArrayList集合_19-ArrayList练习四_筛选集合
大集合里面循环装了20个int类型的随即数字 下面要自定义方法,这个方法专门负责筛选 遍历偶数的集合 重点是集合当做方法的参数,还能当做集合的返回值
- C#之委托(一)
1,什么是委托 简单来说,就是代码在恰当的时间执行一段操作.代码不需要操作的细节.举个例子,遗嘱为例.一般来说遗嘱是在某人去世之前写好,然后把它放发到一个安全的地方,去世之后然后律师会执行遗嘱中的指令 ...
- struts2 基础4 验证器、 国际化
验证器: 验证器:用户输入验证 1.手动编程方式 )对于动作类中所有方法进行验证 a.动作类继承ActionSuport b.覆盖调用public void validate(){} 方法 c.在va ...
- python实现建立soap通信(调用及测试webservice接口)
实现代码如下: #调用及测试webservice接口 import requests class SoapConnect: def get_soap(self,url,data): r = reque ...
- 剑指offer--day06
1.1 题目:调整数组顺序使奇数位语偶数前面:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的 ...
- Backbone中bind和bindAll的作用
本文参考: http://blog.bigbinary.com/2011/08/18/understanding-bind-and-bindall-in-backbone.html bindAll内部 ...
- 基本数据类型间的运算(不包括boolean)
一 基本数据类型的间的运算 (不包括boolean) 1.自动类型提升 : 小容量的变量和大容量的变量做运算结果用大容量的变量的类型来接收. byte , short , char -> in ...