MySQL教程:简单操作

  • 2018-08-10
  • 84
  • 1
  • 0

上一章节:MySQL教程:安装

 

简单操作


连接数据库

如何连接数据库?
一般连接数据库的方式分为两种:命令行和可视化数据库管理工具。

前提

连接数据库的前提:
  • 数据库支持远程连接,也就是说客户端和服务端网络是通的;
  • 有连接数据库的权限账号;
MySQL服务端IP:192.168.10.12
-- 查看当前用户,只支持本地连接
mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | localhost |
| root | test      |
+------+-----------+
3 rows in set (0.08 sec)

-- 授权远程管理员用户
-- 格式:grant  权限 on 数据库.表 to   '用户'@'IP地址' identified by password;
mysql> grant all on *.* to 'admin'@'192.168.10.%' identified by '123456';
Query OK, 0 rows affected (0.07 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

mysql> select user,host from mysql.user;
+-------+--------------+
| user  | host         |
+-------+--------------+
| root  | 127.0.0.1    |
| admin | 192.168.10.% |
| root  | localhost    |
| root  | test         |
+-------+--------------+
4 rows in set (0.00 sec)

 

命令行连接

客户端IP:192.168.10.51

[root@nginx ~]#ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.51  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::4cc7:a3ca:57ae:d9d9  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::9f3c:9d93:a37c:2f5a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c6:7d:00  txqueuelen 1000  (Ethernet)
        RX packets 68324  bytes 71616519 (68.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 35849  bytes 6521172 (6.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 40  bytes 4474 (4.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 40  bytes 4474 (4.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@nginx ~]#mysql -uadmin -h 192.168.10.12 -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.6.40 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

 

可视化数据库管理工具

可视化数据库管理工具有很多,最常用的是Navicat for MySQL
Navicat for MySQL 是管理和开发 MySQL 或 MariaDB 的理想解决方案。它是一套单一的应用程序,能同时连接 MySQL 和 MariaDB 数据库,并与 Amazon RDS、Amazon Aurora、Oracle Cloud、阿里云和腾讯云等云数据库兼容。这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面。
打开Navicat for MySQL,选择连接–>MySQL,填入相关信息:

然后选中这个连接,右键–>打开连接:
连接成功:

接下来就可以对数据库做一些简单的操作了。

用户管理

-- 创建用户
create user '用户名'@'IP地址' identified by '密码';

-- 删除用户
drop user '用户名'@'IP地址';

-- 修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';

-- 修改密码
set password for '用户名'@'IP地址' = Password('新密码');

权限管理

格式

-- 查看权限
grant  权限 on 数据库.表 to   '用户'@'IP地址'

-- 授权
grant  权限 on 数据库.表 to   '用户'@'IP地址'

-- 取消授权
revoke 权限 on 数据库.表 from '用户名'@'IP地址'

 

权限

all privileges:除grant外的所有权限
select:仅查权限
select,insert:查和插入权限
usage:无访问权限
alter:使用alter table
alter routine:使用alter procedure和drop procedure
create:使用create table
create routine:使用create procedure
create temporary tables:使用create temporary tables
create user:使用create user、drop user、rename user和revoke  all privileges
create view:使用create view
delete:使用delete
drop:使用drop table
execute:使用call和存储过程
file:使用select into outfile 和 load data infile
grant option:使用grant 和 revoke
index:使用index
insert:使用insert
lock tables:使用lock table
process:使用show full processlist
select:使用select
show databases:使用show databases
show view:使用show view
update:使用update
reload:使用flush
shutdown:使用mysqladmin shutdown(关闭MySQL)
super:使用change master、kill、logs、purge、master和set global。还允许mysqladmin调试登陆
replication client:服务器位置的访问
replication slave:由复制从属使用

数据库名.*            数据库中的所有
数据库名.表           指定数据库中的某张表
数据库名.存储过程      指定数据库中的存储过程
*.*                   所有数据库

用户名@IP地址        用户只能在改IP下才能访问
用户名@192.168.1.%   用户只能在改IP段下才能访问(通配符%表示任意)
用户名@%             用户可以再任意IP下访问(默认IP地址为%)

 

数据库操作

-- 查看数据库
show databases;

 

默认数据库:

mysql - 用户权限相关数据
test - 用于用户测试数据
information_schema - MySQL本身架构相关数据

 

建库:

-- 创建数据库
-- utf8编码
create database db1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
-- gbk编码
create database db1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 

-- 使用数据库
use db1;

-- 显示当前使用的数据库中所有表:
SHOW TABLES;

 

表操作

查看表:

-- 查看数据库全部表
show tables; 

--  查看表所有内容
select * from 表名;

 

创建表:

create table 表名(
    列名  类型  是否可以为空,
    列名  类型  是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8

-- 例子
CREATE TABLE `tab1` (
  `nid` int(11) NOT NULL auto_increment,
  `name` varchar(255) DEFAULT zhangyanlin,
  `email` varchar(255),
  PRIMARY KEY (`nid`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
:默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值。
自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)注意:1、对于自增列,必须是索引(含主键)2、对于自增可以设置步长和起始值。
主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。

 

删除表:

drop table 表名;

 

清空表内容:

delete from 表名;
truncate table 表名;

 

修改表:

-- 添加列
alter table 表名 add 列名 类型;

-- 删除列 
alter table 表名 drop column 列名;

-- 修改列      
alter table 表名 modify column 列名 类型;  -- 类型
alter table 表名 change 原列名 新列名 类型; -- 列名,类型

-- 添加主键     
alter table 表名 add primary key(列名);

-- 删除主键          
alter table 表名 drop primary key;
alter table 表名  modify  列名 int, drop primary key;

-- 添加外键
alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);

-- 删除外键 
alter table 表名 drop foreign key 外键名称

-- 修改默认值
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

-- 删除默认值
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

 

评论