这次介绍mysql
以及在python
中如何用pymysql
操作数据库, 以及在mysql
中存储过程, 触发器以及事务的实现, 对应到pymysql
中应该如何操作.
**首先我们在cmd
窗口中展示常见的sql
命令: **
连接数据库
mysql -u root -p
显示数据库 show databases;
创建数据库, 设置默认编码为utf-8
以及默认的排序方式
create
database
pymysql_db
default
charset
utf8
collate
utf8_general_ci;
选择用那个数据库 use pymysql_db;
显示当前数据库所有的表 show tables;
**用户操作以及用户权限部分(不做演示, 不常用, 备查即可): **
创建用户 create user 用户名 @ ip地址 identified by 密码;
删除用户 drop user 用户名 @ ip地址;
用户名修改 rename user 用户名 @ ip地址 to 新用户名@ip地址;
修改指定用户密码 set password for 用户名 @ ip地址 = Password(新密码)
查看权限 show grants for 用户 @ ip地址
给指定用户增加权限 grant 权限 on 数据库.表 to 用户 @ ip地址
取消指定用户的权限 revoke 权限 on 数据库.表 from 用户 @ ip地址
常见权限: 除grant外的所有权限 all privileges
; 无访问权限 usage
; 查询权限 select
; 创建表权限 create
; 删除表内容权限 delete
用户 @ ip地址
表示用户在指定ip地址
下才能访问, 当ip地址
为%
时候表示任意地址均可访问(默认即是)
**数据表的相关操作: **
*userinfo
表创建如下: *
-- 创建一个名为userinfo的表
CREATE TABLE `userinfo` (
-- 创建一个int类型的字段nid, 该字段不能为空, 且自动递增(注意: 一个表中只能允许一个自增的字段)
`nid` INT (11) NOT NULL AUTO_INCREMENT,
-- 创建一个varchar类型的字段name, 默认为空(varchar为变长类型, 这里指的是该字段最多占32位, 但是查询效率不如char定长类型)
`name` VARCHAR (32) DEFAULT NULL,
`color_nid` INT (11) DEFAULT NULL,
-- 指定nid为主键(主键在一个表中是唯一不重复的, 此处可以使用多个字段组合成主键, 只要组合不唯一即可, 主键默认会自动创建索引)
PRIMARY KEY (`nid`),
-- 声明一个名为userinfo_ibfk_1的外键, 该外键由当前表中的color_nid与color表中的nid对应(说白了就是color_nid必须是color表中nid字段具有的值才行)
CONSTRAINT `userinfo_ibfk_1` FOREIGN KEY (`color_nid`) REFERENCES `color` (`nid`)
-- 指定当前数据库的引擎为INNODB, 默认字符集为utf-8(INNODB可支持事务)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
*表color
创建如下: *
CREATE TABLE `color` (
`nid` int(11) NOT NULL AUTO_INCREMENT,
`tag` varchar(32) DEFAULT NULL,
PRIMARY KEY (`nid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
删除表(表结构以及表内容) drop table 表名
删除表内容(自增不会影响) delete from 表名
删除表内容(自增也清零) truncate table 表名
修改表结构
增加一列 alter table 表名 add 列名 类型
删除一列 alter table 表名 drop column 列名
修改列类型 alter table 表名 modify column 列名 新类型;
修改列名称和列类型(类型保持不变也可) alter table 表名 change 原列名 新列名 类型;
指定具体列为主键 alter table 表名 add primary key(列名);
删除指定列的主键 alter table 表名 modify 列名 int, drop primary key;
删除当前表中所有列的主键 alter table 表名 drop primary key;
为当前表中列指定外键 alter table 从表(当前表) add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除外键 alter table 表名 drop foreign key 外键名称
修改默认值 alter table 表名 alter 列名 set default 新默认值;
删除默认值 alter table 表名 alter 列名 drop default;