1 MySQL相关概念介绍

MySQL为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:

  • 表头(header): 每一列的名称;
  • 列(row): 具有相同数据类型的数据的集合;
  • 行(col): 每一行用来描述某个人/物的具体信息;
  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • 键(key): 表中用来识别某个特定的人\物的方法, 键的值在当前列中具有唯一性。

2 MySQL的安装配置以及服务的启停

windows下MySQL安装以及配置
   1、直接下载安装文件,双击安装文件一步一步进行操作即可。
   2、在安装文件夹下找到my-small.ini配置文件, 将其重命名为my.ini,    在[client]与[mysqld]下均添加一行,

即字符编码设置:default-character-set = gbk
   3、设置环境变量
   MySQL服务的启动、停止与卸载

Windows命令行下MySQL服务的启动、停止与卸载:
   1、启动: net start MySQL
   2、停止: net stop MySQL
   3、卸载: sc delete MySQL

Linux下MySQL安装与配置
   1、源码安装:
   2、在线安装
      Ubuntu(apt-get install mysql-server mysql-client)
      centOS/redhat(yum install mysql)
   3、字符编码设置以及环境变量设置
   
Linux下MySQL服务的启动、停止与卸载:
   1、启动与停止:/etc/init.d/mysql start/stop
   2、卸载:
      (1)源码安装--删除安装文件或执行卸载脚本
      (2)在线安装--执行RPM或APT卸载命令

3 MySQL脚本以及数据类型

3.1 MySQL脚本
   与常规的脚本语言类似, MySQL也具有一套对字符、单词以及特殊符号的使用规定, MySQL通过执行SQL语句来完成对数据库的操作, 该脚本由一条或多条MySQL语句(SQL语句 + 扩展语句)组成, 保存时脚本文件后缀名一般为.sql。在控制台下, MySQL客户端也可以对语句进行单句的执行而不用保存为.sql文件。
   语句——MySQL语句是组成MySQL脚本的基本单位, 每条语句能完成特定的操作, 他是由SQL标准语句 + MySQL扩展语句组成。
   函数——MySQL函数用来实现数据库操作的一些高级功能, 这些函数大致分为以下几类:字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数。
   3.2 MySQL数据类型
   MySQL有三大类数据类型, 分别为数字、日期/时间、字符串, 这三大类中又更细致的划分了许多子类型:
   数字类型
        整数: tinyint、smallint、mediumint、int、bigint
        浮点数: float、double、real、decimal
   日期和时间: date、time、datetime、timestamp、year
   字符串类型:
        字符串: char、varchar
        文本: tinytext、text、mediumtext、longtext
        二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

4 MySQL基本操作

(1)启动、登陆数据库
启动:net start mysql(/etc/init.d/mysql start)
登陆:mysql -h 地址 -P 端口 -u 用户名 -p 密码
登陆本机:mysql -u'主机名或ip地址' -p
跳过权限验证登录:mysqld --skip-grant-tables

(2)库基本操作
查看:show databases;
使用:use [databasename];
创建:create database [name];

(3)表基本操作
查看:show tables;
创建:
create table students
    (
        id int  not null auto_increment primary key,
        name char(8) not null,
        sex char(4) not null,
        age tinyint unsigned not null,
        tel char(13) null default "-"
    );

(4)数据操作    
插入:insert into students(name,sex,age,tel) values('alex','man',18,'151515151')
删除:delete from students where id =2;
修改:update students set name = 'sb' where id =1;
查询:select * from students

 #创建数据库jumpserver,设置字符编码为utf8
create database jumpserver character set = utf8;
#使用数据库
use jumpserver #创建数据表host_group(主机组表)
create table host_group
(
group_id int auto_increment primary key,
name char(20) not null,
description text
); #创建数据表user_info(用户表)
create table user_info
(
user_id int auto_increment primary key,
user_name char(20) not null,
user_group_id int not null,
foreign key(user_group_id) references host_group(group_id)
); #创建数据表host_info(主机表)
create table host_info
(
host_id int auto_increment primary key,
host_name char(50) not null,
host_type char(50) not null,
address char(15) not null,
cpu_count smallint,
cpu_type char(20),
disk_count smallint,
size_perdisk int,
host_description text
); #创建数据表host_group_relation(主机与主机组关系表)
create table host_group_relation
(
id int,
host_id int not null,
group_id int not null,
foreign key(host_id) references host_info(host_id),
foreign key(group_id) references host_group(group_id),
primary key(host_id,group_id)
); #向表host_group中插入3条数据
insert into host_group values
(1,'admin','管理员,可操作所有机器,执行任何操作'),
(2,'developer','程序开发人员,只能操作应用服务器'),
(3,'dba','数据库管理员,只能操作数据库服务器'); #向表user_info中插入3条数据
insert into user_info values
(1,'alex',1),(2,'eric',2),(3,'tony',3); #向表host_info中插入3条数据
insert into host_info (host_id,host_name,host_type,address) values
(1,'host1','web','192.168.1.171'),
(2,'host2','application','192.168.1.172'),
(3,'host3','db','192.168.1.173'); #向表host_group_relation中插入5条数据
insert into host_group_relation values
(1,1,1),
(2,2,1),
(3,3,1),
(4,2,2),
(5,3,3);

数据库操作实例

更多请参考:
http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html
http://www.cnblogs.com/yunf/archive/2011/04/12/2013448.html
http://www.cnblogs.com/hoojo/archive/2011/06/20/2085390.html

5 Python MySQL API

5.1 Python 操作 Mysql 模块的安装

linux:
yum install MySQL-python
window:
http://files.cnblogs.com/files/wupeiqi/py-mysql-win.zip

5.2 数据库操作

 #导入Python操作MySQL的模块
import MySQLdb
#创建连接对象
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='mydb')
#创建游标
cur = conn.cursor()
#执行sql语句,返回影响数据库的条数(语句最后传入的是元组)
reCount = cur.execute('insert into UserInfo(Name,Address) values(%s,%s)',('tim','china'))
#同上(语句最后传入的是字典)
# reCount = cur.execute('insert into UserInfo(Name,Address) values(%(id)s, %(name)s)',{'id':,'name':'alex'})
#把修改提交到数据库
conn.commit()
#关闭游标
cur.close()
#关闭数据库连接
conn.close()

单条数据插入

 #导入Python操作MySQL的模块
import MySQLdb
#创建连接对象
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='mydb')
#创建游标
cur = conn.cursor()
#插入的数据列表
li =[
('name1','address1'),
('name2','address2'),
]
#执行批量插入语句
reCount = cur.executemany('insert into UserInfo(Name,Address) values(%s,%s)',li)
#把修改提交到数据库
conn.commit()
#关闭游标
cur.close()
#关闭数据库连接
conn.close()
#打印影响的数据库条数
print reCount

批量数据插入

 #导入Python操作MySQL的模块
import MySQLdb
#创建连接对象
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='mydb')
#创建游标
cur = conn.cursor()
#执行sql语句,返回影响数据库的条数
reCount = cur.execute('delete from UserInfo')
#把修改提交到数据库
conn.commit()
#关闭游标
cur.close()
#关闭数据库连接
conn.close()
#打印影响数据库的条数
print reCount

删除数据

 #导入Python操作MySQL的模块
import MySQLdb
#创建连接对象
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='mydb')
#创建游标
cur = conn.cursor()
#执行sql语句,返回影响数据库的条数
reCount = cur.execute('update UserInfo set Name = %s',('alin',))
#把修改提交到数据库
conn.commit()
#关闭游标
cur.close()
#关闭数据库连接
conn.close()
#打印影响数据库的条数
print reCount

更新数据

 # ##########fetchone/fetchmany(num) ##############
#导入模块
import MySQLdb
#创建连接
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='mydb')
#创建游标
cur = conn.cursor()
#执行sql语句
reCount = cur.execute('select * from UserInfo')
#打印查询到得结果,fetchone每次只取一条,类似文件操作,当前指针指向下一条
print cur.fetchone()
print cur.fetchone()
#类似于文件操作的文件指针移动,相对移动
cur.scroll(-1,mode='relative')
print cur.fetchone()
print cur.fetchone()
#绝对移动
cur.scroll(0,mode='absolute')
print cur.fetchone()
print cur.fetchone()
#关闭游标、连接
cur.close()
conn.close()
#打印影响数据条数
print reCount # ############ fetchall #############
#导入模块
import MySQLdb
#创建连接
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='mydb')
#创建字典操作游标,查询返回的数据为字典形式
#cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
#默认返回数据为序列形式
cur = conn.cursor()
#执行sql语句
reCount = cur.execute('select Name,Address from UserInfo')
#一次性把查询数据从内存中取出
nRet = cur.fetchall()
#关闭游标、连接
cur.close()
conn.close()
#打印
print reCount
print nRet
for i in nRet:
print i[],i[]

查询数据

参考资料:

http://www.cnblogs.com/wupeiqi/articles/5095821.html

python之路——MySQL数据库的更多相关文章

  1. 百万年薪python之路 -- MySQL数据库之 永久修改字符串编码 与 忘了密码和修改密码

    永久修改字符集编码的方法: 在mysql安装目录下创建一个my.ini(Windows下)文件,写入下面的配置,然后重启服务端. [client] #设置mysql客户端默认字符集 default-c ...

  2. 百万年薪python之路 -- MySQL数据库之 存储引擎

    MySQL之存储引擎 一. 存储引擎概述 定义: 存储引擎是mysql数据库独有的存储数据.为数据建立索引.更新数据.查询数据等技术的实现方法 ​ 首先声明一点: 存储引擎这个概念只有MySQL才有. ...

  3. 百万年薪python之路 -- MySQL数据库之 Navicat工具和pymysql模块

    一. IDE工具介绍(Navicat) 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接 ...

  4. python之路--MySQL数据库初识

    一 . MySQL安装 # 下载MySQL地址 https://dev.mysql.com/downloads # 要选稳定的,不要选最新的,稳定的就是半年以上没有出现过bug 现在5.6.43为绝大 ...

  5. 百万年薪python之路 -- MySQL数据库之 完整性约束

    MySQL完整性约束 一. 介绍 为了防止不符合规范的数据进入数据库,在用户对数据进行插入.修改.删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数 ...

  6. 百万年薪python之路 -- MySQL数据库之 常用数据类型

    MySQL常用数据类型 一. 常用数据类型概览 # 1. 数字: 整型: tinyint int bigint 小数: float: 在位数比较短的情况下不精确 double: 在位数比较长的情况下不 ...

  7. 百万年薪python之路 -- MySQL数据库之 用户权限

    MySQL用户授权 (来自于https://www.cnblogs.com/dong-/p/9667787.html) 一. 对新用户的增删改 1. 增加用户 : ①. 指定某一个用户使用某一个ip登 ...

  8. 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(二) -- 多表查询

    MySQL行(记录)的操作(二) -- 多表查询 数据的准备 #建表 create table department( id int, name varchar(20) ); create table ...

  9. 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(一)

    MySQL的行(记录)的操作(一) 1. 增(insert) insert into 表名 value((字段1,字段2...); # 只能增加一行记录 insert into 表名 values(字 ...

随机推荐

  1. Gradle学习系列之一——Gradle快速入门(转)

    参考:https://www.cnblogs.com/davenkin/p/gradle-learning-1.html 记录,不做具体转载

  2. HTTP抓包工具Charles分析

    Charles是一款抓包神器,它是Java开发的跨平台的软件,不仅可以在Mac上使用,Linux以及Window下都是可以使用的,当然需要安装JDK,才能运行,他是收费的,需要进行破解. 破解操作:将 ...

  3. JavaScript如何实现计时功能。

    JavaScript如何实现计时功能. 解答:<script> window.setTimeout( “window.location = ‘http://www.csdn.net ‘; ...

  4. python+selenium之字符串切割操作

    python+selenium之字符串切割操作 在Python中自带的一个切割方法split(),这个方法不带参数,就默认按照空格去切割字段,如果带参数,就按照参数去切割. 新建一个python文件, ...

  5. Domino Web中隐藏附件选择框

    只要在Web Form的最后加入以下代码,并选择Pass-Tru HTML,即可隐藏默认的附件选择框. <div id=attach Style="display:none" ...

  6. 第七篇:两个经典的文件IO程序示例

    前言 本文分析两个经典的C++文件IO程序,提炼出其中文件IO的基本套路,留待日后查阅. 程序功能 程序一打印用户指定的所有文本文件,程序二向用户指定的所有文本文件中写入数据. 程序一代码及其注释 # ...

  7. 面试题思考: 什么是事务(ACID)?

    事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序 执行逻辑单元(Unit). 狭义上的事务特指数据库事务.一方面,当多个应用程序并发访问数据库时,事务可以在这些 ...

  8. 在Windows端安装kafka 提示错误: 找不到或无法加载主类 的解决方案

    在配置好kafka的server.properties文件后,cmd进入命令窗口输入命令:.\bin\windows\kafka-server-start.bat config\server.prop ...

  9. Spinner --- 功能和用法

    第一种方法: 使用Spinner时需要配置选项的资源文件,资源文件为一个string类型的数组 在res下的values文件夹下新建一个xml文件 内容为: <?xml version=&quo ...

  10. hdu1814(2-SAT)

    2-SAT 求出可能的解,但是这个解要是字典序最小的,所以只能采用2-SAT基本思想来解. 从小到大开始,对一个可能的点染色,染为1,然后dfs其所有能到达的点,如果其中出现一个已经标号为-1的话,那 ...