一,mysql安装

 下载地址 https://dev.mysql.com/downloads/file/?id=471342
解压后,将目录C:\mysql-5.7.19-winx64\bin添加到计算机环境变量中 用CMD命令行执行,mysqld --initialize-insecure 初始化数据库,这样C:\mysql-5.7.19-winx64
这个目录下就会产生data的目录,里面包含的就是初始化的东西,配置文件,用户密码信息
-insecure 这个参数就是告诉数据库登陆的时候以本地管理员的身份登陆,不需要密码 用CMD命令行执行,mysqld,启动mysql,然后通过mysql -uroot -p 登陆到数据库里,退出是quit
用CMD命令行执行,tasklist |findstr mysql 查看mysql运行状态,PID
taskkill /PID 16504 /F 终止msyql运行
在计算机搜索栏,services.msc打开系统服务,查看有没有mysql这个服务,可以通过服务来控制开启和关闭
注意,这里需要用管理员身份来运行这个CMD
用CMD命令行执行,mysqld --install 来添加这个服务,之后你就可以通过系统服务来控制启动,关闭
用CMD命令行执行,mysqld --remove 移除这个服务
用什么方式启动,就用什么方式停止 因为现在没有密码,咱们设置个密码
mysqladmin -uroot passwor 123 密码是123

二,密码找回

 mysqld --skip-grant-tables  跳过授权表启动mysql,可以通过空密码登陆
在数据库里面更改密码
update mysql.user set authentication_string=password('') where user='root' and host='localhost';
flush privileges;
解释:
password 这个是将你的密码存储的时候存储的不是明文,在5.6之前,密码叫做password,5.7叫做authentication_string
where后面接条件,user是用户,host是哪台机器 第二种方式,先停止mysql,跳过配置文件跳过授权表
在C:\mysql-5.7.19-winx64目录下创建一个,my.ini文件,里面写
[mysqld]
skip-grant-tables
然后起mysql,会加载这个配置文件
用CMD命令行执行mysql,就可以空进去

三,配置文件

 [mysqld]
default-storage-engine=INNODB 默认的存储引擎,默认就是
innodb_file_per_table=1 每一个表都有一个自己的数据文件,很早以前只有一个表结构,数据都放在一起,不安全
;skip-grant-tables 跳过授权表
port=3306 默认端口
character_set_server=utf8 设置默认字符编码,创建数据库的时候都是这个编码了
#mysql的安装目录
basedir=C:\mysql-5.7.19-winx64
#data数据目录
datadir=C:\mysql-5.7.19-winx64,默认是安装的目录,也可以自己指定
在ini文件里面,# ;都是注释的意思
如果改变数据目录,一定要重新初始化,那么之前的密码配置都会变成默认
注意,上面的操作一定是新安装的时候才可以,如果有数据了,这样做你的数据也没了 注意,配置文件my.ini需要用pycharm写,用windows写有问题
配置文件
[mysqld] #针对mysqld这个命令
pass [client] 全局客户端
user=root
password='' 密码,有的话就写,没有话就是空,在登陆的时候,可以直接mysql就可以了 [mysql] 局部客户端,针对mysql客户端,这个命令
user=root
password=''
配置文件做如上更改的话,用mysql就可以直接登录
如果有mysql,就会用mysql里面账号登录,没有的话用client
这个配置不需要重启,只是针对命令,但是如果是mysqld有变动,就需要重启了

四,存储

 innodb引擎支持事务回滚,存储数据更安全,库下面存放表结构,数据
myisam引擎速度快,不支持失误回滚,不安全,库下面存放表结构,数据,索引 **用这个引擎的表,插入数据跟innodb一样,性能上有差异
memory引擎速度快,数据存储在内存,库下面只有表结构 **用这个引擎的表,插入数据跟innodb一样,重启mysql之后就没了
blackhole引擎,黑洞,垃圾数据可以往里面加,库下面只有表结构 **用这个引擎的表,插入数据就会没有,被当垃圾回收

五,创建账号

 select user(); 查看当前用户在哪里登录
help create;查询帮助 help create user;查看创建用户的帮助 服务端创建账号
创建本地账号
cteate user 'egon'@'localhost' identified by '';
创建远程账号
cteate user 'egon'@'%' identified by '';
创建网段账号
cteate user 'egon'@'192.168.20.' identified by ''; 客户端登录账号
mysql -uegon -p123
mysql -h192.168.20.97 -uegon -p123 -h服务端地址 如果输入错误在最后面加入 \c就是取消了,不需要加;
create databse 'db;
这样的输入错误,\c是结束不了,需要先'\c这样,因为引号是成对

六,简单增删改查

 数据库操作,都是在mysql里面操作
create database db1; 创建数据库,这样data目录下就会有个db1的目录
create database db1 charset utf8; 在创建数据库的时候指定字符编码
show create database db1; 查看单个数据库信息
show databases; 查看所有数据库
drop database db1; 删除数据库
alter database db1 charset utf8; 修改数据库字符编码
user db2; 切换数据库
select database(); 返回当前在哪个数据库下 表操作,切换到数据库下
create table t1(id int,name char)engine=innodb; 创建表
t1是表名,括号里面是字段,int,整形 char,字符串,engine=innodb指定存储引擎,默认就是innodb,可不加
t1.frm 表结构,t1.ibd 数据 ib就是InnoDB引擎
show create table t1; 查看表
show tables; 查看当前数据库下的表
drop table t1; 删除表 插入数据,如果表的字段有三个,那我插的时候也是三个,就是按位置传参数,少一个不行
insert into t1 values(1,'egon',18);
insert into t1(id) values(1,'egon'); 这样报错,传入的参数多
insert into t1(id) values(1); 这样就是传一个,其他字段就是空
查表数据
select id,name,age from t1; 可以用*代表id,name,age就是所有

详细的增删改查,对于表操作

 首先要创建表
create table t1(id int,name char(10))engine=innodb default charset utf8;
插入数据,可以多插入
insert into db1.t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
insert into db1.t1(name) values('egon1'),('egon2'),('egon3');这样的话,id就是空
查看信息
select * from db1.t1;
select name,id from db1.t1;
修改信息
update db1.t1 set name='sb' where id=4; 条件这块写name='egon3';
也可以,等号字符后面有空格可以忽视,前面的话就不成功
删除信息
delete from t1 where id=4; 删除id=4这行
delete from t1; 清空表
truncate t1; 清空表,大数据比上面快,delete删除会一条一条删除,要判断 3.2 插入递增数据
create table t1(id int not null,name char(10)); id这块不能为空,如果在插入数据没有id的时候就会报错
create table t1(id int primary key auto_increment,name char(10));
create table t1(id int not null unique auto_increment,name char(10));
primary key 主键,不为空,而且是唯一的
not null unique 主键,不为空,而且是唯一的
auto_increment 递增
insert into t1(name) values('egon1'),('egon2'),('egon3'); 插入数据,id递增
select * from t1 where id>2; 利用主键查询速度快
如果用delete from t1; 清除表,id还是递增的,用truncate t1; 清空表,就是从1开始 约束可通过desc t1查看 pri就是主键 3.3 拷贝表
create table t2 select * from t1; 拷贝出来的是表结构和数据,但是主键,约束没有拷贝过来
create table t2 select * from t2 where 1=2; 拷贝表结构,因为后面条件不成立 3.4 修改主键
desc t2,没有主键,我们创建这个主键,其实是修改
alter table t2 modify id int primary key auto_increment; 修改字段增加主键 3.5 删除记录
delete 删除的是一条记录
delete from t1 where id=1; 删除一条记录
update t1 set name='' where id=1;
如果删除字段值,其实就是修改,不加where 就是修改这个表所有的该段记录

七 授权权限,insert,delete,update,select

 先创建账号
create user 'lin'@'localhost' identified by '';
级别1,对所有库下所有表下的所有字段
grant select on *(所有库).*(所有表) to 'lin'@'localhost';
可以合并授权加创建账号
grant select on *(所有库).*(所有表) to 'lin'@'localhost' identified by ''; 级别2,对db1下所有表的所有字段
grant select on db1.*(所有表) to 'lin'@'localhost' identified by ''; 级别3,对db1.t1表下的所有字段
grant select on db1.t1 to 'lin'@'localhost' identified by ''; 级别四,对db1.t1表下的id,name字段
grant select (id,name) on db1.t1 to 'lin'@'localhost' identified by '';
select id,name from t1;
grant select (id,name),update(name) on db1.t1 to 'lin'@'localhost' identified by '';
可以修改这个name这个字段
update t1 set name='Egon' where id=1; flush privileges; 授权完需要刷新这个权限 移除权限
revoke select on db1.* from 'egon'@'localhost'; 移除权限
help revoke msyql库下,这些表掌控的就是权限表
user 所有库级别权限就是root权限
db 单个库权限
tables_priv 单个表权限
columns_priv 字段权限

八 字符编码

 默认是latin文,是没有办法插入中文,你就需要更改这个表的字符集
show create table t1;
alter table t1 charset utf8;
但是还是插入不进去,因为有些字段可能还是latin文,所以要针对这个字段做些更改
alter table t1 modify name char(10); 我这里重新定义一下这个字段,那么他就会按照表的字符编码设置了
配置文件这块修改默认字符集,需要用Pycharm修改,本地修改不生效
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8 5.7版本修改参数
;default-character-set=utf8 老版本
重启生效 \s 查看数据库一些配置信息,能看到服务端,数据库,客户端,客户端连接所有字符编码是不是utf8

python开发mysql:mysql安装(windows)&密码找回&存储引擎简介&库表的增删改查的更多相关文章

  1. python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)

    day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...

  2. Mysql数据表的增删改查

    ---恢复内容开始--- Mysql数据表的增删改查 1.创建表   语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...

  3. mysql 数据表的增删改查 目录

    mysql 表的增删改查 mysql 表的增删改查 修改表结构 mysql 复制表 mysql 删除表

  4. MySQL数据库之表的增删改查

    目录 MySQL数据库之表的增删改查 1 引言 2 创建表 3 删除表 4 修改表 5 查看表 6 复制表 MySQL数据库之表的增删改查 1 引言 1.MySQL数据库中,数据库database就是 ...

  5. MySQL数据库安装,MySQL数据库库的增删改查,表的增删改查,表数据的基本数据类型

    一 MySQL的安装 MySQL现在属于甲骨文公司,所以和java语言匹配度较高,同时甲骨文公司的另一种数据库为Oracle,两者同为关系型数据库,即采用关系模型来组织数据,以行和列的方法来存储数据的 ...

  6. Mysql数据库和表的增删改查以及数据备份&恢复

    数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 ...

  7. python全栈开发day62-两表操作增删改查,外键,if else模板语法

    一.今日内容总结: day62 内容回顾: 1. django有关所有命令: pip install django==1.11.14 django-admin startproject 项目名称 cd ...

  8. mysql常见操作语句,建表,增删改查

    用户操作 新建用户 grant 权限 on 数据库.表名 to 用户名@'访问地址' identified by "密码"; 新建一个可以远程访问数据库的用户 test, 密码:p ...

  9. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. Spring:通配符的匹配很全面, 但无法找到元素 XXXXX' 的声明

    问题:配置Spring的时候容易发生如题的这样一个经常性的错误,错误如下(以context为例) org.springframework.beans.factory.xml.XmlBeanDefini ...

  2. 关于有时候Servlet会被执行两次的问题

    用<a>标签做了下载跳转,为什么点一次,servlet会被执行两次? 写了一个最简单的文件下载 点击超链接向servlet发送一个请求,然后下载该文件.可是每次该servlet都会被访问两 ...

  3. Sql server锁机制

    如何查看锁 了解SQL Server在某一时间点上的加锁情况无疑是学习锁和诊断数据库死锁和性能的有效手段.我们最常用的查看数据库锁的手段不外乎两种: 使用sys.dm_tran_locks这个DMV ...

  4. python学习笔记(excel+unittest)

    准备先利用之前整理的python自带的unittest框架 整合excel 实现接口自动化测试功能 先看看excel表格设置: 下来是对excel获取的代码: #!/usr/bin/env pytho ...

  5. WPF关于改变ListBoxItem的颜色的注意事项以及如何找到ListBox中的ItemsPanel

    在ListBox中碰到过几个问题,现在把它写出来: 第一个就是在ListBoxItem中当我用触发器IsSelected和IsMouseOver来设置Background和Foreground的时候, ...

  6. Ajax基础(三)--eval的使用

    eval的使用: 1.定义和用法 计算某个字符串,并执行其中的js代码 eval(string) string必须,含有表达式或执行语句 string有返回值的话 2.实例 2.1 字符串上该用eva ...

  7. python tesseract-ocr 基础验证码识别功能(Windows)

    一.环境 windows 7 x64 Python 3 + 二.安装 1.tesseract-ocr安装 http://digi.bib.uni-mannheim.de/tesseract/ 2.py ...

  8. java10---点餐系统

    public class OrderMsg { public static void main(String[] args) throws Exception { /** * 订餐人姓名.选择菜品.送 ...

  9. 【python】命令行解析工具getopt用法

    处理命令行参数的模块 用法: opts, args = getopt.getopt( sys.args[1:],  shortStr,  longList) 输入: shortStr 形式如下: &q ...

  10. debounce与throttle区别

    在2011年,Twitter网站曾爆出一个问题:在主页往下滚动时,页面会变得缓慢以致没有响应.John Resig发表了一篇文章< a blog post about the problem&g ...