MySQL数据库管理

使用MySQL数据库

查看数据库结构

查看当前服务器中的数据库

cpp 复制代码
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| auth               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

查看当前数据库有哪些表

cpp 复制代码
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| users          |
+----------------+
1 row in set (0.00 sec)

查看表结构

cpp 复制代码
mysql> describe users;
+---------------+----------+------+-----+---------+-------+
| Field         | Type     | Null | Key | Default | Extra |
+---------------+----------+------+-----+---------+-------+
| user_name     | char(20) | NO   | PRI | NULL    |       |
| user_password | char(50) | YES  |     | 123456  |       |
+---------------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

SQL语言的主要组成部分

数据定义语言(DDL):DROP(删除)、CREATE(创建)、ALTER(修改)等语句。

数据操作语言(DML):INSERT(插入)、UPDATE(更新)、DELETE(删除)语句。

数据查询语言(DQL):SELECTE(选择),SHOW语句。

数据控制语言(DCL):GRANT(授权)、REVOKE(撤销授权)、COMMIT(提交)、ROLLBACK(回退)等语句。

创建及删除数据库和表

创建新库

cpp 复制代码
mysql> create database auth;

创建新表

cpp 复制代码
mysql> use auth;
mysql> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));
//DEFAULT ''  密码默认为空

删除一个数据表

cpp 复制代码
mysql> DROP TABLE auth.users;

删除一个数据库

cpp 复制代码
mysql>DROP DATABASE auth; 

管理表中的数据记录

插入数据记录

cpp 复制代码
mysql>use auth;
mysql>INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD ('123456')); 
mysql>INSERT INTO users VALUES('lisi', PASSWORD('654321'));    //password用来对密码进行加密

查询数据记录

cpp 复制代码
mysql>select * from auth.users;
mysql>SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';

修改数据记录

cpp 复制代码
mysql>UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name= 'lisi'; 
mysql>SELECT * FROM auth.users;

mysql>UPDATE mysql.user SET authentication_string=PASSWORD('123457') WHERE user='root'; //修改登录用户root的密码
mysql>FLUSH PRIVILEGES; 

[root@www ~]# mysqladmin -u root -p'123457' password '123456'

删除数据记录

cpp 复制代码
mysql>DELETE FROM auth.users WHERE user_name='lisi'; 
mysql>SELECT * FROM auth.users; 

数据库表高级操作

克隆表

cpp 复制代码
mysql>create table user01 like auth.users;     //通过 LIKE 方法,复制 users 表生成 tmp 表,注意,此表为空
mysql>insert into user01 select * from auth.users;     //通过 player 表生成 tmp 表内数据记录 

删除表

cpp 复制代码
mysql>delete from user01; 
mysql>truncate table user01; 

truncate和delete的区别:

truncate删除表中的内容,不删除表结构,释放空间;

delete删除表中的内容,不删除表结构,但不释放空间

delete可以在后续加上where进行针对行的删除

truncate和drop后面只能加上表名,直接删除表,无法where

临时表

cpp 复制代码
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=InnoDB DEFAULT CHARSET=utf8; 		//创建临时表 
mysql> insert into mytmp(name,level) values('aa',10); 		//插入数据 
Query OK, 1 row affected (0.01 sec) 
mysql>select * from mytmp; 
mysql>quit //退出当前连接 
Bye 
mysql>select * from mytmp;     //重新连接 MySQL 之后查看临时表状态,会发现不存在

数据库用户授权

授予权限

cpp 复制代码
mysql>GRANT select ON auth.* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';

查看权限

cpp 复制代码
mysql> SHOW GRANTS FOR 'zhangsan'@'localhost';

验证权限

cpp 复制代码
[root@localhost ~]# mysql -u zhangsan -p123456
mysql> select * from auth.users;
mysql> select * from mysql.user;
//zhangsan用户可以查看auth数据库的表,但不能查看mysql数据库的表。

撤销权限

cpp 复制代码
mysql> revoke all on auth.* from zhangsan@'localhost';

[root@localhost ~]# mysql -u zhangsan -p123456
mysql> select * from mysql.user;
撤销权限后,已经无法查看auth中的表
相关推荐
RestCloud23 分钟前
在制造业数字化转型浪潮中,数据已成为核心生产要素。然而,系统割裂、数据滞后、开发运维成本高等问题,却像顽固的 “数据枷锁”,阻碍着企业发展。ETLCloud与
数据库·postgresql
!chen33 分钟前
【Spring Boot】自定义starter
java·数据库·spring boot
流烟默1 小时前
MySQL索引调优之索引顺序必须和字段顺序一致吗?
mysql·索引调优
十碗饭吃不饱1 小时前
sql报错:java.sql.SQLSyntaxErrorException: Unknown column ‘as0‘ in ‘where clause‘
java·数据库·sql
我是Superman丶2 小时前
【优化】Mysql指定索引查询或忽略某个索引
数据库·mysql
程序定小飞2 小时前
基于springboot的在线商城系统设计与开发
java·数据库·vue.js·spring boot·后端
呆呆小金人2 小时前
SQL入门: HAVING用法全解析
大数据·数据库·数据仓库·sql·数据库开发·etl·etl工程师
LL_break2 小时前
Mysql数据库
java·数据库·mysql
野犬寒鸦2 小时前
从零起步学习Redis || 第十一章:主从切换时的哨兵机制如何实现及项目实战
java·服务器·数据库·redis·后端·缓存
倔强的石头_3 小时前
面向大数据架构的演进:为何 Apache IoTDB 是与生态无缝融合的理想之选?
数据库