-
mysql数据库管理
【注:大部分命令不区分大小写】
-
SQL语言的作用是什么?
结构化查询语言(structured query language)简称SQL
数据查询语言(DQL)= 查
数据定义语言(DDL)= 增删改
数据操纵语言(DML)= 插入 更新
数据控制语言(DCL)= 控制用户访问权控制
-
使用SQL语言的常见错误?
SQL语句语法错误,如缺少标点、括号等
表或视图不存在
SQL语句中混入了不合法的关键词
字段定义模糊
完整性约束冲突
不能创建操作系统文件
- 常见MySQL字段含义
自增长:auto_increment
非空:not null
默认值:default
唯一:unique
指定字符集:charset
主键:primary key
- 常见的MySQL语句命令
进入mysql 命令行:mysql -uroot -p;
查看所有数据库:show databases;
创建数据库:create database niu charset utf8;
删除数据库:drop database niu;
选择数据库:use databases;
查看所有表:show tables;
查看创建数据库的语句:show create database databasename;
查看创建表的语句:show create table tablename;
查看表结构:desc tablenmae;
- 库操作
创建数据库:create database shujukuba;
创建带字符集的数据库:create database mydb2 CHARACTER SET=utf8;
创建带校验的数据库:create database mydb3 CHARACTER SET=utf8 COLLATE utf8_general_ci;
显示数据库:show databases;
删除数据库:DROP DATABASE shujukuba;
修改数据库编码:ALTER DATABASE shujukuba character set gb2312;
- 查看数据库默认是什么引擎和支持哪些引擎
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.03 sec)
默认为innoDB引擎
- 查看数据库结构;查看数据库列表信息;格式:show databases;
root@mysql ~]# netstat -anpt|grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2131/mysqld
[root@mysql ~]# mysql -uroot -p123123
mysql> show databases;
- 查看数据库中的数据表信息;格式:use 数据库名;show tables;
mysql> use mysql;
mysql> show tables;
| ndb_binlog_index |
| user |
24 rows in set (0.01 sec)
- 显示数据表的结构(字段);格式:describ [数据库.]表名
mysql> describe mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | |
| Select_priv | enum('N','Y') | NO | | N | |
| authentication_string | text | YES | | NULL | |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.00 sec)
mysql> use mysql;
Database changed
mysql> describe user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI |
-
DDL语句操作
数据定义语言,用于增删改数据库的对象,如库、表、索引等
- create 创建新库、创建新表
create table 表名(
列名1 类型(长度) [约束], );
格式: create database 数据库名;create tables表名(定义字段);
mysql> create database auth; 【新建一个名为auth的数据库】
Query OK, 1 row affected (0.00 sec)
mysql> use auth; 【使用auth 这个数据库】
Database changed
mysql> create table users (user_name char(20) not null, user_passwd char(30) default '', primary key (user_name));【其中''是俩个单引号,这个的意思是在auth库中,创建名为users的表,表内两个字段为(user_name最多20个字节 不能为空,user_passwd 最多30个字节 默认为空,索引关键字user_name)】
- 长度区别
- int类型带长度:不影响存取值,即使设定的值超出了长度的范畴,也能存,如果没有达到设定的长度,则使用空格自动填充到设定的长度
- char类型:不可变字符,设定的长度就是规定当前字段能存的数据的最大长度,若超出长度,则会报错,若没有达到长度,使用空格填充到设定的长度
- varchar:可变字符,设定的长度同样是规定当前字段能存的数据的最大长度,若超出长度,则会报错,若没有达到长度,不会使用空格填充,实际多长就是多长
- 表约束
1.非空约束 NOT NULL
2.默认值约束 DEFAULT '男'
3.唯一约束 UNIQUE
4.主键约束 PRIMARY KEY
- 查看表结构
DESC 表名
mysql> desc user;
+-----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| user_name | char(20) | NO | | NULL | |
+-----------+----------+------+-----+---------+-------+
1 row in set (0.00 sec)
- 同时对多表名进行改名
mysql> rename table ali to ali0,deng to deng0; ##同时把表名ali改为ali0,deng改为deng0
Query OK, 0 rows affected (0.01 sec)
- 删除库、删除表
格式: drop tables [数据库名.]表名;drop database 数据库名;
mysql> drop table auth.users;【删除auth库的users表】
Query OK, 0 rows affected (0.00 sec)
mysql> drop database auth;【删除auth数据库】
Query OK, 0 rows affected (0.00 sec)
修改表名(前提是进入数据库中)
alter table user ios; ##把表名user修改为ios
或者
mysql> rename table ios to you; ##把表名ios修改为you
Query OK, 0 rows affected (0.01 sec)
修改列名
Alter table 表名 change 列名 新列名 类型;
修改列类型
Alter table 表名 change 列名 列名 新类型;
修改列类型
Alter table 表名 modify 列名 新类型;
-
数据查询-单表
查询表中全部信息
select * from 表名;
mysql> select * from zt_team;
+----+------+---------+----------------+--------------+---------+------------+------+-------+----------+----------+------+-------+
| id | root | type | account | role | limited | join | days | hours | estimate | consumed | left | order |
+----+------+---------+----------------+--------------+---------+------------+------+-------+----------+----------+------+-------+
| 1 | 1 | project | dev3 | 研发 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 |
| 2 | 1 | project | productManager | 产品经理 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 |
| 3 | 1 | project | tester2 | 测试 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 |
| 4 | 1 | project | tester1 | 测试 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 |
| 5 | 2 | project | projectManager | 项目经理 | no | 2013-02-20 | 365 | 7.0 | 0.00 | 0.00 | 0.00 | 0 |
5 rows in set (0.00 sec)
查询表中指定列的信息
select 列1,列2 from 表名;
mysql> select type,role from zt_team; ##查看表zt_team中tpye和role列的信息
+---------+--------------+
| type | role |
+---------+--------------+
| project | 研发 |
| project | 产品经理 |
| project | 测试 |
数据去重
select distinct 列…. From 表名;
mysql> select distinct type from zt_team; ##只查看表zt_team中列type中的不重复的数据
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 229
Current database: zentao+---------+
| type |
+---------+
| project |
+---------+
1 row in set (0.10 sec)
拼接结果
select concat(列1,列2) from 表名;
mysql> select concat (type,role) from zt_team; ##把表zt_team中type列和role列的数据拼接在一起
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 230
Current database: zentao+---------------------+
| concat (type,role) |
+---------------------+
| project研发 |
| project产品经理 |
| project测试 |
| project测试 |
运算符优先级:
1.乘法和除法的优先级高于加法和减法
2.同级运算的顺序是从左到右
3.表达式中使用"括号"可强行改变优先级的运算顺序
select 列1[+-*/]列2 from 表名;
设置别名(注意:关键字as可以省略)
select 列 as 别名 from 表名;
select 列 别名 from 表名;
- 条件查询
select 列… from 表名 where 条件;
mysql> select id from zt_team where id>10;
+----+
| id |
+----+
| 11 |
| 12 |
| 13 |
| 14 |
- 条件中比较运算符:( 等于:= 大于:> 大于等于:>= 小于:< 小于等于:<= 不等于:!= 或 <> )
where 列 比较运算符 值;
mysql> select id from zt_team where id = 10;
+----+
| id |
+----+
| 10 |
+----+
1 row in set (0.01 sec)
注意:字符串、日期需使用单引号括起来
语句的执行顺序:from—>where—>select
- 逻辑运算符( 并且:and 或 && 或:or 非:not 或 ! )
where 条件1 逻辑运算符 条件2;
where not 条件;
mysql> select id from zt_team where id=1 or id=10;
+----+
| id |
+----+
| 1 |
| 10 |
+----+
2 rows in set (0.01 sec)
mysql> select id from zt_team where not id>2;
+----+
| id |
+----+
| 1 |
| 2 |
+----+
2 rows in set (0.05 sec)
- 范围查询
where 列 between 条件1 and 条件2; //列在这个区间的值
where 列 not between 条件1 and 条件2; //不在这个区间
where !( 列 between 条件1 and 条件2 ); //同样表示不在这个区间
mysql> select id from zt_team where id between 5 and 10 ;
+----+
| id |
+----+
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+----+
6 rows in set (0.00 sec)
mysql> select id from zt_team where id not between 2 and 23;
+----+
| id |
+----+
| 1 |
| 24 |
| 25 |
| 26 |
+----+
4 rows in set (0.01 sec)
mysql> select id from zt_team where !(id between 2 and 23);
+----+
| id |
+----+
| 1 |
| 24 |
| 25 |
| 26 |
+----+
4 rows in set (0.00 sec)
- 设置别名(注意:关键字as可以省略)
select 列 as 别名 from 表名;
select 列 别名 from 表名;
mysql> select account as act from zt_team; ##不改变数据库表的列名,只在命令输入后显示时改变别名
+----------------+
| act |
+----------------+
| dev1 |
| dev2 |
| dev3 |
| productManager |
mysql> select * from zt_team; ##查看时还是原来的列名
+----+------+---------+----------------+--------------+---------+------------+------+-------+----------+----------+------+-------+
| id | root | type | account | role | limited | join | days | hours | estimate | consumed | left | order |
+----+------+---------+----------------+--------------+---------+------------+------+-------+----------+----------+------+-------+
| 1 | 1 | project | dev3 | 研发 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 |
mysql> select account zct from zt_team; ##同第一条
+----------------+
| zct |
+----------------+
| dev1 |
| dev2 |
- 集合查询( 判断列的值是否在指定的集合中 )
where 列 in(值1,值2); //列中的数据是in后的值里面的
where 列 not in(值1,值2); //不是in中指定值的数据
mysql> select id from zt_team where id in(1,5);
+----+
| id |
+----+
| 1 |
| 5 |
+----+
2 rows in set (0.00 sec)mysql> select id from zt_team where id not in(3,4,5,6,7,8);
+----+
| id |
+----+
| 1 |
| 2 |
- NULL值查询( 注意:列中值为null不能使用=去查询 )
where 列 is null; //查询列中值为null的数据
- 模糊查询
%:表示0到多个字符,示例:
where 列 like '%0'; //表示以0结尾
where 列 like '0%'; //表示以0开头
where 列 like '%0%'; //表示数据中包含0
- _:表示一个字符,可多次使用,示例:
where 列 like '%0_'; //数据结尾第二位是0
- 结果排序( 对查询出的结果按照一列或多列进行升序还是降序排列 升序:asc 降序:desc 注意:不能使用中文的别名排序)
where 条件 order by 列 [asc/desc]
mysql> select id from zt_team where id>10 order by id desc;
+----+
| id |
+----+
| 26 |
| 25 |
| 24 |
| 23 |
| 22 |
| 21 |
| 20 |
| 18 |
| 17 |
| 16 |
| 15 |
| 14 |
| 13 |
| 12 |
| 11 |
+----+
15 rows in set (0.00 sec)
语句的执行顺序:from—>where—>select—>order by
- 分页查询( beginIndex:表示从第多少条数据开始 pageSize:表示每页显示的数据条数 )
where [条件] limit beginIndex,pageSize;
mysql> select id from zt_team where id>0 limit 0,3;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
+----+
3 rows in set (0.00 sec)
beginIndex公式:(当前页数-1)*pageSize
- 聚集函数( 作用于一组数据,并对一组数据返回一个值 )
COUNT:统计结果记录数,若统计的是列,列中为Null,那么count将不会计算值
MAX: 统计计算最大值
MIN: 统计计算最小值
SUM: 统计计算求和
AVG: 统计计算平均值
分组函数( 注意:如果要对分组后的数据进行筛选,那么必须使用having关键字,条件写在having后 )
select 聚集函数 from 表名 where [条件] group by 列 having 分组后的条件
语句的执行顺序:FROM—> WHERE—>group by---->Having—>SELECT-->ORDER BY
Where和having的区别:
Where: 先过滤已有的数据(数据是已经存在的),在进行分组,在聚集计算
Having:先分组,在对每组进行计算,根据得到结果在过滤(分组把数据算出之后,在过滤)
注意:使用having的时候,它是可以使用别名的
-
数据查询-多表
- 交叉连接:又名笛卡尔积,使用交叉连接会产生笛卡尔积
- 假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
select * from 表1,表2
mysql> select * from zt_team,zt_todo;
+----+------+---------+----------------+--------------+---------+------------+------+-------+----------+----------+------+-------+----+-----------+------------+-------+------+--------+-------+---------+-----+--------------+------+--------+---------+--------+------------+------------+---------------------+------------+---------------------+----------+---------------------+
| id | root | type | account | role | limited | join | days | hours | estimate | consumed | left | order | id | account | date | begin | end | type | cycle | idvalue | pri | name | desc | status | private | config | assignedTo | assignedBy | assignedDate | finishedBy | finishedDate | closedBy | closedDate |
+----+------+---------+----------------+--------------+---------+------------+------+-------+----------+----------+------+-------+----+-----------+------------+-------+------+--------+-------+---------+-----+--------------+------+--------+---------+--------+------------+------------+---------------------+------------+---------------------+----------+---------------------+
| 1 | 1 | project | dev3 | 研发 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 2 | 1 | project | productManager | 产品经理 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 3 | 1 | project | tester2 | 测试 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 4 | 1 | project | tester1 | 测试 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 5 | 2 | project | projectManager | 项目经理 | no | 2013-02-20 | 365 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 6 | 2 | project | tester2 | 测试 | no | 2013-02-20 | 365 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 7 | 2 | project | tester1 | 测试 | no | 2013-02-20 | 365 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 8 | 2 | project | dev3 | 研发 | no | 2013-02-20 | 365 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 9 | 2 | project | dev2 | 研发 | no | 2013-02-20 | 365 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 10 | 2 | project | dev1 | 研发 | no | 2013-02-20 | 365 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 11 | 1 | project | dev1 | 研发 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 12 | 1 | project | dev2 | 研发 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 13 | 1 | project | projectManager | 项目经理 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 14 | 1 | project | testManager | 测试主管 | no | 2013-02-20 | 184 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 15 | 2 | project | productManager | 产品经理 | no | 2013-02-20 | 365 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 16 | 3 | project | admin | | no | 2019-05-06 | 40 | 8.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 17 | 3 | project | cuichengqun | 研发 | no | 2019-05-06 | 40 | 8.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 18 | 3 | project | lijun | 研发 | no | 2019-05-06 | 40 | 8.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 20 | 3 | project | wangheng | 研发 | no | 2019-05-06 | 40 | 8.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 21 | 3 | project | xiehongxin | 项目经理 | no | 2019-05-06 | 40 | 8.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 22 | 3 | project | wuxuewen | 研发主管 | no | 2019-05-06 | 40 | 8.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 23 | 3 | project | liusiyuan | 研发 | no | 2019-05-13 | 40 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 24 | 3 | project | youshuo | 产品经理 | no | 2019-05-13 | 40 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 25 | 3 | project | liweifang | 研发 | no | 2019-05-20 | 40 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
| 26 | 3 | project | lizeqing | 研发 | no | 2019-05-21 | 40 | 7.0 | 0.00 | 0.00 | 0.00 | 0 | 1 | liusiyuan | 2030-01-01 | 2400 | 2400 | custom | 0 | 0 | 3 | 熟悉项目 | | doing | 0 | | | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 | | 0000-00-00 00:00:00 |
+----+------+---------+----------------+--------------+---------+------------+------+-------+----------+----------+------+-------+----+-----------+------------+-------+------+--------+-------+---------+-----+--------------+------+--------+---------+--------+------------+------------+---------------------+------------+---------------------+----------+---------------------+
25 rows in set (0.00 sec)
- 内连接:过滤为空的数据(查询的实际上是两张表数据的交集部分) 目的 ==》解决笛卡尔积现象,正确查询了需要的数据
select * from 表1,表2 where 表1.字段=表2.字段; //隐式内连接,使用where条件消除笛卡尔积
select * from 表1 [inner] join 表2 on 表1.字段=表2.字段; //显式内连接,如果是多张表,则一直在join..on后依次添加join..on即可,inner关键字可被省略
mysql> select * from zt_file,zt_burn where addedDate = date; ## 隐式内连接
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
| id | pathname | title | extension | size | objectType | objectID | addedBy | addedDate | downloads | extra | deleted | project | task | date | estimate | left | consumed |
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
| 1 | 201905/1216211706947kjq.png | 1216211706947kjq | png | 42133 | | 0 | admin | 2019-05-12 00:00:00 | 0 | | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 2 | 201905/121625460623ava.png | 加盟店详情首页.png | png | 432411 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 3 | 201905/1216282404775a1e.png | 合伙加盟.png | png | 240805 | task | 125 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 4 | 201905/1216330804347ava.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 5 | 201905/1216344802235kiu.png | 加盟店详情首页.png | png | 432411 | task | 124 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 6 | 201905/12163541072352rk.png | 加盟店列表.png | png | 294887 | task | 123 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 7 | 201905/1216392106995vgv.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 8 | 201905/1216402309418e2r.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
8 rows in set (0.03 sec)
mysql> select * from zt_file inner join zt_burn on addedDate=date; ##显示内连接
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
| id | pathname | title | extension | size | objectType | objectID | addedBy | addedDate | downloads | extra | deleted | project | task | date | estimate | left | consumed |
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
| 1 | 201905/1216211706947kjq.png | 1216211706947kjq | png | 42133 | | 0 | admin | 2019-05-12 00:00:00 | 0 | | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 2 | 201905/121625460623ava.png | 加盟店详情首页.png | png | 432411 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 3 | 201905/1216282404775a1e.png | 合伙加盟.png | png | 240805 | task | 125 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 4 | 201905/1216330804347ava.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 5 | 201905/1216344802235kiu.png | 加盟店详情首页.png | png | 432411 | task | 124 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 6 | 201905/12163541072352rk.png | 加盟店列表.png | png | 294887 | task | 123 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 7 | 201905/1216392106995vgv.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 8 | 201905/1216402309418e2r.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
8 rows in set (0.00 sec)
- 外连接:左外连接、右外连接、全外连接
左外连接:以左边表为主,返回左边表中所有数据,若右表中无数据,则显示为NULL,请参考实际查询结果来理解
select * from 表1 left [outer] join 表2 on 表1.字段=表2.字段; //表1为左表,表2为右表,outer关键字可被省略
mysql> select * from zt_file left outer join zt_burn on addedDate=date;
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
| id | pathname | title | extension | size | objectType | objectID | addedBy | addedDate | downloads | extra | deleted | project | task | date | estimate | left | consumed |
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
| 1 | 201905/1216211706947kjq.png | 1216211706947kjq | png | 42133 | | 0 | admin | 2019-05-12 00:00:00 | 0 | | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 2 | 201905/121625460623ava.png | 加盟店详情首页.png | png | 432411 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 3 | 201905/1216282404775a1e.png | 合伙加盟.png | png | 240805 | task | 125 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 4 | 201905/1216330804347ava.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 5 | 201905/1216344802235kiu.png | 加盟店详情首页.png | png | 432411 | task | 124 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 6 | 201905/12163541072352rk.png | 加盟店列表.png | png | 294887 | task | 123 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 7 | 201905/1216392106995vgv.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 8 | 201905/1216402309418e2r.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
+----+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
8 rows in set (0.00 sec)
- 右外连接:以右边表为主,返回右表中所有数据,若左表中无数据,则显示为NULL,结合实际查询结果来理解
select * from 表1 right [outer] join 表2 on 表1.字段=表2.字段; //表1为左表,表2为右表,outer关键字可被省略
select * from zt_file right outer join zt_burn on zt_file.addedDate=zt_burn.date; 和 select * from zt_file right outer join zt_burn on addedDate=date;得到的结果一致,同理左连接也是。
mysql> select * from zt_file right outer join zt_burn on addedDate=date;
+------+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
| id | pathname | title | extension | size | objectType | objectID | addedBy | addedDate | downloads | extra | deleted | project | task | date | estimate | left | consumed |
+------+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
| 1 | 201905/1216211706947kjq.png | 1216211706947kjq | png | 42133 | | 0 | admin | 2019-05-12 00:00:00 | 0 | | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 2 | 201905/121625460623ava.png | 加盟店详情首页.png | png | 432411 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 3 | 201905/1216282404775a1e.png | 合伙加盟.png | png | 240805 | task | 125 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 4 | 201905/1216330804347ava.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 5 | 201905/1216344802235kiu.png | 加盟店详情首页.png | png | 432411 | task | 124 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 6 | 201905/12163541072352rk.png | 加盟店列表.png | png | 294887 | task | 123 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 7 | 201905/1216392106995vgv.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| 8 | 201905/1216402309418e2r.png | 加盟详情.png | png | 145126 | task | 126 | lijun | 2019-05-12 00:00:00 | 0 | editor | 0 | 3 | 0 | 2019-05-12 | 547 | 491 | 36 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | 0 | 2012-06-05 | 0 | 0 | 38 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-06 | 86 | 78 | 6 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-07 | 544 | 528 | 11 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-08 | 544 | 516 | 19 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-09 | 544 | 504 | 26 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-10 | 544 | 504 | 26 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-11 | 544 | 504 | 26 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-14 | 547 | 469 | 70 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-16 | 547 | 469 | 70 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-17 | 547 | 469 | 70 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-18 | 547 | 469 | 70 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-19 | 547 | 469 | 70 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-20 | 547 | 469 | 74 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-21 | 547 | 491 | 104 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-22 | 547 | 491 | 149 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-23 | 547 | 463 | 177 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-24 | 547 | 463 | 215 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-25 | 547 | 463 | 215 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-26 | 547 | 463 | 215 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-27 | 547 | 431 | 243 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-28 | 549 | 451 | 296 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-29 | 549 | 393 | 312 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-30 | 549 | 401 | 330 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-05-31 | 549 | 397 | 330 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-06-03 | 549 | 397 | 330 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-06-04 | 549 | 397 | 330 |
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3 | 0 | 2019-06-05 | 549 | 397 | 330 |
+------+-----------------------------+---------------------------+-----------+--------+------------+----------+---------+---------------------+-----------+--------+---------+---------+------+------------+----------+------+----------+
35 rows in set (0.00 sec)
- 全外连接:返回涉及的多表中的所有数据,MYSQL中不支持该查询,仅限了解自连接:单表当作多表查询,直白的讲就是一张表中数据含有多种关系,使用多表查询的语法,来查询一张表,查询过程中一定要使用别名
- 多用在分类数据、省市县分类数据、权限…
select 表1.字段1,表2.字段2 from 表名 as 表1,表名 as 表2 where 表1.字段1=表2.字段2
全外连接
select 表1.字段1,表2.字段2 from 表名,表名 where 表1.字段1=表2.字段2
mysql> select it_Development.*,it_Operate.* from it_Development,it_Operate where it_Development.年龄=it_Operate.年龄;
+-----------+--------+----------+-----------+--------+-----------+--------+----------+--------+--------+
| 姓名 | 年龄 | 员工id | 学历 | 薪资 | 姓名 | 年龄 | 员工id | 学历 | 薪资 |
+-----------+--------+----------+-----------+--------+-----------+--------+----------+--------+--------+
| 小小春 | 22 | 123 | 研究生 | 10000 | 小小东 | 22 | 131 | 本科 | 9000 |
| 小小夏 | 23 | 123 | 研究生 | 11000 | 小小西 | 23 | 132 | 本科 | 10000 |
+-----------+--------+----------+-----------+--------+-----------+--------+----------+--------+--------+
2 rows in set (0.00 sec)
- 子查询:将一个查询结果作为另一个查询的对象,直白的讲就是SQL语句嵌套
什么是子查询?子查询就是嵌套在主查询中的查询。
子查询可以嵌套在主查询中所有位置,包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY。
select * from (select * from 表名) as 别名
select * from where 条件->条件中包含查询语句
注意:1.查询结果的虚拟表必须取别名
2.字段与关键字一样,冲突时,需要给字段名加``,(Esc键下面、1的左边)
3.如果给虚拟结果表中的字段取了别名,则对虚拟结果表查询时,应该用 表别名.虚拟表字段别名
-
创建新的数据库和表(及怎么解决mysql数据库不支持中文)
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> use test
Database changed
mysql> show tables;
Empty set (0.00 sec)
- 在数据库test中创建表it_Development和it_Operate
create table it_Development(姓名 char(10)not null,年龄 int(3)not null,员工id int(6)not null,学历 char(5)not null,薪资 int(8)not null);
create table it_Operate(姓名 char(10)not null,年龄 int(3)not null,员工id int(6)not null,学历 char(5)not null,薪资 int(8)not null);
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| it_Development |
| it_Operate |
+----------------+
2 rows in set (0.00 sec)
- 查看表it_Development的结构
mysql> desc it_Development;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| 姓名 | char(10) | NO | | NULL | |
| 年龄 | int(3) | NO | | NULL | |
| 员工id | int(6) | NO | | NULL | |
| 学历 | char(5) | NO | | NULL | |
| 薪资 | int(8) | NO | | NULL | |
+----------+----------+------+-----+---------+-------+
5 rows in set (0.00 sec)
- 查看表it_Operate的结构
mysql> desc it_Operate;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| 姓名 | char(10) | NO | | NULL | |
| 年龄 | int(3) | NO | | NULL | |
| 员工id | int(6) | NO | | NULL | |
| 学历 | char(5) | NO | | NULL | |
| 薪资 | int(8) | NO | | NULL | |
+----------+----------+------+-----+---------+-------+
5 rows in set (0.00 sec)
- 查看mysql数据库的编码是什么语言
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
- 一次性修改使数据库支持中文,重启数据库后失效!
set character_set_database = utf8;
set character_set_server = utf8;
set character_set_client = utf8;
set character_set_server = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = utf8;
set collation_connection = utf8_general_ci;
set collation_database = utf8_general_ci;
set collation_server = utf8_general_ci;
mysql> show create table it_Development;
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| it_Development | CREATE TABLE `it_Development` (
`姓名` char(10) NOT NULL,
`年龄` int(3) NOT NULL,
`员工id` int(6) NOT NULL,
`学历` char(5) NOT NULL,
`薪资` int(8) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 修改it_Development表的编码为utf8,默认为拉丁语(latinl)
mysql> alter table it_Development default character set utf8;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 287
Current database: testQuery OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table it_Development;
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| it_Development | CREATE TABLE `it_Development` (
`姓名` char(10) CHARACTER SET latin1 NOT NULL,
`年龄` int(3) NOT NULL,
`员工id` int(6) NOT NULL,
`学历` char(5) CHARACTER SET latin1 NOT NULL,
`薪资` int(8) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 修改列的编码为utf8,注意 tdb_goods_cates 的编码仍然为 latinl,虽然此时表的编码已经是 utf8,姓名和学历的编码依然为latinl,需要把这俩个也修改为utf8
alter table it_Development change 学历 学历 char(5) character set utf8;
alter table it_Development change 姓名 姓名 char(10) character set utf8;
mysql> show create table it_Development;
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| it_Development | CREATE TABLE `it_Development` (
`姓名` char(10) DEFAULT NULL,
`年龄` int(3) NOT NULL,
`员工id` int(6) NOT NULL,
`学历` char(5) DEFAULT NULL,
`薪资` int(8) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 在表it_Development中插入数据
insert into it_Development(姓名,年龄,员工id,学历,薪资)values('小小春',22,000123,'研究生',10000);
insert into it_Development(姓名,年龄,员工id,学历,薪资)values('小小夏',23,000123,'研究生',11000);
insert into it_Development(姓名,年龄,员工id,学历,薪资)values('小小秋',24,000123,'研究生',12000);
insert into it_Development(姓名,年龄,员工id,学历,薪资)values('小小冬',25,000123,'研究生',13000);
- 查看数据库test中的表it_Development的数据
mysql> select * from it_Development;
+-----------+--------+----------+-----------+--------+
| 姓名 | 年龄 | 员工id | 学历 | 薪资 |
+-----------+--------+----------+-----------+--------+
| 小小春 | 22 | 123 | 研究生 | 10000 |
| 小小夏 | 23 | 123 | 研究生 | 11000 |
| 小小秋 | 24 | 123 | 研究生 | 12000 |
| 小小冬 | 25 | 123 | 研究生 | 13000 |
+-----------+--------+----------+-----------+--------+
4 rows in set (0.00 sec)
- 查看it_Operate表的编码语言,修改拉丁语为utf8
mysql> show create table it_Operate;
+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| it_Operate | CREATE TABLE `it_Operate` (
`姓名` char(10) NOT NULL,
`年龄` int(3) NOT NULL,
`员工id` int(6) NOT NULL,
`学历` char(5) NOT NULL,
`薪资` int(8) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 修改表的编码语言为utf8
mysql> alter table it_Operate default character set utf8;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
- 把表的编码拉丁语修改为utf8后,发现列姓名和列学历的编码变为拉丁语
mysql> show create table it_Operate;
+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| it_Operate | CREATE TABLE `it_Operate` (
`姓名` char(10) CHARACTER SET latin1 NOT NULL,
`年龄` int(3) NOT NULL,
`员工id` int(6) NOT NULL,
`学历` char(5) CHARACTER SET latin1 NOT NULL,
`薪资` int(8) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 修改列的编码语言为utf8
mysql> alter table it_Operate change 姓名 姓名 char(10) character set utf8;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> alter table it_Operate change 学历 学历 char(5) character set utf8;
Query OK, 0 rows affected (0.05 sec)
- 插入数据到it_Operate表里
insert into it_Operate(姓名,年龄,员工id,学历,薪资)values('小小东',22,000131,'本科',9000);
insert into it_Operate(姓名,年龄,员工id,学历,薪资)values('小小西',23,000132,'本科',10000);
insert into it_Operate(姓名,年龄,员工id,学历,薪资)values('小小南',20,000133,'本科',8500);
insert into it_Operate(姓名,年龄,员工id,学历,薪资)values('小小北',21,000134,'本科',8000);
- 查看表it_Operate的数据
mysql> select * from it_Operate;
+-----------+--------+----------+--------+--------+
| 姓名 | 年龄 | 员工id | 学历 | 薪资 |
+-----------+--------+----------+--------+--------+
| 小小东 | 22 | 131 | 本科 | 9000 |
| 小小西 | 23 | 132 | 本科 | 10000 |
| 小小南 | 20 | 133 | 本科 | 8500 |
| 小小北 | 21 | 134 | 本科 | 8000 |
+-----------+--------+----------+--------+--------+
4 rows in set (0.00 sec)
-
DML语句操作
数据操纵语言,用于对表中的数据进行增删改
- insert 插入新数据
注意: 1.如果插入的表中的主键是自增类型的,可以不用插入值
2.如果主键是非自增 ,插入的数据则是填补主键字段值空余的值
3.如果主键设置了自动递增,会从主键字段最大值开始插入数据
格式:insert into 表名(字段1,字段2,.......)values('字段1的值',‘字段2的值’......);
其他插入方式:
insert into 表名(字段1,字段2) values(值1,值2),(值1,值2); //插入多条数据【MYSQL】
insert into 表名 values(值1,值2); //针对全表所有字段进行插入操作
insert into 表名(字段) select 字段 from 表2; //查询结果插入
insert into 表名 select 字段 from 表2; //查询结果,全表插入
mysql> create database auth;
Query OK, 1 row affected (0.00 sec)
mysql> use auth;
Database changed
mysql> create table users (user_name char(20) not null, user_passwd char(30) default '', primary key (user_name));
Query OK, 0 rows affected (0.01 sec)
mysql> desc users;
+-------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name | char(20) | NO | PRI | NULL | |
| user_passwd | char(30) | YES | | | |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> insert into users(user_name,user_passwd)values('zhangsan',password('123123'));【在users表的(字段user_name,字段user_passwd)中添加(‘zjangsan’,条用函数password(‘123123’));】
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> insert into users values('lisi',password('123123'));【字段内容可省略】【表名users返回值李四】
Query OK, 1 row affected, 1 warning (0.00 sec)【询问ok,1行收到影响,1警告,0.00秒】
mysql> select*from users;【挑选来自users表的】
+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| lisi | *E56A114692FE0DE073F9A1DD68A00 |
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
2 rows in set (0.00 sec)
- update更改原有数据
格式:upfate 表名 set 字段名 1=值1[,字段2=值2]where 条件表达式; ##带条件修改指定数据,否则修改全表
mysql> update auth.users set user_passwd=password('')where user_name='lisi';【更改zuth库的users表指定密码为密码 定位用户为李四】
Query OK, 1 row affected (0.29 sec)
Rows matched: 1 Changed: 1 Warnings: 0【匹配行1被改变1行被警告】
【where定位对谁做修改】
mysql> update mysql.user set password=password('123123')where user='root';【修改mysql登录root定位用户密码为123123】
Query OK, 0 rows affected (0.04 sec)
Rows matched: 4 Changed: 0 Warnings: 0【匹配行4 被改变0 被警告0】
mysql> flush privileges;【刷新权限】
Query OK, 0 rows affected (0.30 sec)【询问ok 0行警告】
- delete 删除不需要的数据
格式:delete from 表名 where 条件表达式; ##删除数据带条件指定数据,否则删除全表数据
mysql> delete from auth.users where user_name='lisi';【在auth库中的users表中,删除用户名为lisi的记录】
Query OK, 1 row affected (0.03 sec)
mysql> select * from auth.users;
+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
1 row in set (0.00 sec)
mysql> delete from mysql.user where user='';【在mysql库中的user表中,删除空的用户名的记录】
Query OK, 2 rows affected (0.00 sec)
- DDL语句操作
数据查询语言,用于数据查询
- select 查询语句
格式: select 字段名1,字段名2,......from 表名;
selete字段名1,字段名2,........from 表名 where 条件表达式
mysql> select user_name from auth.users;
+-----------+
| user_name |
+-----------+
| zhangsan |
+-----------+
1 row in set (0.00 sec)
mysql> select * from auth.users where user_name='zhangsan';
+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
1 row in set (0.00 sec)
- 数据备份
在命令行窗口进行,若操作系统版本高,则使用管理员模式
导出:
mysqldump -u账户 -p密码 数据库名称>脚本文件存储地
ex: mysqldump -uroot -proot jdbcdemo> C:/shop_bak.sql
导入:
mysql -u账户 -p密码 数据库名称< 脚本文件存储地址
ex: mysql -uroot -proot jdbcdemo< C:/shop_bak.sql
使用可视化导入导出:
Navicat工具的导入和导出/Navicat工具的备份和还原
- 数据索引
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
什么列适合建索引??
1.表的主键、外键必须有索引;
2.数据量超过30000的表应该有索引;
3.经常与其他表进行连接的表,在连接字段上应该建立索引;
4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5.索引应该建在选择性高的字段上;
6.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
sql语句创建和删除索引:
创建索引:
CREATE INDEX 索引名称 ON 表名 (列名)
删除索引:
方式一:
DROP INDEX 索引名 ON 表名
方式二:
ALTER TABLE 表名 DROP INDEX 索引名
-
建立公司IT运营部工资数据表
需求描述:为公司建立员工工资数据库imployee_salary,在imployee_salary数据库中,建立IT_salary数据表,以保存IT 运营部员工的工资信息,如下表所示:
- 建立数据库 imployee_salary
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| libai |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
mysql> create database imployee_salary;
Query OK, 1 row affected (0.00 sec)
mysql> use imployee_salary;
Database changed
- 建立数据库表IT_salary
mysql> create table IT_salary(岗位类别 char(20)not null,姓名 char(15)not null,年龄 int, 员工ID int not null, 学历 char(6), 年限 int, 薪资 int not null,primary key (员工ID));
Query OK, 0 rows affected (0.02 sec)
【int数字类型、char字符串类型、not null不能为空、char()指定最多字节个数、primary key()指定索引字段】
mysql> desc IT_salary;
+--------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+-------+
| 岗位类别 | char(20) | NO | | NULL | |
| 姓名 | char(15) | NO | | NULL | |
| 年龄 | int(11) | YES | | NULL | |
| 员工ID | int(11) | NO | PRI | NULL | |
| 学历 | char(6) | YES | | NULL | |
| 年限 | int(11) | YES | | NULL | |
| 薪资 | int(11) | NO | | NULL | |
+--------------+----------+------+-----+---------+-------+
7 rows in set (0.01 sec)
- 将IT运营部的员工工资信息插入到IT_salary
mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('网络工程师','孙悟空',27,011,'本科',3,4800);
Query OK, 1 row affected (0.01 sec)
mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('windows工程师','貂蝉',19,012,'中专',2,3500);
3,'本科',8,15000);
insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('java工程师','赵云',38,014,'本科',10,17000);
insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('硬件驱动工程师','诸葛亮',29,015,'本科',9,16500);
Query OK, 1 row affected (0.41 sec)
mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('linux工程师','卢布',32,013,'本科',8,15000);
Query OK, 1 row affected (0.02 sec)
mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('java工程师','赵云',38,014,' 本科',10,17000);
Query OK, 1 row affected (0.00 sec)
mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('硬件驱动工程师','诸葛亮',29,015,'本科',9,16500);
Query OK, 1 row affected (0.01 sec)
- 在记事本中编辑号如下内容,复制粘贴进数据库
insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('windows工程师','貂蝉',19,012,'中专',2,3500);
insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('linux工程师','卢布',32,013,'本科',8,15000);
insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('java工程师','赵云',38,014,'本科',10,17000);
insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资)values('硬件驱动工程师','诸葛亮',29,015,'本科',9,16500);
- 查看核对信息
mysql> select * from IT_salary;
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 岗位类别 | 姓名 | 年龄 | 员工ID | 学历 | 年限 | 薪资 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 网络工程师 | 孙悟空 | 27 | 11 | 本科 | 3 | 4800 |
| windows工程师 | 貂蝉 | 19 | 12 | 中专 | 2 | 3500 |
| linux工程师 | 卢布 | 32 | 13 | 本科 | 8 | 15000 |
| java工程师 | 赵云 | 38 | 14 | 本科 | 10 | 17000 |
| 硬件驱动工程师 | 诸葛亮 | 29 | 15 | 本科 | 9 | 16500 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
5 rows in set (0.00 sec)
- 用户权限设置grand
- 设置用户权限(用户不存在的,则新建用户)
mysql> grant all on*.* to 'root'@'192.168.1.139'IDENTIFIED BY'123456';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT select ON imployee_salary.* TO 'amber'@'localhost'IDENTIFIED BY'123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
[root@mysql ~]# mysql -uamber -p123456
mysql> select * from imployee_salary.IT_salary;
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 岗位类别 | 姓名 | 年龄 | 员工ID | 学历 | 年限 | 薪资 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 网络工程师 | 孙悟空 | 27 | 11 | 本科 | 3 | 4800 |
| windows工程师 | 貂蝉 | 19 | 12 | 中专 | 2 | 3500 |
| linux工程师 | 卢布 | 32 | 13 | 本科 | 8 | 15000 |
| java工程师 | 赵云 | 38 | 14 | 本科 | 10 | 17000 |
| 硬件驱动工程师 | 诸葛亮 | 29 | 15 | 本科 | 9 | 16500 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
5 rows in set (0.00 sec)
mysql> quit
Bye
[root@mysql ~]# mysql -uroot -p123123
mysql> grant all on*.* to 'root'@'192.168.1.138'IDENTIFIED BY'123456';【允许用户root用123456作为密码,从ip192.168.1.138的主机连接到mysql服务器】【此root只是个名字,和超级管理员root不是一个root】
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT select ON imployee_salary.* TO 'yun'@'192.168.1.138'IDENTIFIED BY'123456';【允许用户yun用123456作为密码从ip192.168.1.138的主机连接到mysql服务器的imployee_salary数据库】【用户不存在的则自动新建用户】
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
[root@mysql ~]# mysql -uyun -p123456
mysql> select * from imployee_salary.IT_salary;
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 岗位类别 | 姓名 | 年龄 | 员工ID | 学历 | 年限 | 薪资 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 网络工程师 | 孙悟空 | 27 | 11 | 本科 | 3 | 4800 |
| windows工程师 | 貂蝉 | 19 | 12 | 中专 | 2 | 3500 |
| linux工程师 | 卢布 | 32 | 13 | 本科 | 8 | 15000 |
| java工程师 | 赵云 | 38 | 14 | 本科 | 10 | 17000 |
| 硬件驱动工程师 | 诸葛亮 | 29 | 15 | 本科 | 9 | 16500 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
5 rows in set (0.00 sec)
mysql> quit
Bye
- 查看用户权限
[root@mysql ~]# mysql -uyun -p123456
mysql> show grants;
+------------------------------------------------------------------------------------------------------------+
| Grants for yun@localhost |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'yun'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT ON `imployee_salary`.* TO 'yun'@'localhost' |
+------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> show grants for 'yun'@'localhost';
+------------------------------------------------------------------------------------------------------------+
| Grants for yun@localhost |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'yun'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT ON `imployee_salary`.* TO 'yun'@'localhost' |
+------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
- 撤销用户权限
若宿主机连接报错,查看权限设置是否正确,可尝试如下命令:
【admin超级管理员的意思,administrator的缩写】
- mysql的其他常用命令
- 查看mysql的登录用户
方法一
mysql> select * from mysql.user;
localhost | root | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1
mysql | root | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1
127.0.0.1 | root | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1
::1 | root | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1
192.168.1.139 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
localhost | amber | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
192.168.1.138 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
localhost | yun | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
方法二
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| root | 127.0.0.1 |
| root | 192.168.1.138 |
| root | 192.168.1.139 |
| root | ::1 |
| amber | localhost |
| root | localhost |
| yun | localhost |
| root | mysql |
+-------+---------------+
8 rows in set (0.00 sec)
mysql> select * from auth.users; 【查询auth库里的所有用户】
+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
1 row in set (0.00 sec)
- 修改mysql用户名
语法:rename user '用户名'@'主机名' to '用户名'@'主机名';
【如果不指定用户的主机(用户名@主机),则默认为所有,即:%(用户名@%)】
mysql> select user,host from mysql.user;【修改前查看mysql用户名和主机】
+-------+---------------+
| user | host |
+-------+---------------+
| root | 127.0.0.1 |
| root | 192.168.1.138 |
| root | 192.168.1.139 |
| root | ::1 |
| amber | localhost |
| root | localhost |
| yun | localhost |
| root | mysql |
+-------+---------------+
8 rows in set (0.00 sec)
mysql> rename user'yun'@'localhost' to 'cun'@'localhost';【修改用户yun为用户cun】
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;【修改后,查看mysql用户名和主机】
+-------+---------------+
| user | host |
+-------+---------------+
| root | 127.0.0.1 |
| root | 192.168.1.138 |
| root | 192.168.1.139 |
| root | ::1 |
| amber | localhost |
| cun | localhost |
| root | localhost |
| root | mysql |
+-------+---------------+
8 rows in set (0.01 s
mysql> rename user'cun'@'localhost' to 'yun'@'%';【用户cun主机为localhost的改为用户yun,主机为所有主机】
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| yun | % |
| root | 127.0.0.1 |
| root | 192.168.1.138 |
| root | 192.168.1.139 |
| root | ::1 |
| amber | localhost |
| root | localhost |
| root | mysql |
+-------+---------------+
8 rows in set (0.00 sec)
- 删除用户名
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| yun | % |
| root | 127.0.0.1 |
| root | 192.168.1.138 |
| root | 192.168.1.139 |
| root | ::1 |
| amber | localhost |
| root | localhost |
| root | mysql |
+-------+---------------+
8 rows in set (0.00 sec)
mysql> delete from mysql.user where user='yun';【删除用户yun】
Query OK, 1 row affected (0.00 sec)
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| root | 127.0.0.1 |
| root | 192.168.1.138 |
| root | 192.168.1.139 |
| root | ::1 |
| amber | localhost |
| root | localhost |
| root | mysql |
+-------+---------------+
7 rows in set (0.00 sec)
mysql> select user,host from mysql.user;【删除前】
+-------+---------------+
| user | host |
+-------+---------------+
| root | 127.0.0.1 |
| root | 192.168.1.138 |
| root | 192.168.1.139 |
| root | ::1 |
| amber | localhost |
| root | localhost |
| root | mysql |
+-------+---------------+
7 rows in set (0.00 sec)
mysql> delete from mysql.user where user='root';【删除用户root,默认会把所有root用户都删除】
Query OK, 6 rows affected (0.00 sec)
mysql> select user,host from mysql.user;【删除后】
+-------+-----------+
| user | host |
+-------+-----------+
| amber | localhost |
+-------+-----------+
1 row in set (0.01 sec)
mysql> delete from mysql.user where user='amber';【删除最后的amber用户】
Query OK, 1 row affected (0.00 sec)
mysql> select user,host from mysql.user;【查看mysql的用户。显示为空】
Empty set (0.00 sec)
mysql> flush privileges;【更新权限】
Query OK, 0 rows affected (0.00 sec
mysql> quit
Bye
【删除所有用户后用原来的所有用户密码登录失败,意味着数据库报废】
【用其他用户yun登录后,不能查看mysql的用户】
[root@mysql ~]# mysql -uyun -p123456
mysql> select user,host from mysql.user;
ERROR 1142 (42000): SELECT command denied to user 'yun'@'localhost' for table 'user'
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| imployee_salary |
| test |
+--------------------+
3 rows in set (0.00 sec)
- 数据库知识补充
- 在数据库创建数据表的时候,字段后必须指定char(30),否则会报错
- Mysql数据库查看帮助命令help create
- 索引项最多不会超过255字符
- Default ‘’ 俩个单引号中间为空,是没有设置密码
- Primary key 代表创建索引,(指定键下不能为空,不能重名)
- Insert into users()括号中也可为空
- Password (‘12313’)括号代表加密 password后是函数变量
- 数据库会损坏是因为索引功能
- Mysql -uroot -p123123 -e ‘source ./test.sql’【把脚本(表)写入数据库,此处也可用“”】
- %代表所有的主机都可以登录
- *.*代表 所有数据库.所有表
- Grep “user” 绝对路径 可以搜索该字符
- Char是字符集的缩写,set 重置 utf8万国语言
- Show databases 加“s”代表复数 所有的数据库
- Show tables 看数据表
- Describe mysql.user;查看mysql的user表
- [mysql]对登录的mysql起作用
- Where 定位对谁作修改
- 命令 \G 分行显示【一直未成功】
- On后根范围
- 在数据库外修改数据库里的数据
[root@mysql ~]# mysql -uroot -p123123 -e 'show databases;'
+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| mysql |
| performance_schema |
| test |
+--------------------+
[root@mysql ~]# mysql -uroot -p123123 -e "show databases;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| mysql |
| performance_schema |
| test |
+--------------------+
[root@mysql ~]# mysql -uroot -p123123 -e "create database libai;show databases;"【libai创建成功】
+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| libai |
| mysql |
| performance_schema |
| test |
+--------------------+
&&修改数据库密码与修改虚拟机的root密码是一致的
- 删除数据库的所有用户后出现的问题
yum失效,镜像不再挂载 mount /dev/sr0 /var/ftp/centos7/执行此命令挂载即可解决
数据库报废
【执行此命令后发现已经关闭】
[root@mysql ~]# /etc/init.d/mysqld stop
ERROR! MySQL server PID file could not be found!
【再次查看进程发现还有mysql进程运行】
[root@mysql ~]# netstat -anpt|grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2131/mysqld
[root@mysql ~]# killall mysqld 【执行此命令杀死所有mysql进程】
[root@mysql ~]# mysqld_safe --skip-grant-tables &【进入安全模式】
[1] 11921
[root@mysql ~]# 190510 02:24:27 mysqld_safe Logging to '/usr/local/mysql/data/mysql.err'.
190510 02:24:27 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
[root@mysql ~]# mysql
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> insert into user set user='root',ssl_cipher='',x509_issuer='',x509_subject='';【创建一个root用户】
Query OK, 1 row affected (0.00 sec)
mysql> update user set Host='localhost',select_priv='y',
-> insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',
-> drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',
-> create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',
-> repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',
->
Event_priv='y',Trigger_priv='y',Create_tablespace_priv='y',
-> create_user_priv='y' where user='root';
Query OK, 1 row affected (0.01 sec)【设置root用户的权限,所有权限为'y',即拥有最高权限】
Rows matched: 1 Changed: 1 Warnings: 0
[root@mysql ~]# /etc/init.d/mysqld restart
Shutting down MySQL.190510 03:27:05 mysqld_safe mysqld from pid file /usr/local/mysql/data/mysql.pid ended
SUCCESS!
Starting MySQL.. SUCCESS!
[1]+ 完成 mysqld_safe --skip-grant-tables
mysql> use mysql【使用mysql数据库】
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set password=password('123123')where user='root';【修改root密码为123123】
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;【刷新用户权限】【这里也可以重启mysql】
Query OK, 0 rows affected (0.00 sec)
mysql> select * from user\G【查看所有用户的所有权限】
*************************** 1. row ***************************
Host: localhost
User: root
Password: *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1
Select_priv: Y
Insert_priv: Y
[root@mysql ~]# mysql -uroot -p123123
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> grant all on *.* to 'root'@'192.168.1.139' identified by '123456';【允许root用户用密码123456从192.168.1.139登录,此处的密码和用户都是随便的,默认没有的用户会自动创建,此处ip为测试端ip 也可以是本机ip,此处为了方便理解用其他主机ip,并且这个测试机也必须有mysql数据库】
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;【更新权限】
Query OK, 0 rows affected (0.01 sec)
mysql> grant select on imployee_salary.* to 'amber'@'localhost' identified by '12345';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
【在192.168.1.139主机测试】
[root@client ~]# mysql -uroot -p123456 -h 192.168.1.138【登录192.168.1.138主机的mysql数据库】
mysql> quit
Bye
【在本机测试】
[root@mysql ~]# mysql -uamber -p12345【登录成功】
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| imployee_salary |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> use mysql;【因为只授权登录imployee_salary 所以登录其他数据库都会报错】
ERROR 1044 (42000): Access denied for user 'amber'@'localhost' to database 'mysql'
mysql> use imployee_salary【登录成功】
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from IT_salary;【查看表IT_salary】
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 岗位类别 | 姓名 | 年龄 | 员工ID | 学历 | 年限 | 薪资 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 网络工程师 | 孙悟空 | 27 | 11 | 本科 | 3 | 4800 |
| windows工程师 | 貂蝉 | 19 | 12 | 中专 | 2 | 3500 |
| linux工程师 | 卢布 | 32 | 13 | 本科 | 8 | 15000 |
| java工程师 | 赵云 | 38 | 14 | 本科 | 10 | 17000 |
| 硬件驱动工程师 | 诸葛亮 | 29 | 15 | 本科 | 9 | 16500 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
5 rows in set (0.00 sec)
mysql> delete from imployee_salary.IT_salary where 姓名='吕布';【删除表中吕布失败,此账户只有读权限】
ERROR 1142 (42000): DELETE command denied to user 'amber'@'localhost' for table 'IT_salary'
- 查看用户权限【只能查看已经拥有的用户】只能在root用户登录的mysql查看
mysql> show grants for 'root'@'192.168.1.139'\G【】
*************************** 1. row ***************************
Grants for root@192.168.1.139: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.139' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
1 row in set (0.00 sec)
mysql> show grants for 'amber'@'localhost'\G
*************************** 1. row ***************************
Grants for amber@localhost: GRANT USAGE ON *.* TO 'amber'@'localhost' IDENTIFIED BY PASSWORD '*00A51F3F48415C7D4E8908980D443C29C69B60C9'
*************************** 2. row ***************************
Grants for amber@localhost: GRANT SELECT ON `imployee_salary`.* TO 'amber'@'localhost'
2 rows in set (0.00 sec)
mysql> show grants\G
*************************** 1. row ***************************
Grants for root@localhost: GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1' WITH GRANT OPTION
*************************** 2. row ***************************
Grants for root@localhost: GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
2 rows in set (0.00 sec)
- 撤销用户权限
mysql> revoke select on imployee_salary.* from 'amber'@'localhost';【撤销用户amber登录权限】
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;【更新权限】
Query OK, 0 rows affected (0.00 sec)
【mysql通配符: _: 任意但个字符, &: 任意长度的任意字符】
mysql> grant all on *.* to 'amber'@'%' identified by '1234';【允许用户amber用密码1234从任意主机登录mysql数据库】
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+-------+---------------+
| user | host |
+-------+---------------+
| amber | % |
| root | 192.168.1.139 |
| amber | localhost |
| root | localhost |
| xiao | localhost |
+-------+---------------+
5 rows in set (0.00 sec)
【在客户机192.168.1.139测试,】
[root@localhost ~]# mysql -uamber -p12345 -h localhost【登录成功】
ERROR 1045 (28000): Access denied for user 'amber'@'localhost' (using password: YES)
[root@localhost ~]# mysql -uamber -p1234 -h 192.168.1.138
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.5.22-log Source distribution
Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> quit
Bye
【测试:在win系统安装navicat软件用用户amber密码1234登录】
- 【若宿主机连接报错,查看权限设置是否正确,可尝试如下命令】
mysql> grant all privileges on *.* to 'amber'@'%' identified by '1234' WITH GRANT OPTION;
mysql> flush privileges;
- 修复root 密码 后的mysql数据库后的数据库
[root@mysql ~]# mysql -uroot -p123123
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.22-log Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select user,host from mysql.user;【查看mysql的数据库表,修复之后的数据库只有一个root用户】
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)
mysql> grant all on *.* to 'root'@'192.168.1.138' IDENTIFIED BY '123456';【之所以会报错,是因为root为超级管理员,禁止其他用户访问,需要创建其他root用户】
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
mysql> CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY '123456';【创建普通用户root密码123456】
Query OK, 0 rows affected (0.00 sec)
mysql> create user 'xiao'@'localhost' identified by '123456';【创建普通用户xiao 密码123456】
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;【再次查看mysql的用户多了俩】
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | localhost |
| xiao | localhost |
+------+-----------+
3 rows in set (0.00 sec)
mysql> grant replication slave on *.* to root@'127.0.0.1';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant replication slave on *.* to 'root'@'192.168.1.139' identified by '123456';【赋予root用户用密码123456从.139ip登录mysql】
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;【查看数据库中的数据表信息】
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
24 rows in set (0.00 sec)
mysql> describe mysql.user\G 【显示数据库中数据表的结构】
*************************** 1. row ***************************
Field: Host
Type: char(60)
Null: NO
Key: PRI
Default:
Extra:
*************************** 2. row ***************************
Field: User
Type: char(16)
Null: NO
Key: PRI
Default:
Extra:
mysql> describe user\g
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
mysql> use auth
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> desc users;
+-------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name | char(20) | NO | PRI | NULL | |
| user_passwd | char(30) | YES | | | |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> insert into users(user_name,user_passwd) values('zhang',password('123456'));【在users表的(字段user_name,字段user_passwd)中添加('zhang',调用函数password('123456'))】
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into users values('li',password('123456'));【创建li 密码123456】
Query OK, 1 row affected, 1 warning (0.49 sec)
mysql> select * from users;【查看所有用户密码】
+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| li | *6BB4837EB74329105EE4568DDA7DC |
| zhang | *6BB4837EB74329105EE4568DDA7DC |
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
3 rows in set (0.00 sec)
mysql> insert into users values('root',password('123456'));
Query OK, 1 row affected, 1 warning (0.38 sec)
mysql> select * from users;
+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| li | *6BB4837EB74329105EE4568DDA7DC |
| root | *6BB4837EB74329105EE4568DDA7DC |
| zhang | *6BB4837EB74329105EE4568DDA7DC |
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
4 rows in set (0.00 sec)
- 用户权限设置
[root@mysql ~]# mysql -uroot -p123456
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- centos7.5 没有killall命令
安装以下包
[root@mysql ~]# yum install psmisc
【psmisc包包含三个帮助管理/proc目录的程序。安装fuser killall pstree和pstree.x11(到pstree的链接) 】
- 显示数据库的表
mysql> desc user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | YES | | | |
| authentication_string | text | YES | | NULL | |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.00 sec)
- root用户给权限失败的root的数据(修复后的数据库的数据)
*************************** 2. row ***************************
Host: localhost
User: root
Password: *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin:
authentication_string: NULL
- 给权限的root 192.168.1.139的数据(修复后的数据库的数据)
*************************** 1. row ***************************
Host: 192.168.1.139
User: root
Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: Y
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin:
authentication_string: NULL
- 创建的用户的数据(修复后的数据库的数据)
*************************** 3. row ***************************
Host: 127.0.0.1
User: root
Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: Y
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin:
authentication_string: NULL
*************************** 4. row ***************************
Host: localhost
User: xiao
Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: N
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin:
authentication_string: NULL
- 正常mysql的数据库的数据(在下一个实验)
- mysql 的其他常用命令
【用于显示广泛的服务器状态信息】
mysql> show status;
+------------------------------------------+-------------+
| Variable_name | Value |
+------------------------------------------+-------------+
| Aborted_clients | 0 |
| Aborted_connects | 5 |
....................................................
【显示创建特定数据库或表】
mysql> help create database;
Name: 'CREATE DATABASE'
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
CREATE DATABASE creates a database with the given name. To use this
statement, you need the CREATE privilege for the database. CREATE
SCHEMA is a synonym for CREATE DATABASE.
URL: http://dev.mysql.com/doc/refman/5.5/en/create-database.html
mysql> help create tables;
Nothing found
Please try to run 'help contents' for a list of all accessible topics
【显示授权用户的安全权限】
mysql> show grants\G
*************************** 1. row ***************************
Grants for root@localhost: GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1' WITH GRANT OPTION
*************************** 2. row ***************************
Grants for root@localhost: GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
2 rows in set (0.00 sec)
【显示服务器错误或警告信息】
mysql> show errors;
Empty set (0.00 sec
mysql> show warnings;
Empty set (0.00 sec)
【显示当前连接用户】
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
【显示当前时间】
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2019-05-10 10:06:47 |
+---------------------+
1 row in set (0.00 sec)
【显示当前用户及时间】
mysql> select current_user(),current_timestamp;
+----------------+---------------------+
| current_user() | current_timestamp |
+----------------+---------------------+
| root@localhost | 2019-05-10 10:08:12 |
+----------------+---------------------+
1 row in set (0.00 sec)
【显示当前数据库】
mysql> select database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
【显示服务器状态】
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.5.22, for Linux (x86_64) using EditLine wrapper
Connection id: 3
Current database: mysql
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.22-log Source distribution
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 2 hours 4 min 17 sec
Threads: 4 Questions: 130 Slow queries: 0 Opens: 49 Flush tables: 1 Open tables: 42 Queries per second avg: 0.017
--------------
-
【数据库的备份与恢复】
方法一:可直接备份目录 /var/local/mysql/var
方法二: 使用专用备份工具 mysqldump
备份操作
mysqldump -u 用户名 -p [密码][选项][数据库名][表名] > /备份路径/备份文件名
常见选项:
--all-databases
--opt
[root@mysql ~]# mysqldump -u root -p mysql user > mysql-user.sql
Enter password:123123
[root@mysql ~]# mysqldump -u root -p --database auth > auth.sql
Enter password: 123123
[root@mysql ~]# mysqldump -u root -p --opt --all-databases > all-data.sql
Enter password:123123
【恢复操作】
mysql -u root -p [数据库名] < /备份路径/备份文件名
[root@mysql ~]# mysql -u root -p test < mysql-user.sql
Enter password:123123
-
MySQL查询日志文件位置
- 查找错误日志文件所在
mysql> show variables like 'log_error';
+---------------+--------------------------+
| Variable_name | Value |
+---------------+--------------------------+
| log_error | /var/log/mysql/error.log |
+---------------+--------------------------+
1 row in set (0.00 sec)
- 查找日志文件路径
mysql> show variables like 'general_log_file';
+------------------+--------------------------------------------+
| Variable_name | Value |
+------------------+--------------------------------------------+
| general_log_file | /var/lib/mysql/iZ8vb0ywcounjc3oh3rv2jZ.log |
+------------------+--------------------------------------------+
1 row in set (0.00 sec)
- 慢查询日志文件路径
mysql> show variables like 'slow_query_log_file';
+---------------------+-------------------------------------------------+
| Variable_name | Value |
+---------------------+-------------------------------------------------+
| slow_query_log_file | /var/lib/mysql/iZ8vb0ywcounjc3oh3rv2jZ-slow.log |
+---------------------+-------------------------------------------------+
1 row in set (0.00 sec)
以上内容结合mysql官网和博文https://blog.csdn.net/qq_38225558/article/details/82776348,博文https://www.shujukuba.com/mysql/99.html,结合书本,外加自己的理解实践整理而成!!越努力越幸运!!!