超实用的MySQL数据管理

一、数据库基本操作

1.1 查看已存在数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| fy                 |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
#大部分SQL操作命令必须以;结束

1.1.1 mysql默认4个数据库

● information_schema:定义访问数据库元数据的方式。数据库名和表名,列的数据类型、访问权限等。
● mysql:核心数据库,负责存储数据库用户、权限、关键字等用户需要使用的控制和管理信息。
● performance_schema:数据库的性能参数,存储引擎等。
● sys:sys系统库下包含许多视图,它们以各种方式对performance_schema表进行聚合计算展示。

1.2 查看当前数据库中有哪些表

mysql> use mysql;
mysql> show tables;

1.3 查看表的结构

mysql> use mysql;
mysql> describe user;#user为表

1.4 SQL数据库语音的分类

● DDL(Data Definition Language,数据定义语音):用来建立数据库、数据库对象和定义字段,如CREATE、ALTER、DROP。
● DML(Data Manipulation Language,数据操纵语言):用来插入、删除和修改数据库中的数据,如INSERT、UPDATE、DELETE。
● DQL(Data Query Language,数据查询语言):用来查询数据库中的数据,如SELECT。
● DCL(Data Control Language,数据控制语言):用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、GRANT、REVOKE。

1.4.1 DDL(创建数据库和表)

1.创建新的数据库

mysql> create database auth;#新建库auth

2.创建新的表

#CREATE TABLE 表名(字段1名称类型,字段2名称类型,...,PRIMARY KEY(主键名))
mysql> create table users (user_name char(16) not null, user_passwd char(48)default '', primary key(user_name));

字段名称、类型、约束解释:
字段1名称:属性名称,自定义
字段1类型:int(4) 整型 代表0000-9999
double 浮点型
decimal(5,2)有效数字是5位,小数点后面保留2位 100.00;099.50
float 单精度浮点 4字节
char 字符
char (10)固定长度字符串,字符串要用单引号引起来
varchar(50)可变长度字符串
字段1约束:
非空约束:内容不允许为空 not null
主键约束:非空且唯一 标识 primary key(主键)
默认约束:假如没有填数据,默认预先设定的值填写 default ‘未知’
自增特性:id 1 2 3 4 auto_increment(自动增长)
存储引擎:myisam innodb
字符集:UTF-8

3.删除一个数据表

mysql> drop table users;

4.删除一个数据库

mysql> drop database auth;

1.4.2 DML(管理数据表中的数据)

1.插入数据记录

#INSERT INTO 表名(字段1,字段2,...) VALUES(字段1的值,字段2 的值,...)
mysql> use auth;
mysql> insert into users(user_name,user_passwd) values('zhangsan', password ('123456'));

2.查询数据记录

#select 字段名1,字段名2,...from 表名 where 条件表达式
mysql> mysqlt * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| zhangsan  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)
mysql> select user_name,user_passwd from auth.users where user_name='zhangsan';
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| zhangsan  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)

3.修改数据记录

#update 表名 set 字段名 1=字段值 1 [,字段名 2=字段值 2] where 条件表达式
mysql> update auth.users set user_passwd=password('') where user_name='lisi';
mysql> select * from auth.users;

4.修改数据库密码

mysql> update mysql.user set authentication_string=password('123457') where user='root';
[root@server1 ~]# mysqladmin -u root -p'123457' password '123456'

5.删除数据库记录
● delete from 表名 where 条件表达式

mysql> delete from auth.users where user_name='lisi';
mysql> select * from auth.users;

1.5 数据库高级操作

1.5.1 清空表

● delete from 语句,可以删除表内的数据,除此之外还可以使用truncate table 语句实现清空表内记录。delete from 语句可以使用where子句对删除的结果集进行过滤选择,这样更方便、更灵活。truncate table语句是删除表中所有记录数据,没法定制,灵活性稍差。

mysql> create table tmp like player;#通过like方法,复制player表生成tmp表
mysql> insert into tmp select * from player;#通过player表生成tmp表内数据记录
mysql> delete from tmp where level >= 45;
mysql> delete from tmp;
mysql> insert into tmp select * from player;
mysql> truncate table tmp;
mysql> select count(*) from tmp;

1.5.2 临时表

● 是临时建立的表,并不会长期存在,主要用于保存一些临时数据。临时表有个特性,就是只在当前连接可见,当前连接下可执行增删改查等操作,当连接被关闭后,临时表就会被MySQL删除,相关的资源也会被释放。

mysql> select * from mytmp;#查看mytmp表是否存在
mysql> create temporary table `mytmp` (`id` int(10) not null auto_increment, `name` varchar(32)character set utf8 collate utf8_bin not null, `level` int(10) not null, primary key (id))engine=lnnoDB default charset=utf8;
mysql> insert into mytmp(name,level) values('aa',10);
mysql> select * from mytmp;#退出前
mysql> quit
mysql> select * from mytmp;#退出后

1.5.3 克隆表

mysql> drop table tmp;
mysql> create table tmp as select * from player;

方法一:通过like方式克隆表

mysql> create table test like mytmp;#通过like方法,复制mytmp表生成test表
mysql> show create table test\g
mysql> select * from test;
mysql> insert into test select * from mytmp;#将mytmp表的数据写入test表
mysql> select * from test;

方法二:通过创建表的方式克隆

mysql> show create table mytmp\g
mysql> create table `test` (`id` int(10) not null auto_increment, `name` varchar(32) character set utf8 collate utf8_bin not null, `level` int(10) not null, primary key (id)) engine=innodb default charset=utf8;
#改名后创建新表
mysql> select * from mytmp;

二、数据库用户授权

● grant:当用户已存在时,直接提权。
● 当用户不存在时,先创建用户,再提权。
● revoke:只撤销权限,不删除用户

2.1 授予权限

● grant 权限列表 on 数据库名.表名 to 用户名@来源地址 [ identified by ‘密码’ ]

mysql> grant select on auth.* to ' xiaoqi'@'localhost' identified by '123456';
[root@server1 ~]# mysql -u xiaoqi -p

2.2 查看权限

● show grants for 用户名@来源地址

mysql> show grants; ##查看当前用户的权限
mysql> show grants for xiaoqi@localhost; ##查看从本地登录的xiaoqi用户的权限
mysql> select user from mysql.user; ##查看当前系统中的用户

2.3 撤销用户权限

● revoke 权限列表 on 数据库名. 表名 from 用户名@来源地址

mysql> revoke all privileges on auth.* from ‘xiaoqi’@‘localhost’;
mysql> show grants for 'xiaoqi'@'localhost';#确认撤销对auth库的权限
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值