目标 :
- 能理解数据库的概念
- 安装Mysql
- 启动,关闭及登陆MySQL
- 能够使用SQL语句操作数据库
- 能够使用SQL语句操作表
- 能够使用SQL语句操作表结构
- 使用SQL对数据完成CRUD的操作
- 可以使用SQL语句完成复杂的查询语句
数据库的介绍:
-
数据存储方式
java中创建对象 : Student s = new Student(); 存在内存中
存储位置 | 优点 | 缺点 |
---|---|---|
内存 | 速度快 | 不能永久保存,数据是临时状态的 |
文件 | 数据可以永久存储 | 操作数据不方便,查询某一个数据 |
数据库 | 1. 数据可以永久保存2. 查询速度快3. 对数据管理方便 | 占用资源,需要购买 |
什么是数据库?
-
1. 存储数据的仓库
-
2. 本质是一个文件系统,还是以文件的方式存在服务器的电脑上
-
3. 所有关系型数据库都可以使用通用的SQL语句进行管理
-
4. DBMS(数据库管理系统) DataBase Management System
MySQL : 开源免费的数据库,小型的数据库,已经被Oracle收购了,MySQL6.x版本开始收费!
Oracle : 收费的大型数据库.
DB2 :IBM公司的数据库产品,收费,常用于银行项目系统中.
SQL Server : 中型数据库,C#,.net等于语言常用.
SQLife : 微型数据库,一般在手机中应用.为什么选择mysql ?
- 免费
- 功能强大.
数据库组成 :
-
1. 客户端(用户连接数据库实例,发送指令,请求实例执行什么样的操作)
- 数据库软件安装后生成的
-
2. 数据库实例
-
3. (管理数据文件的)DBMS
- 安装数据库后创建配置的
-
4. 数据文件(数据存储的文件)
- 数据安装完成后会自动创建系统必须的数据文件
- 用户可以自己创建数据文件
MySQL 目录:
-
my.ini : MySQL的核心配置文件
-
bin : MySQL的可执行文件(开启MySQL实例,运行客户端,导入,导出…)
-
data : 数据库的数据文件存储位置
开启MySQL服务就等价于开启MySQL实例.只有开启实例才可以操作数据库
-
cmd命令
net start 服务名称 net stop 服务名称
-
控制台连接数据库
mysql服务没有开启 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061) mysql -u用户名 -p密码 mysql默认端口号是3306客户端会默认使用3306连接服务器数据库,如果不是默认端口需要指定-P端口号
mysql -u用户名 -p密码 -P端口号
mysql -u用户名 -p密码 -hIP地址 -P端口退出控制台
exit或quit
-
mysql->数据库管理软件
数据库 : 就使用一个文件夹 表 : 就是一个文件 数据 : 存储在文件中的内容 mysql 下面可以包含多个数据库->一个数据库下面可以包含多张表->一张表下面可以包含多条数据
-
数据库管理系统(DBMS)
主要是操作和管理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一管理和控制以保证数据库的安全性和完整性.用户可以通过数据库管理系统访问数据库中表内的数据.
SQL语言 : 数据库管理系统进行交互的语言
ANSI(美国国家标准局)
ISO(欧盟国际认证)
SQL
-
SQL 是 Structure Query Language(结构化查询语言)
-
SQL主要是对关系数据库的操作应用语言(实现了关系型数据库中的信息检索)
-
SQL-86 是SQL语言的通用标准(所有关系型数据都需要准许SQL-86的语法)
SQL语句主要分3类:
1. DDL : 数据定义语言,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象 1. create 2. drop 3. alter 2. DML : 数据操作语言,用于添加,删除,更新和查询数据库记录. 1. insert 2. delete 3. update 4. select 3. DCL : 数据控制语言,用于控制不同数据段的访问权限. 1. grant 2. revoke 3. Commands end with ; or \g. : 命令的结束符,用;或者\g结束.
DDL语句
DDL语句主要是对数据库和表进行创建,删除,修改的操作语言.
1. 展示当前mysql下面的所有数据库.
1. show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hnkj |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
1. information_schema : 主要存储系统中的一些数据库对象信息,比如,用户名,列信息,字符集信息,分区信息...
2. mysql : 存储了系统的用户权限信息
3. test : 系统自动创建的测试数据库,任何用户都可以使用
;和\g都是代表结束命令符;
\c 清除编写的命令行.
2. 创建数据库
1. create database dbname;
mysql> create database hnkj;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hnkj |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
Query OK : 代表上一行命令执行成功
1 row affected : 表示操作只影响数据库中一行记录
(0.00 sec) : 记录了操作执行的时间
mysql> create database hnkj;
ERROR 1007 (HY000): Can't create database 'hnkj'; database exists
ERROR 1007 (HY000) : 异常类型
Can't create database 'hnkj'; database exists : 异常消息
3. 删除数据库
1. drop database dbname;
mysql> drop database hnkj;
Query OK, 2 rows affected (0.18 sec)
4. 特殊操作
1. 判断是否存在,如果不存在则创建hnkj数据库.
2. create database if not exists hnkj;
3. 创建数据库并制定字符集
4. create database hnkj3 default character set utf-8
5. 查看某个数据库的定义信息
mysql> show create database hnkj3;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| hnkj3 | CREATE DATABASE `hnkj3` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)
6. 修改数据库的默认字符集
7. alter database hnkj2 character set utf8;
5. 使用数据库
1. 选择/切换数据库
2. use 数据库名;
3. 显示正在使用的数据库
4. select database(); 使用的是一个mysql全局函数
select database hnkj; 语法错误
#day2 0427
表(DDL)
## 前提使用某个数据库
1. 创建表
create table tableName(
column_name1 column_type1 constraints,
column_name2 column_type2 constraints,
column_name3 column_type3 constraints,
....
column_nameN column_typeN constraints
);
create : 创建
table : 表的关键字
column_name : 列的名称
column_type : 列的数据类型
constraints : 列的约束条件
create table sutndet2(
no int, --整数
name varchar(30),--字符串
score double,--小数
birthday date--生日,最后没有逗号
)
2. 查看表
1. show tables;(mysql独有的)
mysql> show tables;
+----------------+
| Tables_in_hnkj |
+----------------+
| student |
| sutndet2 |
+----------------+
2 rows in set (0.00 sec)
3. 查看表结构
1. desc 表名;
mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| no | int(11) | YES | | NULL | |
| name | varchar(30) | YES | | NULL | |
| score | double | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
4. 查看创建表的SQL语句
1. show create table 表名\G;
\G : 安装字段竖着排列
5. 删除表
1. drop table tableName;
6. 修改表
1. alter table tableName modify [column] column_definition [first | after col_name];
mysql> alter table emp modify ename varchar(20); -- 修改列的类型
Query OK, 0 rows affected (0.11 sec)
mysql> alter table emp add column age int(3); -- 添加新列
Query OK, 0 rows affected (0.09 sec)
mysql> alter table emp drop column age; --删除表中指定的列
Query OK, 0 rows affected (0.08 sec)
mysql> alter table emp change deptno dno int(2); -- 修改列的名称
Query OK, 0 rows affected (0.08 sec)
change和modify修改表的定义,不同的是change后面需要些两次列名,不方便.
但是change可以改变列的名称,modify不可以改变列的名称
mysql> alter table emp add age int(2) after ename; -- 将age添加到ename的后面
Query OK, 0 rows affected (0.09 sec)
mysql> alter table emp modify age int(3) first; -- 将age修改到第一列
Query OK, 0 rows affected (0.07 sec)
mysql> alter table emp rename emp1; -- 修改表名
Query OK, 0 rows affected (0.01 sec)
7. 快速创建一个表结构相同的表
mysql> create table new_emp like emp;
Query OK, 0 rows affected (0.03 sec)
8. drop table if exists 表名;
9. alter table emp character set gb2312;
2. Mysql的数据类型
1. 整形 : int
2. 浮点型 : double
3. 字符串 : varchar
4. 时间 : date,格式:yyyy-MM-dd,只有年月日,没有时分秒
数据类型 : https://www.cnblogs.com/-xlp/p/8617760.html
创建员工表:
emp表名
列名(ename,hiredate,sal,deptno);
DML操作表中的数据
DML操作是指对数据库中表记录(数据)的操作,主要包括插入(insert),修改(update),删除(delete),查询(select)
DBA(DDL)
码农(DML)
1. 插入记录
insert into tableName(field1,field2....fieldN)values(value1,value2,....valueN);
insert into emp(ename,hiredate,sal,dno)values('张三','2005-08-08',188.6,10);
insert into emp values('张三','2005-08-08',188.6,10);--值必须和列的顺序对应,值必须和;列的数量一致
insert into emp(ename,hiredate)values('李四','2018-08-08');
create table aa4(id int(2) ZEROFILL); -- ZEROFILL 设置的显示宽度,如果不够宽度默认以0填充
insert into tableName(field1,field2....fieldN)values
(value1,value2,....valueN),
(value1,value2,....valueN),
(value1,value2,....valueN),
(value1,value2,....valueN),
(value1,value2,....valueN),
.....
(value1,value2,....valueN);
select 列名(*代表当前表中的所有列) from 表名
2. 修改
1. update tableName set field1=value1,field2=value2,....fieldN=valueN [where condition]
condition : 条件表达式结果返回为true的时候,当前行才会被修改
update emp set dno = 20 where ename='admin'
mysql> select * from emp;
+-------+------------+---------+------+
| ename | hiredate | sal | dno |
+-------+------------+---------+------+
| 张三 | 2005-08-08 | 3000.00 | 10 |
| admin | NULL | 3000.00 | 20 |
| wuyu | NULL | 3000.00 | 10 |
+-------+------------+---------+------+
3 rows in set (0.00 sec)
mysql> update emp set sal=sal*1.2 where sal<3000;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from emp;
+-------+------------+---------+------+
| ename | hiredate | sal | dno |
+-------+------------+---------+------+
| 张三 | 2005-08-08 | 3000.00 | 10 |
| admin | NULL | 1800.00 | 20 |
| wuyu | NULL | 3000.00 | 10 |
+-------+------------+---------+------+
3 rows in set (0.00 sec)
3. 删除
1. delete from tableName [where condition]
mysql> select * from emp;
+-------+----------+------+------+
| ename | hiredate | sal | dno |
+-------+----------+------+------+
| admin | NULL | NULL | 20 |
| wuyu | NULL | NULL | 10 |
+-------+----------+------+------+
2 rows in set (0.00 sec)
mysql> delete from emp where dno=10;
Query OK, 1 row affected (0.01 sec)
mysql> select * from emp;
+-------+----------+------+------+
| ename | hiredate | sal | dno |
+-------+----------+------+------+
| admin | NULL | NULL | 20 |
+-------+----------+------+------+
1 row in set (0.00 sec)
截断删除:
truncate table 表名; 删除表中的所有数据
delete from 表名;删除表中的所有数据
delete是逐条删除
truncate 删除数据段(效率高),把当前表之间删除,然后在创建一个新表
create table emp like emp;
删除表;
存储物理磁盘
字符集 :
mysql> show variables like 'character%';
+--------------------------+----------------------------------------------------
-----------+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----------+
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | gbk
|
| character_set_filesystem | binary
|
| character_set_results | gbk
|
| character_set_server | gbk
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.0\share
\charsets\ |
+--------------------------+----------------------------------------------------
-----------+
8 rows in set (0.00 sec)
character_set_client : 修改客户端的字符集
character_set_connection : 连接字符集
character_set_results : 查询的结果字符集
set character_set_client=utf8
Insert的特殊用法
表复制(包含结构和数据)
insert into 表名1 select * from 表名2;
insert into 表名1 select 列名1,列名2 from 表名2;
insert into 表名1 select * from 表名2 where id<10;
4. 查询记录
select * from tableName [where condition]
mysql> select * from emp;
+-------+----------+------+------+
| ename | hiredate | sal | dno |
+-------+----------+------+------+
| admin | NULL | NULL | 20 |
| admin | NULL | NULL | 20 |
| wuyu | NULL | NULL | 10 |
| admin | NULL | NULL | 20 |
| wuyu | NULL | NULL | 10 |
| admin | NULL | NULL | 20 |
| wuyu | NULL | NULL | 10 |
| admin | NULL | NULL | 20 |
| wuyu | NULL | NULL | 10 |
+-------+----------+------+------+
9 rows in set (0.00 sec)
mysql> select ename,dno from emp;
+-------+------+
| ename | dno |
+-------+------+
| admin | 20 |
| admin | 20 |
| wuyu | 10 |
| admin | 20 |
| wuyu | 10 |
| admin | 20 |
| wuyu | 10 |
| admin | 20 |
| wuyu | 10 |
+-------+------+
9 rows in set (0.00 sec)
查询不重复的记录?
mysql> select distinct ename,dno from emp;
+-------+------+
| ename | dno |
+-------+------+
| admin | 20 |
| wuyu | 10 |
+-------+------+
2 rows in set (0.00 sec)
distinct : 将表中重复的记录去掉,然后显示出来
条件查询,如果只需要显示一部分数据,可以使用where关键字处理
mysql> select * from emp where dno = 10;
+-------+----------+------+------+
| ename | hiredate | sal | dno |
+-------+----------+------+------+
| wuyu | NULL | NULL | 10 |
| wuyu | NULL | NULL | 10 |
| wuyu | NULL | NULL | 10 |
| wuyu | NULL | NULL | 10 |
+-------+----------+------+------+
4 rows in set (0.00 sec)
where后面条件判断除了=,is,>,<,<=,>=,!=
逻辑运算符 : and(&&),or(||)
排序和限制
insert into emp values('A','2017-08-09',158.5,10),
('A','2017-08-09',158.5,10),
('B','2018-08-09',1580.5,10),
('C','2017-12-09',358.5,20),
('D','2017-05-09',458.5,20),
('E','2011-08-09',2258.5,10),
('FA','2017-02-09',12158.5,10),
('D','2017-09-09',22158.5,10);
select * from tableName [where condition] [order by field1[desc|asc],field2[desc|asc]....]
设置列的别名
mysql> select ename 姓名,sal as 工资,dno '部门编号' from emp;
+------+----------+----------+
| 姓名 | 工资 | 部门编号 |
+------+----------+----------+
| A | 158.50 | 10 |
| A | 158.50 | 10 |
| B | 1580.50 | 10 |
| C | 358.50 | 20 |
| D | 458.50 | 20 |
| E | 458.50 | 10 |
| FA | 12158.50 | 10 |
| D | 22158.50 | 10 |
+------+----------+----------+
8 rows in set (0.00 sec)
表的别名(解决多表操作,列名重复的问题)
mysql> select e.ename,e.sal from emp e;
+-------+----------+
| ename | sal |
+-------+----------+
| A | 158.50 |
| A | 158.50 |
| B | 1580.50 |
| C | 358.50 |
| D | 458.50 |
| E | 458.50 |
| FA | 12158.50 |
| D | 22158.50 |
+-------+----------+
8 rows in set (0.00 sec)
查询结果可以和运算符组合使用
select 列名1+固定值 from 表名;
select 列名1+列名2 from表名;
运算只能是数值类型.
计算员工每年的总工资(显示姓名,每月工资,总工资)
select ..... [limit offset_start,row_count]
offset_start : 行起始的位置
row_count : 显示的行数
mysql> select * from emp order by sal limit 0,3;
+-------+------------+--------+------+
| ename | hiredate | sal | dno |
+-------+------------+--------+------+
| A | 2017-08-09 | 158.50 | 10 |
| A | 2017-08-09 | 158.50 | 10 |
| C | 2017-12-09 | 358.50 | 20 |
+-------+------------+--------+------+
3 rows in set (0.00 sec)
in关键字 当前列在in的集合中存在的展示
select .... where 列名1 in(集合)
集合中的值以,号隔开.
between...and : 在一个范围之内,包含头和尾的区间范围
insert into emp values('A','2017-08-09',158.5,10),
('张三','2017-08-09',158.5,10),
('李四','2018-08-09',1580.5,10),
('王五','2017-12-09',358.5,20),
('王六','2017-05-09',458.5,20),
('赵七','2011-08-09',2258.5,10),
('赵五','2017-02-09',12158.5,10),
('阿七七','2017-09-09',22158.5,10);
like 模糊查询
select ... 列名 like '%_'
% : 任意长度的字符
_ : 任意一个字符
<>和!=都是不等
where
为什么要条件查询?
如果没有条件查询将会对整个表中的数据进行处理,实际应用中一般对某些数据进行处理,条件查询就是进行数据过滤.
select 字段名 from 表名 wher 条件;
delete... where 条件
update ... where 条件
比较运算符
>,<.<=.>=,=,<>,!=
>
between...and : 区间范围 查询
in(集合) 包含查询
like '_A%' 模糊查询
is null : 判断当前列的值是否等于null
逻辑运算符
and
or
not
!
复杂查询
分组:
group by 分类聚合
函数:
sum(*):求和
count(*) : 个数
max(*) : 最大值
min(*) : 最小值
mysql> select count(1) from emp;
+----------+
| count(1) |
+----------+
| 16 |
+----------+
1 row in set (0.00 sec)
编号 部门编号 group by 部门编号 10 20
1 10 1 10 3 20
2 10 2 10 5 20
3 20 4 10
4 10 6 10
5 20 7 10
6 10
7 10
显示部门平均工资大于3000的,展示部门编号,部门人数,平均工资
写的顺序 : select.... from .. where ..group by ... having ..orderby
执行顺序 : from...where..groupby..having..orderby
##表连接
当需要同时显示多个表中的字段时,就可以使用表连接来实现.
内连接
只会显示两张表中同时存在的数据.
外连接
右外连接 : 包含右边表中的所有记录,甚至左边表中不存在的记录.
左外连接 : 包含左边表中的所有记录,甚至右边表中不存在的记录.
部门表
dept ,deptno,dname
mysql> select * from dept,emp where dno = deptno;
+--------+--------+--------+------------+----------+------+
| deptno | dname | ename | hiredate | sal | dno |
+--------+--------+--------+------------+----------+------+
| 30 | 开发部 | A | 2017-08-09 | 158.50 | 30 |
| 30 | 开发部 | A | 2017-08-09 | 158.50 | 30 |
| 10 | 吃饭部 | B | 2018-08-09 | 1580.50 | 10 |
| 20 | 嘚瑟部 | C | 2017-12-09 | 358.50 | 20 |
| 10 | 吃饭部 | E | 2011-08-09 | 458.50 | 10 |
| 10 | 吃饭部 | FA | 2017-02-09 | 12158.50 | 10 |
| 30 | 开发部 | A | 2017-08-09 | 158.50 | 30 |
| 10 | 吃饭部 | 张三 | 2017-08-09 | 158.50 | 10 |
| 10 | 吃饭部 | 李四 | 2018-08-09 | 1580.50 | 10 |
| 20 | 嘚瑟部 | 王五 | 2017-12-09 | 358.50 | 20 |
| 20 | 嘚瑟部 | 王六 | 2017-05-09 | 458.50 | 20 |
| 10 | 吃饭部 | 赵七 | 2011-08-09 | 2258.50 | 10 |
| 10 | 吃饭部 | 赵五 | 2017-02-09 | 12158.50 | 10 |
| 10 | 吃饭部 | 阿七七 | 2017-09-09 | 22158.50 | 10 |
+--------+--------+--------+------------+----------+------+
mysql> select * from emp left join dept on deptno = dno;
+--------+------------+----------+------+--------+--------+
| ename | hiredate | sal | dno | deptno | dname |
+--------+------------+----------+------+--------+--------+
| A | 2017-08-09 | 158.50 | 30 | 30 | 开发部 |
| A | 2017-08-09 | 158.50 | 30 | 30 | 开发部 |
| B | 2018-08-09 | 1580.50 | 10 | 10 | 吃饭部 |
| C | 2017-12-09 | 358.50 | 20 | 20 | 嘚瑟部 |
| D | 2017-05-09 | 458.50 | NULL | NULL | NULL |
| E | 2011-08-09 | 458.50 | 10 | 10 | 吃饭部 |
| FA | 2017-02-09 | 12158.50 | 10 | 10 | 吃饭部 |
| D | 2017-09-09 | 22158.50 | NULL | NULL | NULL |
| A | 2017-08-09 | 158.50 | 30 | 30 | 开发部 |
| 张三 | 2017-08-09 | 158.50 | 10 | 10 | 吃饭部 |
| 李四 | 2018-08-09 | 1580.50 | 10 | 10 | 吃饭部 |
| 王五 | 2017-12-09 | 358.50 | 20 | 20 | 嘚瑟部 |
| 王六 | 2017-05-09 | 458.50 | 20 | 20 | 嘚瑟部 |
| 赵七 | 2011-08-09 | 2258.50 | 10 | 10 | 吃饭部 |
| 赵五 | 2017-02-09 | 12158.50 | 10 | 10 | 吃饭部 |
| 阿七七 | 2017-09-09 | 22158.50 | 10 | 10 | 吃饭部 |
+--------+------------+----------+------+--------+--------+
16 rows in set (0.00 sec)
mysql> select * from emp right join dept on deptno = dno;
+--------+------------+----------+------+--------+--------+
| ename | hiredate | sal | dno | deptno | dname |
+--------+------------+----------+------+--------+--------+
| B | 2018-08-09 | 1580.50 | 10 | 10 | 吃饭部 |
| E | 2011-08-09 | 458.50 | 10 | 10 | 吃饭部 |
| FA | 2017-02-09 | 12158.50 | 10 | 10 | 吃饭部 |
| 张三 | 2017-08-09 | 158.50 | 10 | 10 | 吃饭部 |
| 李四 | 2018-08-09 | 1580.50 | 10 | 10 | 吃饭部 |
| 赵七 | 2011-08-09 | 2258.50 | 10 | 10 | 吃饭部 |
| 赵五 | 2017-02-09 | 12158.50 | 10 | 10 | 吃饭部 |
| 阿七七 | 2017-09-09 | 22158.50 | 10 | 10 | 吃饭部 |
| C | 2017-12-09 | 358.50 | 20 | 20 | 嘚瑟部 |
| 王五 | 2017-12-09 | 358.50 | 20 | 20 | 嘚瑟部 |
| 王六 | 2017-05-09 | 458.50 | 20 | 20 | 嘚瑟部 |
| A | 2017-08-09 | 158.50 | 30 | 30 | 开发部 |
| A | 2017-08-09 | 158.50 | 30 | 30 | 开发部 |
| A | 2017-08-09 | 158.50 | 30 | 30 | 开发部 |
| NULL | NULL | NULL | NULL | 40 | 无聊部 |
+--------+------------+----------+------+--------+--------+
15 rows in set (0.00 sec)
子查询
当查询的时候,需要的条件是另外一个select语句的结果,这个时候就需要使用子查询,
用于子查询的关键字:
in,not in,=,!=,exists,not exists
显示部门平均工资大于1000的部门信息(部门编号和部门名称)
mysql> select * from dept where deptno in(select dno from emp where dno is not n
ull group by dno having avg(sal)>1000);
+--------+--------+
| deptno | dname |
+--------+--------+
| 10 | 吃饭部 |
+--------+--------+
1 row in set (0.00 sec)
DCL
DCL语句主要是DBA用来管理系统对象的权限.
1. 创建用户
1. create user 'username'@'host' identified by 'password';
1. username : 你将 创建的用户名
2. host : 指当前用户在那个主机上面可以登录,如果本地用户可用localhost/127.0.0.1,如果想让任意主机访问,可以使用通配符 '%'
3. password : 用户的登陆密码,可以为空
create user 'wuyu'@'%' identified by '123456'
create user 'pig'@'127.0.0.1' identified by '123456'
create user 'pig'@'localhost' identified by '123456'
create user 'pig'@'10.1.6.54' identified by '123456'
2. 授权
1. grant privileges on databaseName.tableName to 'username'@'host'
privileges : 用户操作权限, select,insert,update等,如果需要授权所有权限 all
databaseName : 数据库名称
tableName : 表名,如果授予该用户对某个数据库和表的响应操作,如果所有库和所有表 *.*
grant select,insert on hnkj.* to 'wuyu'@'localhost'
grant all on hnkj.dept to 'wuyu'@'%'
grant all on *.* to 'wuyu'@'%'
grant all on *.* to 'wuyu'@'%' with grant option;
3. 设置修改密码
1. 为当前用户设置密码
2. set password=password('root');
3. 为其他用户设置密码
4. set password for 'wuyu'@'localhost'=password('123546');
4. 删除用户
1. drop user 'wuyu'@'localhost'
5. 撤销权限
1. revoke select on *.* from 'wuyu'@'localhost'
##MYSQL 导入导出SQL文件
1. 导出数据库
1. mysqldump -u用户名 -p密码 数据库名 表名 > 导出文件的名称
2. 导入数据库(先创建数据库)
1. mysql -uroot -proot 数据库 < sql文件