MySQL数据库管理

一:使用 MySQL 数据库

1:查看数据库结构

root@localhost \~# mysql -u root -ppwd123

mysql> show databases;

mysql> use mysql

mysql> show tables;

mysql> describe user;

mysql> select * from user\G;

备注:

information_schema数据库:保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等

performance_schema:用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况mysql:是 MySQL 服务正常运行所需的数据库,其中包含了用户认证相关的表

2:创建及删除数据库和表

(1)创建新库

mysql> create database auth;

(2)创建新表

mysql> use auth;

mysql> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));

备注:

DEFAULT '' 密码默认为空

注意:

5.7以前的版本的password()加密函数可以生成16位密文,5.7后的password()函数可以生成41位的密文,其算法为mysql_native_password;设置密码字段的时候要考虑加密,提供的字符长度要够用。,否则在添加记录时,如果使用了password()加密函数保存密码字段,会提示字符长度错误。

8.0的mysql已经弃用password()

(3)删除一个数据表

mysql> DROP TABLE auth.users;

(4)删除一个数据库

mysql>DROP DATABASE auth;

3:SQL语言

DDL:数据定义语言(create、drop、alter)

DML:数据操纵语言(insert、update、delete)

DQL:数据查询语言(select)

DCL:数据控制语言(grant、revoke、commit、rollback)

4:管理表中的数据记录

(1)插入数据记录

mysql>use auth;

mysql>INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD ('123456'));

mysql>INSERT INTO users VALUES('lisi', PASSWORD('654321'));

(2)查询数据记录

mysql>select * from auth.users;

mysql>SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';

(3)修改数据记录

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';

mysql>FLUSH PRIVILEGES; /

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

(4)删除数据记录

mysql>DELETE FROM auth.users WHERE user_name='lisi';

mysql>SELECT * FROM auth.users;

5:数据库表高级操作

(1)克隆表

mysql>create table user01 like auth.users ; //通过 LIKE 方法,复制 users 表生成 tmp 表,注意,此表为空

mysql>insert into user01 select * from auth.users ; //通过 player 表生成 tmp 表内数据记录

(2)删除表

mysql> delete from user01 where user_name='zhangsan';

mysql>delete from user01 ;

mysql>insert into user01 select * from auth.users ;

mysql>truncate table user01 ;

mysql>select count(*) from user01 ;

备注:

truncate和delete的区别:

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

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

truncate删除数据后重新写数据会从1开始,

delete删除数据后只会从删除前的最后一行续写;内存空间上,truncate省空间

delete属于DML语句,而truncate和drop都属于DDL语句

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

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

drop table 表名 删除表,内容连带结构一起删除;

(2)临时表

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=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 之后查看临时表状态

二:数据库用户授权

1:授予权限

mysql>GRANT select ON auth.* TO ' zhangsan '@'localhost' IDENTIFIED BY '123456';

2:查看权限

mysql> SHOW GRANTS FOR 'zhangsan'@'localhost';

3:验证权限

root@localhost \~# mysql -u zhangsan -p123456

相关推荐
hopsky21 小时前
《HBase 权威指南》 Lars George
大数据·数据库·hbase
Architect_Lee21 小时前
mac快速安装mysql
数据库·mysql·macos
Elastic 中国社区官方博客21 小时前
Elasticsearch:列式索引模式 - Columnar index mode
大数据·数据库·elasticsearch·搜索引擎·全文检索
Lysander.Jovian21 小时前
Nginx服务2
运维·数据库·nginx
小张同学a.21 小时前
zabbix企业级监控平台4——分布式监控与grafana数据可视化
linux·运维·数据库·分布式·信息可视化·zabbix·grafana
渣渣盟21 小时前
当 Redis 写入不再是瓶颈后,Flink 任务的反压可能来自哪里?如何系统性地定位和解决 Flink 反压问题?
数据库·redis·flink
七牛开发者21 小时前
Codex 实践系列 Vol.04:用 Goal 和 Plan 管住一个长任务
java·数据库·人工智能·github·copilot
仍然.21 小时前
服务端高并发分布式结构演进之路
大数据·数据库·redis
MC皮蛋侠客1 天前
Redis 系列(三):底层实现(一)——对象系统、SDS 与 dict
数据库·redis·缓存
杜子不疼.1 天前
不会SQL也能改数据库?我用NocoDB把MySQL变成了表格界面
数据库·sql·mysql