Python之MYsql、数据库
一、数据库的操作及安装
1、安装
MySQL
Commu
nity
Server
5.7
.
16 ---- 版本
2、初始化
mysqld --inisialize-insecure
3、启动
mysqld
4、启动MySQL客户端并连接MySQL服务
mysqld --initialize-insecure命令,其默认未给root账户设置密码
5、查看是否MySQL启动
tasklist |findstrmysql
6、数据库的基本命令
mysqld --inisialize-insecure 初始化以没有密码的形式进入 mysqld 启动mysqld tasklist |findstr mysqld 查看是否mysql启动 mysql -uroot -p 链接 quit 退出 tskill mysql 干掉mysql mysqld --install 在winds 中安装mysqld mysqladmin -uroot password 123 设置密码 mysqld --skip-grant-tables 跳过受限直接启动mysqld update mysql.user set authentication_string=
password(456) where user='root'and host='localhost';(5.7版本) 修改密码成功 update mysql.user set password=password(5.6版本) flush privileges; 刷新权限 select user(); 查看当前用户 create user 'mqj'@'localhost' identfied by '123'; 创建本机账号 create user 'egon'@'%' identfied by '123' 创建远程账号 create user 'wupeiqi'@'192.168.20.%' identified by '123' 创建远程网端账号 mysql -h192.168.20.99 -ualex -p123 远程链接 数据库文件夹的的操作 create database db1 charset utf8; 增加db1文件夹 show databases ; 查看所有数据库 show create database db1; 查看db1文件夹 drop database db1; 删除db1文件夹 alter database db1 charset gbk; 修改db1编码 操作文件(表)
切换到文件下:
use db2 切换文件夹 \c 取消命令 create table t1(id int,name char(10)); 创建表 show tables; 查看当前文件下的所有表 show create table t1; 查看表 alter table t1 add age int; 增加字段 alter table t1 modify name char(12); 改表中的名字字符 desc t1; 查看表结构 drop table t1; 删除表 操作文件的一行行内容(记录) insert into db1.t1 values(1,'egon1'),(2,'egon2'),(3,'egon3'); 增加记录 select * from t1; 查看所有字段对应的值 select * from t1 where id>2; 查看id大于2的字段 select name from t1; 查看单个字段 update t1 set name='SB' where id=3; 改里面的记录 delete from t1 where id=3; 删除一条记录 对于清空表的记录有两种方式,但是推荐使用后者
delete from t1;
truncate t1; #当数据量大的时候下,删除速度快 整体删除 自增id
create table t2(id int primary key,name char(10));
create table t3(id int not null unique,name char(10));
create table t2(id int primary key auto_increment,name char(10)); 补充
create table t6 select * from t5; 拷贝表 create table t7 select * from t5 where 1=2; 拷贝表结构 alter tablet7 modify id int primary key auto_increment 改表结构 delete t7 set name='' ; 删除记录 select database() 查看当前在那个文件夹下 insert into t1(id) values(1) 插数据的方式 select * from t1; 查看插入数据的内容 select * from t1; 数据类型
1、数字(默认都是有符号,宽度指的是显示宽度,与存储无关)
(1)tinyint [unsigned][zerofill] (1个字节存)
有符号:
-128~~127
无符号:
0~~255
(2) int [unsigned][zerofill] (4个字节存)
有符号:
-2147483648~~2147482647
无符号:
0~~4294967295
(3)bigint[unsigned][zerofill] (8个字节存)
有符号:
-9223372036854775808~~9223372036854775808
无符号:
0~~494967295
2、字符(宽度指的是字符个数 与存储有关):
char :定长(简单粗暴,不够则凑够固定长度存放起来,浪费空间,存取速度快)
varchar: 变长(精准,计算除待存放的数据长度,节省空间,存取速度慢)
3、日期
#注册时间
datatime 2017-09-06 10:39:46
#出生年月日 ,开学时间
data:2017-09-06
#聊天记录,上课时间
time:10:39:46
#出生年
year:2017
4、枚举与集合
enum枚举:规定一个范围,可有多个值,但是为该字段船只是,只能去规定范围中的一个
set集合:规定一个范围,可有多个值,但是为该字段船只是,只能去规定范围中的一个或多个 1:
整型测试
create table t1(id tinyint);
create table t2(id int);
create table t3(id bigint) ; #测试
create table t4(salary float(5,2)); insert into t4 values(3.735);
insert into t4 values(3.735684); 2、char 与 varcahr测试
create table t6(name char(4));
insert into t6 values('alex')
insert into t6 values('欧德博爱');
insert into t6 values('艾利克斯'); create table t7(x char(5),y varchar(5));
insert into t7 values('addd','dsds') #char_length:查看字符长度
insert into t7 values('你好啊','好你妹')#char_length:查看字符长度 了解
insert into t7 values('你好啊','好你妹')#length:查看字节长度
select char_length(x),char_length(y) from t7; 注意两点:
insert into t7 values('abc','abc');#length:查看字节长度
select * from t7 where y='abc '; #去掉末尾的空格然后去比较 3、日期
create table student(
id int ,
name char(5),
born_date date,
born_year year,
reg_time datetime,
class_time time
);
insert into student values(1,'alex',now(),now(),now(),now());
insert into student values(1,'alex','2017-09-06','2017','2017-09-06 10:09:36','09:06:36'); 4、枚举与集合
create table student1(
id int primary key auto_increment,
name char(5),
sex enum('male','female'),
hobbies set('music','read','coding')
); insert into student1(name,sex,hobbies) values('egon','male','music,read,coding'); 1 简单查询
select * from employee;
select name,salary from employee; 2 where条件
select name,salary from employee where salary > 10000;
select name,salary from employee where salary > 10000 and salary < 20000;
select name,salary from employee where salary between 10000 and 20000;
select name,salary from employee where salary not between 10000 and 20000; select name,salary from employee where salary = 10000 or salary = 20000 or salary = 30000;
select name,salary from employee where salary in (10000,20000,30000); select * from employee where salary = 10000 or age = 18 or sex='male'; select * from employee where post_comment is Null;
select * from employee where post_comment = Null;
select * from employee where post_comment is not Null; select * from employee where name like '%n%'; select * from employee where name like 'e__n'; 3 group by分组
mysql> select depart_id,group_concat(name) from employee group by depart_id; mysql> select depart_id,count(id) from employee group by depart_id; mysql> select depart_id,group_concat(id) from employee group by depart_id; mysql> select depart_id,count(id) from employee group by depart_id; mysql> select depart_id,max(salary) from employee group by depart_id; mysql> select depart_id,min(salary) from employee group by depart_id; mysql> select depart_id,sum(salary) from employee group by depart_id; mysql> select depart_id,avg(salary) from employee group by depart_id;
二、数据库文件件的操作
create database db1 charset utf8; 增加db1文件夹 show databases ; 查看所有数据库 show create database db1; 查看db1文件夹 drop database db1; 删除db1文件夹 alter database db1 charset gbk; 修改db1编码
2、操作文件
切换到文件下:
use db2 切换文件夹 \c 取消命令 create table t1(id int,name char(10)); 创建表 show tables; 查看当前文件下的所有表 show create table t1; 查看表 alter table t1 add age int; 增加字段 alter table t1 modify name char(12); 改表中的名字字符 desc t1; 查看表结构 drop table t1; 删除表
3、操作文件一行行内容
insert into db1.t1 values(1,'egon1'),(2,'egon2'),(3,'egon3'); 增加记录 select * from t1; 查看所有字段对应的值 select * from t1 where id>2; 查看id大于2的字段 select name from t1; 查看单个字段 update t1 set name='SB' where id=3; 改里面的记录 delete from t1 where id=3; 删除一条记录 对于清空表的记录有两种方式,但是推荐使用后者
delete from t1;
truncate t1; #当数据量大的时候下,删除速度快 整体删除 自增id
create table t2(id int primary key,name char(10));
create table t3(id int not null unique,name char(10));
create table t2(id int primary key auto_increment,name char(10));
4、一些不常用的操作
create table t6 select * from t5; 拷贝表 create table t7 select * from t5 where 1=2; 拷贝表结构 alter tablet7 modify id int primary key auto_increment 改表结构 delete t7 set name='' ; 删除记录
三、数据库的设计
连表的有性能消耗
(1)、连表设计
方式一:
class UserType(models.Model):
"""
用户类型表,个数经常变动
"""
title = models.CharField(max_length=32) class UserInfo(models.Model):
"""
用户表:讲师和班主任
"""
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
email = models.CharField(max_length=32)
ut = models.ForeignKey(to="UserType")
方式二:
- choices
# class UserInfo(models.Model):
# """
# 用户表
# """
# username = models.CharField(max_length=32)
# password = models.CharField(max_length=64)
# email = models.CharField(max_length=32)
#
# user_type_choices = (
# (1, '班主任'),
# (2, '讲师'),
# )
#
# user_type_id = models.IntegerField(choices=user_type_choices)
四、事务
事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,
即可回滚到原来的状态,从而保证数据库数据完整性。
五、存储
存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,
通过调用它的名字可以执行其内部的一堆sql
使用存储过程的优点
#1 程序与数据实现解耦
#2 减少网络传输的数据量
六、数据库优化查询方式
1、优化查询的两种方式:
(1):prefetch_related
(2):select_related
selsect_releated是主动连表,执行一次SQL
prefetch_releated不连表执行3次SQL
七、完整约束
1、设置唯一约束
如下:
方法一:
create table department1(
id int,
name varchar(20) unique,
comment varchar(100)
); 方法二:
create table department2(
id int,
name varchar(20),
comment varchar(100),
constraint uk_name unique(name)
);
八、数据库的备份
1、备份与数据库的恢复
drop database day43; 删除原先的文件夹
show databases; 查看全部的文件夹 create database day43; 创建一个文件夹 use day43; 切换到day43这个文件夹下
source E:\\day43.sql; 恢复数据
1、登录MySQL恢复:
drop database day51;
create database day51;
source D:\\day51.sql;
2、不登录MySQL直接在外面恢复;
mysql -uroot day51 < D:\\day51.sql
(2)、恢复到指定的库中:
create database bak; 新建一个文件夹
use dak; 切换到dak这个文件夹下
mysql -uroot bak < D:\\day51.sql; 恢复数据
九、关键字的优先级
from
where
group by
having
select
distinct
order by
limit
1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组 4.按照select后的字段得到一张新的虚拟表,如果有聚合函数,则将组内数据进行聚合 5.将4的结果过滤:having,如果有聚合函数也是先执行聚合再having过滤 6.查出结果:select 7.去重 8.将结果按条件排序:order by 9.限制结果的显示条数
Python之MYsql、数据库的更多相关文章
- Python操作Mysql数据库时SQL语句的格式问题
一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...
- python使用mysql数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- python 连接Mysql数据库
1.下载http://dev.mysql.com/downloads/connector/python/ 由于Python安装的是3.4,所以需要下载下面的mysql-connector-python ...
- Windows下安装MySQLdb, Python操作MySQL数据库的增删改查
这里的前提是windows上已经安装了MySQL数据库,且配置完成,能正常建表能操作. 在此基础上仅仅需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了.仅仅有1M ...
- 使用python将mysql数据库的数据转换为json数据
由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...
- python对mysql数据库操作的三种不同方式
首先要说一下,在这个暑期如果没有什么特殊情况,我打算用python尝试写一个考试系统,希望能在下学期的python课程实际使用,并且尽量在此之前把用到的相关技术都以分篇博客的方式分享出来,有想要交流的 ...
- 使用python操作mysql数据库
这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...
- python专题-Mysql数据库(python3._+ PyMysql)
之前写过一篇 Python使用MySQL数据库的博客,主要使用的是Python2和MySQLdb驱动. python使用mysql数据库 Python2 ---> Python3 MySQLdb ...
- python专题-Mysql数据库(python2._+ Mysqldb)
Python使用MySQL数据库 MySQLdb驱动从2014年1月停止了维护. Python2 MySQLdb 一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安 ...
随机推荐
- MFC中自定义消息
在头文件stdafx.h中增加一个自定义消息宏 #define WM_USER_THREADEND WM_USER + 1 在于增加新消息的窗口或对话框类的头文件中增加一个回调函数声明 afx_msg ...
- STM32小结
1.GPIO 电灯 推挽输出 PB5 2.GPIO 按键 浮空输入 PA0 3.写IO高电平 HAL_GPIO_WritePin(GPIOB,GPIO_Pin_5,1); 4.读取IO电平 HAL_G ...
- ItemCF_基于物品的协同过滤_MapReduceJava代码实现思路
ItemCF_基于物品的协同过滤 1. 概念 2. 原理 如何给用户推荐? 给用户推荐他没有买过的物品--103 3. java代码实现思路 数据集: 第一步:构建物品的同现矩阵 第 ...
- win7、win10进程pid4占用80端口的解决办法
https://jingyan.baidu.com/article/7e4409533ffe092fc1e2ef10.html 今天想用wamp架设服务器,但是程序启动不起来,查看系统端口,80端口被 ...
- IOS成长之路-用NSXMLParser实现XML解析
再次对xml进行解析,又有了些理解,如果有不对的地方,请给小弟指出,谢谢! <?xml version="1.0" encoding="UTF-8"?&g ...
- __block __weak
IOS BLOCK收集 在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很 ...
- mysql索引使用注意事项
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- Python3基础知识
1.查看关键字 Python3查看关键字要先导入模块keyword,然后运用keyword的属性kwlist获取 >>> import keyword>>> key ...
- JS-输入金额校验
function clearNoNum(obj){ obj.value = obj.value.replace(/[^\d.]/g,""); //清除"数字&qu ...
- 针对php脚本文件执行锁定的代码,避免脚本在同一时间重复运行
<?php//针对php脚本文件执行锁定的代码,避免脚本在同一时间重复运行,http://ken.01h.net/define('PHP_LOCK_FILE', dirname(__FILE__ ...