Operación avanzada de la base de datos MySQL (imagen y texto detallados)

Operaciones avanzadas de la tabla de datos

Preparación: instalar la base de datos MySQL

Shell script código fuente de implementación con un clic compile e instale MySQL

create database CLASS;
use CLASS;

create table TEST (id int not null,name char(20) 	not null,cardid varchar(18) not null unique 	key,primary key (id));

insert into TEST(id,name,cardid) values (1,'zhangsan','123123');

insert into TEST(id,name,cardid) values (2,'lisi','1231231');

insert into TEST(id,name,cardid) values (3,'wangwu','12312312');
select * from TEST;

Inserte la descripción de la imagen aquí


Uno, tabla de clonación

Genere los registros de datos de la tabla de datos en una nueva tabla

método uno

例:create table TEST01 like TEST;
select * from TEST01;

desc TEST01;
insert into TEST01 select * from TEST;
select * from TEST01;

Inserte la descripción de la imagen aquí

Método dos

例:create table TEST02 (select * from TEST);
select * from TEST02;

Inserte la descripción de la imagen aquí

2. Vacíe la tabla y elimine todos los datos de la tabla.

método uno

delete from TEST02;

#DELETE Después de vaciar la tabla, hay entradas de registro eliminadas en el resultado devuelto; DELETE funciona eliminando los datos del registro línea por línea; si hay campos de crecimiento propio en la tabla, use DELETE FROM para eliminar todos los registros, y el recién agregado Los registros continuarán aumentando y escribiendo registros después del ID de registro más grande original

Inserte la descripción de la imagen aquí

例:create table if not exists TEST03 (id int primary 	key auto_increment,name varchar(20) not null,cardid varchar(18) not null unique key);
show tables;

insert into TEST03 (name,cardid) values ('zhangsan','11111');		
select * from TEST03;
delete from TEST03;

insert into TEST03 (name,cardid) values ('lisi','22222');
select * from TEST03;

Inserte la descripción de la imagen aquí

Método dos

例:select * from TEST03;
truncate table TEST03;
insert into TEST03 (name,cardid) values ('wangwu','33333');
select * from TEST03;

#TRUNCATE Después de borrar la tabla, no se devuelven entradas eliminadas; cuando TRUNCATE funciona, la estructura de la tabla se reconstruye tal como está, por lo que en términos de velocidad, TRUNCATE será más rápido que DELETE para borrar la tabla; después de usar TRUNCATE TABLE para borrar la datos en la tabla, el ID cambiará de 1. Inicie la grabación nuevamente.

Inserte la descripción de la imagen aquí


Tres, crea una mesa temporal

Una vez que la tabla temporal se ha creado correctamente, la tabla temporal creada no se puede ver con el comando SHOW TABLES. La tabla temporal se destruirá después de que salga la conexión. Antes de salir de la conexión, también puede realizar operaciones como agregar, eliminar, modificar y verificar, como usar la instrucción DROP TABLE para eliminar manualmente directamente la tabla temporal.

CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);

例:create temporary table TEST04 (id int not null,name varchar(20) not null,cardid varchar(18) not null unique key,primary key (id));
show tables;

insert into TEST04 values (1,'haha','12345');	
select * from TEST04;

Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

Cuatro, crear restricciones de clave externa

Asegurar la integridad y consistencia
de los datos. La definición de una clave externa: Si el mismo campo de atributo x es la clave primaria en la Tabla 1, pero no es la clave primaria en la Tabla 2, entonces el campo x se llama la clave externa de Tabla 2.

Comprensión de las tablas de claves primarias y las tablas de claves externas:
1. Las tablas con palabras clave comunes como claves primarias son tablas de claves primarias (tabla principal, tabla primaria)
2. Las tablas con palabras clave comunes como claves externas son tablas de claves externas (de tabla, tabla externa)

Nota: Los campos de la tabla principal asociados con la clave externa deben configurarse como clave principal y la tabla secundaria no puede ser una tabla temporal. Los campos de las tablas principal y secundaria tienen el mismo tipo de datos, longitud de caracteres y restricciones

例:create table TEST04 (hobid int(4),hobname varchar(50));
create table TEST05 (id int(4) primary key auto_increment,name varchar(50),age int(4),hobid int(4));

alter table TEST04 add constraint PK_hobid primary key(hobid);
alter table TEST05 add constraint FK_hobid foreign key(hobid) references TEST04(hobid);

Inserte la descripción de la imagen aquí

例:添加数据记录
insert into TEST05 values (1,'zhangsan','20',1);
insert into TEST04 values (1,'sleep');
insert into TEST05 values (1,'zhangsan',20,1);

Inserte la descripción de la imagen aquí

例:drop table TEST04;
drop table TEST05;
drop table TEST04;

Inserte la descripción de la imagen aquí
Nota: Si desea eliminar un campo de restricción de clave externa
, elimine primero la restricción de clave externa y luego elimine el nombre de la clave externa, que no se muestra aquí.

show create table TEST05;
alter table TEST05 drop foreign key FK_hobid;
alter table TEST05 drop key FK_hobid;
desc TEST05;

6 restricciones comunes en MySQL

Restricción de clave primaria Clave primaria
Restricción de clave externa clave externa
Restricción no vacía no nulo
Restricción única llave unica
Restricciones de valor predeterminado defecto
Restricción de auto-aumento autoincremento

Cinco, gestión de usuarios de bases de datos

1. Crea un nuevo usuario

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

'Nombre de usuario': especifique el nombre de usuario que se creará

'Dirección de origen': especifique el host en el que el usuario recién creado puede iniciar sesión. Puede usar la forma de dirección IP, segmento de red y nombre de host. Los usuarios locales pueden usar localhost y cualquier host puede iniciar sesión con el comodín%

'Contraseña': Si usa una contraseña de texto sin formato, ingrese directamente la 'contraseña', Mysql la encriptará automáticamente cuando la inserte en la base de datos;
------ Si usa una contraseña encriptada, necesita usar SELECT PASSWORD ('contraseña'); para obtener el texto cifrado, luego agregue PASSWORD 'texto cifrado' en la declaración;
------ Si se omite la parte "IDENTIFICADO POR", la contraseña del usuario estará vacía (no recomendado)

例:create user 'zhangsan'@'localhost' identified by '123123';
select password('123123');
create user 'lisi'@'localhost' identified by password '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1';

Inserte la descripción de la imagen aquí


2. Ver información del usuario

El usuario creado se guarda en la tabla de usuarios de la base de datos mysql

USE mysql;
SELECT User,authentication_string,Host from user;

Inserte la descripción de la imagen aquí

3. Cambiar el nombre del usuario

RENAME USER 'zhangsan'@'localhost' TO 'wangwu'@'localhost';
SELECT User,authentication_string,Host from user;

Inserte la descripción de la imagen aquí

4. Eliminar usuarios

DROP USER 'lisi'@'localhost';
SELECT User,authentication_string,Host from user;

Inserte la descripción de la imagen aquí

5. Modifique la contraseña del usuario actualmente conectado

SET PASSWORD = PASSWORD('abc123');
quit
mysql -u root -p

Inserte la descripción de la imagen aquí

6. Modificar las contraseñas de otros usuarios

SET PASSWORD FOR 'wangwu'@'localhost' = PASSWORD('abc123');
use mysql;
SELECT User,authentication_string,Host from user;

7. La solución para olvidar la contraseña de root

1, Modifique el archivo de configuración /etc/my.cnf, inicie sesión en mysql directamente sin usar una contraseña

vim /etc/my.cnf
[mysqld]
skip-grant-tables					#添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql								#直接登录

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2, Utilice la actualización para modificar la contraseña de root y actualizar la base de datos

UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('112233') where user='root';
FLUSH PRIVILEGES;
quit

再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除,并重启 mysql 服务。
mysql -u root -p
112233

Inserte la descripción de la imagen aquí

Seis, autorización del usuario de la base de datos

1. Otorgar permisos

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”。*例如,使用“kgc.*”表示授权操作的对象为 kgc数据库中的所有表。

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.lic.com”、“192.168.184.%”等。

#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分, 则用户的密码将为空。

#Permitir al usuario wangwu consultar los registros de datos de todas las tablas en la base de datos CLASS localmente, pero prohibir consultar los registros de tablas en otras bases de datos.

例:
GRANT select ON CLASS.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456';
quit;
mysql -u wangwu -p
123456
show databases;
use information_schema;
show tables;
select * from INNODB_SYS_TABLESTATS;

#Permitir al usuario wangwu conectarse a mysql de forma local y remota y tener todos los permisos.

quit;
mysql -u root -p112233
GRANT ALL PRIVILEGES ON *.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456';

flush privileges;
quit

mysql -u wangwu -p123456
create database SCHOOL;

2. Ver permisos

SHOW GRANTS FOR 用户名@来源地址;

例:
SHOW GRANTS FOR 'wangwu'@'localhost';

3. Revocación de autoridad

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;

例:quit;
mysql -u root -p112233
SHOW GRANTS FOR 'wangwu'@'localhost';
REVOKE SELECT ON "CLASS".* FROM 'wangwu'@'localhost';

SHOW GRANTS FOR 'wangwu'@'localhost';

El permiso #USAGE solo se puede usar para iniciar sesión en la base de datos y no puede realizar ninguna operación; el permiso USAGE no se puede reciclar, es decir, REVOKE no puede eliminar usuarios.

flush privileges;

Supongo que te gusta

Origin blog.csdn.net/weixin_51432770/article/details/113154390
Recomendado
Clasificación