Day053--MySQL
MySQL安装和基本管理https://www.cnblogs.com/majj/p/9160383.html
管理员模式运行cmd
打开终端,输入mysqld,打开服务端.
打开终端,输入mysql,打开客户端.
# 每行命令以 ; 结束
delimiter % # 修改结束符为%
基础知识
将MySQL添加到Windows服务中
#添加到Windows服务:
mysqld --install
#移除Windows服务:
mysqld --remove
注册成服务之后, 以后再启动和关闭MySQL服务时, 仅需执行如下命令:
#启动MySQL服务
net start mysql
#关闭MySQL服务
net stop mysql
登录
输入: select user(); #查看当前登录的账号
当前登录的默认账号为ODBC@localhost
exit退出
如果想切换到root账号登录, 执行命令
mysql -uroot -p
在查看当前用户
select user();
管理员为root(拥有最高权限,管理员账号),密码为空,以无密码的方式登录了管理员账号,是非常危险的一件事情,所以要为管理员账号设置密码
windows 下登录设置密码
设置管理员root账号密码为123
mysqladmin -uroot -p password "123" #在登陆之前,设置初始密码 由于密码为空,因此-p可以不用. 此处要用" ", 用' '容易出问题
update mysql.user set password = password("123") where User="root"; #先登录, 之后给root用户设置密码. 如果直接用password="123"则显示明文密码,用password=password("123")则使用md5加密.
不用管这个警告
之后再登录账号, 不输入密码则会报错.
如果想将原始密码123,设置新密码为456
mysqladmin -uroot -p"123" password"456"修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码, 注意p和password不要有空格
依次执行如下操作:
mysql -uroot -p456
select user()
忘记密码--破解密码
跳过授权方式, 直接登录.
以管理员身份打开cmd
停掉mysql服务端
net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。执行如下命令跳过授权表
跳过授权表
mysqld --skip-grant-tables
2018-06-09 17:12:38 0 [Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
2018-06-09 17:12:38 0 [Note] mysqld (mysqld 5.6.40) starting as process 6052 ...4.再次查看
现在可以任意地更改密码, 执行如下命令
update mysql.user set password = password("123") where User="root";
刷新权限, 执行命令
flush privileges;退出mysql. 执行命令: exit
让用户去加载权限, 以管理员身份进入cmd, 查看当前mysql进程
tasklist |findstr mysql #查看当前mysql的进程, 要在控制台直接查,不要进mysql客户端结束当前的进程, 执行如下命令
taskkill /F /PID 6052 #杀死当前的进程PID
再次执行如下操作, 还原
统一字符编码
进入mysql客户端, 执行\s
为了统一字符编码, 请执行如下操作:
(1) my.ini 文件是mysql的配置文件,
在D:\mysql-5.6.42-winx64文件西创建my.ini文件 (配置文件)
(2) 将如下代码拷贝保存
[mysqld]
# 设置mysql的安装目录 **后面的路径一定是安装sql的目录(自己电脑的)**
basedir=C:\mysql-5.7.22-winx64\mysql-5.7.22-winx64
# 设置mysql数据库的数据的存放目录,必须是data
datadir=C:\mysql-5.7.22-winx64\mysql-5.7.22-winx64\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# mysql端口
port=3306
# 字符集
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
(3) 以管理员身份重启服务, 执行如下命令
net stop mysql
net start mysql
(4) 在cmd中输入mysql进入mysql环境, 执行\s, 显示如下信息, 表示成功.
基本的mysql语句
操作文件夹(库)
增
# 进入客户端后
create database db1 charset utf8;
查
# 查看当前创建的数据库
show create database db1;
# 查看所有的数据库
show databases;
改
alter database db1 charset gbk;
删
drop database db1;
操作文件(表)
use db1; #切换文件夹
select database(); #查看当前所在文件夹
增
create table t1(id int, name char);
查
#查看当前的这张t1表
show create table t1;
# 查看所有的表
show tables;
# 查看表的详细信息
desc t1;
改
# modify修改的意思
alter table t1 modify name char(6);
# 改变name为大写的NAME
alter table t1 change name NAME char(7);
删除
#删除表
drop table t1;
操作文件内容(记录)
增
# 插入一条数据,规定id,name数据leilei
insert t1(id,name) values(1,"mjj01"),(2,"mjj02"),(3,"mjj03");
查
select id from db1.t1;
select id,name from db1.t1;
select * from db1.t1;
改
update db1.t1 set name='zhangsan';
update db1.t1 set name='alex' where id=2;
删
delete from t1; # 清空所有
delete from t1 where id=2;
库的操作
一. 系统数据库
执行如下命令, 查看系统库
show databases;
information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等 performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
mysql: 授权库,主要存储系统用户的权限信息
test: MySQL数据库系统自动创建的测试数据库
二. 创建数据库
求救语法:
help create database;
创建数据库语法
CREATE DATABASE 数据库名 charset utf8;
数据库命名规则
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位基本上跟python或者js的命名规则一样
三. 数据库相关操作
#查看数据库
show databases;
#查看当前库
show create database db1;
#查看所在的库
select database();
#选择数据库
use 数据库名
#删除数据库
DROP DATABASE 数据库名;
# 修改数据库
alter database db1 charset utf8;
四.了解内容
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
五.表的操作
mysql支持的存储引擎
mysql> show engines\G;# 查看所有支持的引擎
mysql> show variables like 'storage_engine%'; # 查看正在使用的存储引擎
- InnoDB 存储引擎
- MyISAM 存储引擎
- NDB 存储引擎
- Memory 储存引擎
- Infobright 存储引擎
- NTSE 存储引擎
- BLACKHOLE 黑洞存储引擎
指定表类型/存储引擎
create table t1(id int)engine=innodb;# 默认不写就是innodb
小练习:
创建四张表,分别使用innodb,myisam,memory,blackhole存储引擎,进行插入数据测试
create table t1(id int)engine=innodb;
create table t2(id int)engine=myisam;
create table t3(id int)engine=memory;
create table t4(id int)engine=blackhole;
查看data文件下db1数据库中的文件:
#.frm是存储数据表的框架结构
# .ibd是mysql数据文件
#.MYD是MyISAM表的数据文件的扩展名
#.MYI是MyISAM表的索引的扩展名
#发现后两种存储引擎只有表结构,无数据
#memory,在重启mysql或者重启机器后,表内数据清空
#blackhole,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录
创建表
语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);注意:
- 在同一张表中,字段名是不能相同
- 宽度和约束条件可选
- 字段名和类型是必须的
创建数据库
create database db2 charset utf8;
使用数据库
use db2;
创建a1表
create table a1(
id int,
name varchar(50),
age int(3)
);插入表的记录
insert into a1 values
(1,'mjj',18),
(2,'wusir',28);查询表的数据和结构
(1)查询a1表中的存储数据mysql> select * from a1;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | mjj | 18 |
| 2 | wusir | 28 |
+------+-------+------+
rows in set (0.02 sec)
mysql>(2)查看a1表的结构
mysql> desc a1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
rows in set (0.16 sec)(3)查看表的详细结构
mysql> show create table a1\G;
*************************** 1. row ***************************
Table: a1
Create Table: CREATE TABLEa1
(
id
int(11) DEFAULT NULL,
name
varchar(50) DEFAULT NULL,
age
int(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
row in set (0.00 sec)复制表
(1)新创建一个数据库db3
mysql> create database db3 charset utf8;
Query OK, 1 row affected (0.00 sec)
(2)使用db3
mysql> use db3;
Database changed
#这是上个创建的db2数据库中的a1表
mysql> select * from db2.a1;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | mjj | 18 |
| 2 | wusir | 28 |
+------+-------+------+
(3)复制db2.a1的表结构和记录
# 这就是复制表的操作(既复制了表结构,又复制了记录)
mysql> create table b1 select * from db2.a1;
Query OK, 2 rows affected (0.03 sec)
(4)查看db3.b1中的数据和表结构
#再去查看db3文件夹下的b1表发现 跟db2文件下的a1表数据一样
mysql> select * from db3.b1;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | mjj | 18 |
| 2 | wusir | 28 |
+------+-------+------+
rows in set (0.00 sec)ps1:如果只要表结构,不要记录
在db2数据库下新创建一个b2表,给一个where条件,条件要求不成立,条件为false,只拷贝表结构
mysql> create table b2 select * from db2.a1 where 1>5;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看表结构:
# 查看表结构
mysql> desc b2;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
rows in set (0.02 sec)
#查看表结构中的数据,发现是空数据
mysql> select * from b2;
Empty set (0.00 sec)
ps2:还有一种做法,使用like(只拷贝表结构,不拷贝记录)
mysql> create table b3 like db2.a1;
Query OK, 0 rows affected (0.01 sec)
mysql> desc b3;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
rows in set (0.02 sec)
mysql> select * from db3.b3;
Empty set (0.00 sec)
删除表
drop table 表名;
Day053--MySQL的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- mysql每秒最多能插入多少条数据 ? 死磕性能压测
前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...
- LINUX篇,设置MYSQL远程访问实用版
每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- 闰秒导致MySQL服务器的CPU sys过高
今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- 当忘记mysql数据库密码时如何进行修改
因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...
随机推荐
- 程序员50题(JS版本)(八)
程序36:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人推出圈子,问最后留下的是原来第几号的那位 var n=20; var arr=[]; for(var i=0;i& ...
- 【设计模式】桥接模式 Bridge Pattern
开篇还是引用吕振宇老师的那篇经典的文章<设计模式随笔-蜡笔与毛笔的故事>.这个真是太经典了,没有比这个例子能更好的阐明桥接模式了,这里我就直接盗来用了. 现在市面上卖的蜡笔很多,各种型号, ...
- 前端开发之基础知识-HTML(二)
1.6 html链接 html链接 <a>标签可以在网页上定义一个链接地址,通过src属性定义跳转的地址,通过title属性定义鼠标悬停时弹出的提示文字框. <a href=&quo ...
- Java关于日期的计算持续汇总~
/** * 00 * 描述:传入Date date.转为 String yyyyMMdd. * [时间 2019-04-18 15:41:12 作者 陶攀峰] */ public static Str ...
- .net core下Redis帮助类
0.引入.net core环境下Redis的NuGet包,StackExchange.Redis,现目前最新的2.0.519. 帮助类Code: using System; using Syste ...
- mssql server for docker on MacOs
1. install 1.下载镜像 docker pull microsoft/mssql-server-linux 使用该命令就可以把数据库的docker镜像下载下来. 2.创建并运行容器 dock ...
- Windows 10 远程连接出现函数错误 【这可能由于CredSSP加密Oracle修正】
win+R 弹出窗口输入gpedit.msc 计算机配置=>管理模板=>系统=>凭据分配=>加密Oracle修正 编辑策略设置=>已启用=>保护级别=>易受攻 ...
- Vue组织架构图组件
vue-tree-chart :deciduous_tree: Vue2树形图组件 安装 npm i vue-tree-chart --save 使用 in template: <TreeC ...
- redis编译 报告错误 jemalloc/jemalloc.h:没有那个文件或目录 解决.
问题原因:没找到jemalloc头文件. 百度谷歌半天没找到有效的下载地址. github中有 到github下载.jemalloc https://github.com/jemalloc/jemal ...
- 好程序员分享该如何选择background-image和img标签
好程序员分享该如何选择background-image和img标签,用img标签 如果你希望别人打印页面时候包含这张图片请使用img标签 当这张图片有非常有意义的语义,比如警告图标,请使用img标签及 ...