数据库命令
数据库命令也就是我们所说的sql语句
SQL语句
- Structured Query Language的缩写,即结构化查询语句
- 关系型数据库的标准语言
- 不区分大小写,MySQL的账号与系统的账号是不相关的,MySQL的最高管理员用户为root
- 用于维护管理数据库
- 包括数据查询、数据更新、控制访问、对象管理等功能
SQL分类
- DDL:数据定义语言 create
- DML:数据操作语言 如insert,update,delete
- DQL:数据查询语言 如select show
- DCL:数据控制语言 权限
创建与查看数据库,表
查看mysql版本
select version();
查看mysql都有哪些数据库
show databases;
在MySQL中,当你执行show databases;命令时,你会看到几个默认的数据库。下面是每个数据库的含义:
- information_schema:这是一个特殊的数据库,提供了关于MySQL服务器上的所有其他数据库的信息。你可以通过查询这个数据库来获取关于数据库、表、列以及权限等的信息。它是只读的,不能被修改。
- mysql:这个数据库包含了MySQL服务器的用户账号和权限信息。例如,用户表user就存储在这个数据库中。它还包含了服务器需要的系统表,比如插件和时区信息。
- performance_schema:这个数据库用于收集数据库服务器性能参数。它可以帮助你监视MySQL服务器的性能,比如查询的执行时间、锁的使用情况等。通过查询这个数据库,你可以获取到关于服务器性能的详细信息。
- sys:sys数据库是一个相对较新的特性,它提供了一系列视图和函数,用于帮助数据库管理员更方便地查询performance_schema和information_schema数据库中的信息。sys数据库的目的是简化性能监控和系统管理任务。
- 每个数据库都有其特定的用途,并且对于数据库的管理和优化都是非常重要的。
切换到数据库
use 数据库名;
示例:切换到mysql表
use mysql;
查看数据库下有那些表
show tables;
DDL语句可用于创建数据库对象,如库、表、索引等
创建数据库
create database 数据库名;
示例:创建school数据库
create database school;
创建数据表
create table 表名(字段定义......) ENGINE=InnoDB DEFAULT CHARSET=utf8; //存储引擎innodb 默认字符集utf8
示例:在school数据库内创建student表
#示例1
use school;
create table student(id int,name varchar(11));#示例2
create table school.student(id int,name varchar(11));
查看表结构
describe 表名;
示例:查看student表结构
#示例1
describe school.student;#示例2
use school;
describe student;
克隆表
克隆表结构
create table 克隆表名 like 被克隆的源表;
示例:克隆student表表名为studentbak
create table studentbak like student;
克隆表结构和数据
create table 克隆表名 select * from 被克隆的源表;
create table 克隆表名 as select * from 被克隆的源表;
示例:克隆student表表名为studentbak
#示例1
create table studentbak select * from school.student;#示例2
create table studentbak as select * from school.student;
删除数据表、库
删除指定的数据表
drop table [数据库名.]表名;
示例:删除school数据库的student表
#示例1
drop table school.student;#示例2
use school;
drop table student;
删除数据库
drop database 数据库名;
示例:删除school数据库
drop database school;
数据库操作
增
insert into 表名 values(值1,值2,值3,......); //插入一条数据,数据内容为表中的所有字段
insert into 表名 values(值1,值2,值3,......),(值1,值2,值3,......),(值1,值2,值3,......); //插入多条数据,数据内容为表中的所有字段
insert into 表名(字段1,字段2,字段3,......) values(值1,值2,值3,......); 插入一条数据,数据内容为表中的指定字段
insert into 表名(字段1,字段2,字段3,......) values(值1,值2,值3,......),(值1,值2,值3,......),(值1,值2,值3,......); //插入多条数据,数据内容为表中的指定字段
示例:向student表添加数据
#示例1
insert into school.student values(1,张三);#示例2
insert into school.student values(1,张三,2,李四);#示例3
insert into school.student(id,name) values(1,张三);#示例4
insert into school.student(id,name) values(1,张三,2,李四);
删
delete from 表 where 条件; //删除符合条件的行
delete from 表; //删除所有行,不会清空自增id等数据
示例:删除student表数据
#示例1,删除id等于1的数据
delete from school.student where id=1;#示例2,删除表内所有行
delete from school.student;
清空表
truncate 表名; //清空表,是将表结构原样重新建立
示例:清空student表内所有数据
truncate school.student;
改
update 表名 set 字段=值 where 条件; //更改符合条件的值,set后为更改的值,如果不加条件update会将表内所有行的name值更改为赵五
示例:修改student表内id为2的行内name的值为赵五
update school.student set name='赵五' where id=2;
查
select * from 表名; //查询表的所有数据
select 字段1,字段1,字段3,.... from 表名; //查询表的指定字段
示例:查看student表内数据
#示例1,查询表内所有数据
select * from school.student;#示例2,查询表内指定字段的数据
select id,name from school.student;
临时表
MySQL中的临时表是一种特殊类型的表,它只在创建它的数据库会话期间存在。当会话结束时(例如,当用户退出MySQL或关闭数据库连接时),临时表会自动被删除
create temporary table 表名(字段);
示例:创建一个临时表table_temp
create temporary table table_temp ( id int, name varchar(100),
);
数据库用户授权
设置权限
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY '密码' ];
GRANT CREATE ON *.* TO 'admin'@'localhost' IDENTIFIED BY '123' //设置权限为创建数据库和表 CREATE权限的英文,多个权限一英文逗号分割,可以操作所有数据库和表*代表所有 用户是admin 来源地址表示从哪里登录进来的用户设置权限localhost表示本机 %表示除了本机以外所有地址 192.168.78.% 表示192.168.78网段 192.168.78.3表示192.168.78.3地址 [ ]内的表示设置密码,如果设置权限的用户是一个未创建的用户,一设置权限MySQL会创建他,[ ]就用来是指新组建用户的密码
示例:创建用户并设置全部表的全部权限
grant all on *.* to 'admin'@'localhost' identified by '123456';
查看权限
show grants; //查看当前用户的权限
show grants for '用户名'@'来源地址'; //查看指定用户的权限
#示例1,查看当前用户的权限
show grants;#示例2,查看指定用户的权限
show grants for 'admin'@'localhost';
撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;
示例:撤销admin用户的权限
REVOKE CREATE ON *.* FROM 'admin'@'localhost'; //撤销admin用户的权限
修改密码
SET PASSWORD FOR '用户名'@'localhost'=PASSWORD('新密码'); 5.7.6以前版本
set password=password('新密码');
ALTER USER '用户名'@'用户来源地址' IDENTIFIED BY '新密码'; 5.7.6以后版本
示例:修改用户密码
#示例1,修改当前用户的密码
set password=password('root')#示例2,修改指定用户admin的密码为admin
set password for 'admin'@'localhost'=password('admin');#示例2,5.6版本之后的修改指定用户admin的密码为admin
alter user 'admin'@'localhost' identified by 'admin';
mysqladmin命令更改密码
- 打开终端或命令提示符窗口。
- 使用mysqladmin命令来更改密码。命令格式为:mysqladmin -u用户名 -p旧密码 password 新密码。注意,password前面没有空格。
- 输入命令后,系统会提示你输入旧密码(如果命令中已经包含了旧密码,则不会提示)。输入旧密码后,密码将被更改为新密码。
直接编辑user表(不推荐,除非在无法登录MySQL的情况下)
(仅适用于紧急情况,如忘记root密码):
- 停止MySQL服务。
- 以无权限表认证模式启动MySQL服务(例如,在Linux中,可以使用mysqld_safe --skip-grant-tables &命令)。
- 登录到MySQL服务器(此时不需要密码)。
- 使用UPDATE语句直接修改mysql.user表中的密码字段。注意,从MySQL 5.7.6开始,密码字段的名称可能从password更改为authentication_string。
- 刷新权限。
- 重启MySQL服务,并使用新密码登录。
注意事项
- 在更改密码时,请确保新密码的安全性,避免使用过于简单或容易被猜到的密码。
- 如果你使用的是MySQL的图形界面管理工具(如MySQL Workbench、phpMyAdmin等),通常也可以在这些工具中直接更改密码。具体步骤可能因工具而异,但一般都会有“用户管理”或“用户账户”等选项,允许你编辑用户的密码。
- 在更改密码后,请确保所有需要访问MySQL数据库的应用程序或脚本都已更新为新密码,以避免连接问题。
刷新权限
FLUSH PRIVILEGES
flush privileges;