判断mysql是否安装成功‘
mysqld install
开启mysql
net start mysql
关闭mysql
net stop mysql
用户名密码
mysql -uroot -p
没有密码
在回车
连别人服务器 mysql -uroot -p -hip地址
设置密码
set password = password(‘123’)
选择用户
select user();
创建用户
create user ‘用户名’@‘当前ip’ identified by’234’;
create user ‘用户名’@‘192.168.19.200’
create user ‘用户名’@‘192.168.19.%’
create user ‘用户名’@’%’
给用户授权
立即生效
创建账号并授权
数据库
连接对象
数据库连接对象主要提供获取数据库游标对象和提交/回滚事务的方法,以及如何关闭数据库连接
获取链接对象
connect(dsn,user,password,host,database)
dsn:数据源名称,给出该参数表示数据库依赖
user:用户名
password:密码
host:主机名
database:数据库名称
链接对象的方法
close():关闭数据库连接
commit():提交事务
rollback():回滚事务
cursor():获取游标对象,操作数据库,如执行DML操作,调用存储过程等
事物主要用于处理数据量大,复杂度高的数据。
如果操作的是一系列的动作,比如张三给李四转钱,张三账户金额减少,李四账户金额增加。
这个时候使用事物可以维护数据库的完整性,保证两个操作要么全部执行,要么全部不执行
游标对象
游标对象代表数据库中的游标,用于指示抓取数据 操作的上下文。
主要提供执行SQL语句,调用存储过程,获取查询结果等方法
使用链接对象,获取游标对象
属性:
description:数据列类型和值的描述信息
rowcount:回返结果的行数统计信息
游标方法
方法名 | 说明 |
---|---|
callproc() | 调用存储过程,需要数据库的支持 |
close() | 关闭当前游标 |
execute() | 执行数据库操作,SQL语句或者数据库命令 |
executemany() | 用于批量操作,如批量更新 |
fetchone() | 获取查询结果集中的下一条记录 |
fetchmany() | 获取结果集的所有记录 |
fetchall() | 获取结果集的所有记录 |
nextset() | 跳至下一个可用的结果集 |
arraysize() | 指定使用fetchmany()获取的行数,默认为1 |
setinputsizes() | 设置在调用execute*()方法时分配的内存区域大小 |
setoutputsize() | 设置列缓冲区大小,对大数据列如longs和blobs尤其有用 |
SQLite
嵌入式数据库,数据库就是一个文件
SQLite将整个数据库,包括定义,表,索引以及数据本身,作为一个单独的,可跨平台使用的文件存储在主机中。
Python内置了SQLite3,直接使用,不需要安装
-
添加表
#导入sqlite3 import sqlite3 #链接sqlite db = sqlite.connect("数据库.db") #创建游标 cursor = db.cursor() #添加表 sql = "create table test" #这样如果用在sqlite里面不会成功,因为必须要建立表里面的字段 #正确语句 sql = "create table test(name varchar(20),age int)" #执行sql语句 cursor.execute(sql) #向表中增加列 sql = "alter table test add sex int" cursor.execute(sql) #关闭游标 cursor.close() #关闭数据库 db.close()
-
修改表名称
#导入sqlite3 import sqlite3 #建立sqlite链接 conn = sqlite3.connect("数据库.db") #创建游标 cursor = conn.cursor() #操作sql语句 sql = "alter table "
-
删除表
-
查询表
sqlite3里面有一个sqlite_master这个系统表,里面 type TEXT, #类型:table-表,index-索引,view-视图 name TEXT, #名称:表名,索引名,视图名 #查看所有表的sql语句为 sql = "select name from sqlite_master where type = "table" order by name"
Python操作数据库通用流程
创建connection()
获取cursor
使用cursor操作SQL语句,处理数据结果
关闭cursor
关闭connection
MySql
mysql常用命令
-
启动Mysql
net start mysql
-
mysql登陆
mysql -u root -p回车输入密码
密码
链接mysql
#使用pymysql模块
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","root","day01")
#创建游标
cursor = db.cursor()
#执行sql语句
sql = "select * from t_info"
cursor.excute(sql)
#获取单条数据
data = cursor.fetchone()
print(data)
#关闭游标
cursor.close()
#关闭数据库
db.close()
MySQL
第一章 初识MySQL
开源关系型数据库管理系统
-
数据库基础
数据库是由一批数据构成有序的集合
-
什么是数据库
数据库的发展:人工管理,文件系统,数据库系统
数据库的种类:层次式,网络式,关系式
数据库是一个长期存储在计算机内的,有组织的,有共享的,统一管理的数据集合
保管数据的仓库,数据管理的方法和技术
数据库的特点:实现数据共享,减少数据冗余,采用特定的数据类型,具有较高的数据独立性,具有统一的数据控制功能
-
表
关系数据库,表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构
行被称为记录,组织数据的单位
列被称为字段,记录的属性,有相应的描述信息。如数据类型,数据宽度
-
数据类型
数据类型决定了数据在计算机中的存储方式,代表不同的信息类型
表中每一个字段就是某种指定的数据类型
-
主键
用于唯一地标识表中的每一条记录
可以定义表中的一列或多列为主键
主键列上不能有两行相同的值,也不能成为空值
-
-
数据库技术构成
数据库系统由硬件部分和软件部分共同构成,硬件用于存储数据库中的数据
软件则是DBMS,支持DBMS运行的操作系统,以及多语言进行应用开发的访问技术
-
数据库系统
数据库系统有3个主要的组成部分:
数据库:用于存储数据的地方
数据库管理系统:用于管理数据库的软件
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充
-
SQL语言
结构化查询语言
对数据库进行查询和修改操作的语言
数据定义语言DDL:drop,create,alter
数据操作语言DML:insert,update,delete
数据查询语言DQL:select
数据控制语言DCL:grant,revoke,commit,rolllback
-
数据库访问接口
odbc:统一的方式处理所有数据库
jdbc:java语言编写的类和接口组成
pdo:php写的数据库接口
python3使用的是:pymysql
-
-
什么是MySQL
-
客户端-服务器软件
c/s架构。
服务器是整个应用系统资源的存储与管理红心,多个客户端则各自处理相应的功能,共同实现完整的应用
客户端传送给数据库服务器,数据库服务器处理后返回给用户,减少网络数据传输量
-
MySQL版本
community:社区版,免费,官方不提供支持
enterprise:企业版,付费
-
MySQL优势
运行速度快
免费
容易使用
可以移植
丰富的接口
查询语言
安全和连接
-
MySQL5.6功能
子查询最佳化
-
-
MySQL工具
-
如何学习MySQL
第二章 MySQL的安装与配置
第三章 数据库的基本操作
-
创建数据库
使用
create database 数据库名
来创建数据库 -
删除数据库
drop database 数据库名
使用drop database会删除表和数据,而且不能恢复
-
修改数据库
-
查看数据库
使用
show databases
查看所有存在的数据库使用
use 数据库名
来选择数据库查看数据库的信息
show create database 数据库名\G
-
数据库存储引擎
show engines查看存储引擎
第四章 数据表的基本操作
数据表定义为列的集合
数据表属于数据库,在操作表之前应该使用use 数据库名指定操作是哪个数据库中进行
-
创建数据表
-
创建表的语法形式
create table 表名( 字段名 数据类型 约束条件 默认值 ) --创建员工表tb_emp create table tb_emp( id int unsinged primary key not null, name varchar(32), deptld int, salary float )charset = utf8
-
使用主键约束
表中一列或多列的组合
主键约束要求主键列的数据唯一,并且不允许为空
主键能够唯一地表示表中的一条记录
可以结合外键来定义不同数据表之间的关系
加快数据库查询的速度
-
单字段主键
①定义列的同时定义主键②定义完所有列之后定义主键
字段名 数据类型 primary key
#定义数据表tb_emp2,主键为id create table tb_emp2( id int primary key, name varchar(32) )charset = utf8
-
多字段联合主键
主键由多个字段联合组成
#定义数据表tb_emp4,设置name,deptld联合主键 create table tb_emp4( id int, name varchar(32), deptld int, primary key(name,deptld) )
-
使用外键约束
外键用来在两个表的数据之间建立连接
一个表可以有一个或多个外键
外键对应的是参照完整性,一个表的外键可以为空值
若不为空值,则每一个外键值必须等于另一个表中主键的某个值
外键保证:
表中的一个字段,可以不是本表的主键,但对应另外一个表的主键
外键的主要作用是保证数据引用的完整性
定义外键后,不允许删除再另一个表中具有关联关系的行
外链的作用是保持数据的一致性,完整性
主表:对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表
从表:对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表
创建外键的语法:
constraint 外键名 foreign key(字段名) references 主表名(主键列) #定义数据包tb_emp5,创建外键约束 create table tb_emp5( id int primary key, name varchar(32), deptid int constraint deptid_out foreign key(deptid) references tb_emp5(id) )
字表的外键必须关联父表的主键,且关联字段的数据类型必须匹配
-
使用非空约束
非空约束指字段的值不能为空
对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错
语法:
字段名 数据类型 not null
-
使用唯一性约束
唯一性约束要求该列唯一,允许为空,但只能出现一个空值
唯一约束可以确保一列或者几列不出现重复值
语法:
字段名 数据类型 unique #定义数据表,指定部门名称唯一 create table tb_emp6( id int primary key not null, name varchar(32), dname varchar(32) unique )charset = utf8 #定义所有列之后指定唯一约束 constraint 约束名 unique(字段名)
-
使用默认约束
默认约束指定某列的默认值
字段名 数据类型 default 默认值 #默认性别不写为男同学 create table tb_emp7( id int primary key not null, name varchar(32), sex char(1) default "男", constraint names unique(name) )charset = utf8
-
设置表的属性自动增加
一个表只能有一个字段使用auto_increment
字段名 数据类型 auto_increment create table tb_emp( id int primary key auto_increment, name varchar(32) default "帅帅" )charset = utf8
-
-
-
查看数据表结构
-
describe/desc
查看表的字段信息,包括字段名,字段数据类型,是否为主键,是否有默认值
语法;
describe 表名 desc 表名
-
show create table 表名\G
查看创建表时的create table语句
还可以查看存储引擎和字符编码
如果不加\G,显示的结果可能非常混乱,加上之后,显示的结果更加直观,易于查看
-
-
修改数据表
修改表中已经存在的数据表的解构
-
修改表名
alter table 旧表名 rename to 新表名
-
修改字段的数据类型
alter table 表名 modify 字段名 数据类型
-
修改字段名
alter table 表名 change 旧字段名 新字段名 新数据类型
-
添加字段
alter table 表名 add 新字段名 数据类型 #想要添加的字段在某一列,只需要在add最后写 first 比如加载第一列 alter table 表名 add 新字段名 数据类型 first #表的指定列之后添加一个字段 alter table 表名 add 新字段名 数据类型 after 要添加的字段后面
-
删除字段
alter table 表名 drop 字段名
-
修改字段的排列位置
alter table 表名 modify 字段1 数据类型 first|after 字段2
-
更改表的存储引擎
-
删除键的外键约束
外键一旦删除,就会解除主表和从表之间的关联关系
alter table 表名 drop foreign key 外键约束名
-
-
删除数据表
删除数据表会将表和表中的数据都会被删除
删除表之前先做备份
- 删除没有被关联的表
- 删除被其他表关联的主表
每个表中都要有一个主键吗?
并不是每一个表中都需要主键,一般在多个表之间进行连接操作时才需要用到主键
因此并需要为每个表建立主键,而且有些情况最好不要使用主键
第五章 数据类型和运算符
- MySQL数据类型介绍
- 整数类型
- 浮点类型和定点数类型
- 日期与时间类型
- 字符串类型
- 二进制类型
- 如何选择数据类型
- 运算符介绍
- 运算符概述
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 运算符的优先级
- 运算符的使用
第六章 MySQL函数
- MySQL函数简介
- 数学函数
- 字符串函数
- 日期和时间函数
- 条件判断函数
- 系统信息函数
- 加密函数
- 其他函数
第七章 查询数据
- 基本查询语句
- 单表查询
- 使用集合函数查询
- 连接查询
- 子查询
- 合并查询结果
- 为表和字段取别名
- 使用正则表达式查询
第八章 插入,更新与删除数据
- 插入数据
- 更新数据
- 删除数据