Perl permite el manejo de Bases de Datos con la ayuda de Perl Scripts. Estos scripts se ejecutan con la ayuda de un módulo conocido como módulo DBI (interfaz independiente de base de datos) . El módulo DBI proporciona una API para interactuar con muchas bases de datos como MySQL, Oracle, etc. Este módulo proporciona un conjunto de variables y métodos que brindan interacción con una interfaz de base de datos y no necesitan acceder a la base de datos original.
Crear una tabla
Para crear una tabla en Perl, primero tenemos que crear una base de datos en SQL. Para hacerlo, ejecutaremos la siguiente declaración en el indicador SQL:
CREATE DATABASE EMP_DB;
Ahora, se creará una base de datos con el nombre EMP_DB . Usaremos esta base de datos para almacenar registros de empleados en nuestra base de datos.
Ahora, nos conectaremos a esta base de datos usando el siguiente comando:
my $dbh = DBI->connect("dbi:$driver:$dsn", $username, $passwd, { AutoCommit => 1 })
Ahora, se establecerá nuestra conexión con la base de datos y usaremos la siguiente declaración para crear una tabla, EMP_DEATAILS, para guardar el registro de los detalles de los empleados.
my $sth = $dbh->prepare(“CREATE TABLE EMP_DETAILS (ID INT PRIMARY KEY, EMP_NAME VARCHAR(50), AGE INT, SALARY INT)”);
$algo->ejecutar();
El programa completo de referencia se proporciona a continuación:
#!/usr/bin/perl -w use strict; use DBI; my $driver = "mysql"; my $dsn = "database=EMP_DB"; my $username = "root"; my $passwd = ""; my $dbh = DBI->connect("dbi:$driver:$dsn", $username, $passwd, { AutoCommit => 1 }) or die "Failed to connect to database : $DBI::errstr"; my $sth = $dbh->prepare("CREATE TABLE EMP_DETAILS ( ID INT PRIMARY KEY, EMP_NAME VARCHAR(50), AGE INT, SALARY INT)"); $sth->execute();
Producción:
Inserción en la base de datos
Ahora que hemos creado la tabla EMP_DETAILS en la base de datos EMP_DB, insertemos algunos valores en la tabla usando las siguientes declaraciones:
#$dbh->do("INSERT INTO EMP_DETAILS (ID, EMP_NAME, AGE, SALARY) VALUES (71, 'CHINMAY', 23, 10000)") or die "Failed to insert : $DBI::errstr"; #$dbh->do("INSERT INTO EMP_DETAILS (ID, EMP_NAME, AGE, SALARY) VALUES (73, 'SANSKRUTI', 23, 15000)") or die "Failed to insert : $DBI::errstr"; $dbh->do("INSERT INTO EMP_DETAILS (ID, EMP_NAME, AGE, SALARY) VALUES (150, 'DEREK', 37, 20000)") or die "Failed to insert : $DBI::errstr"; $dbh->do("INSERT INTO EMP_DETAILS (ID, EMP_NAME, AGE, SALARY) VALUES (200, 'ROSS', 30, 24250)") or die "Failed to insert : $DBI::errstr";
Producción:
Inserción de valores de enlace
Considere el programa dado a continuación. En el programa, hemos utilizado signos de interrogación (?) en algunos lugares. Estos signos de interrogación se conocen como marcadores de posición . Mediante el uso de marcadores de posición, el controlador de la base de datos puede preprocesar la consulta antes de ejecutarla en el símbolo del sistema SQL. Este proceso se conoce como enlace de datos . El enlace nos ayuda a aumentar la seguridad del código, lo que ayuda a prevenir ataques de inyección SQL.
#!/usr/bin/perl -w use strict; use DBI; my $driver = "mysql"; my $dsn = "database=EMP_DB"; my $username = "root"; my $passwd = ""; my $dbh = DBI->connect("dbi:$driver:$dsn", $username, $passwd, { AutoCommit => 1 }) or die "Failed to connect to database : $DBI::errstr"; # Inserting Bind Values print "Enter Employee ID - "; my $id = <>; chomp($id); print "Enter Employee Name - "; my $name = <>; chomp($name); print "Enter Employee Age - "; my $age = <>; chomp($age); print "Enter Employee Salary - "; my $salary = <>; chomp($salary); my $sth = $dbh->prepare("INSERT INTO EMP_DETAILS ( ID, EMP_NAME, AGE, SALARY) VALUES (?, ?, ?, ?)"); $sth->execute($id, $name, $age, $salary) or die "Failed to insert : $DBI::errstr";
Producción:
Lectura de valores de la base de datos
Nuestra base de datos ahora está poblada con algunos valores. Ahora tenemos que volver a leerlos al usuario. Para hacerlo, usaremos el bucle while para volver a leer los datos al usuario.
#!/usr/bin/perl -w use strict; use DBI; my $driver = "mysql"; my $dsn = "database=EMP_DB"; my $username = "root"; my $passwd = ""; my $dbh = DBI->connect("dbi:$driver:$dsn", $username, $passwd, { AutoCommit => 1 }) or die "Failed to connect to database : $DBI::errstr"; my $sth = $dbh->prepare("SELECT EMP_NAME, ID FROM EMP_DETAILS WHERE ID<100"); $sth->execute() or die "Failed to select rows : $DBI::errstr"; my $rows = $sth->rows; print "Number of rows updated : $rows \n"; while (my @emp_data = $sth->fetchrow_array()) { my ($name, $id ) = @emp_data; print "Employee Name = $name, Employee ID = $id \n"; } $sth->finish();
Producción:
Actualización de los valores de la base de datos
Para actualizar cualquier valor de la tabla, podemos usar el comando SQL UPDATE de la siguiente manera:
#!/usr/bin/perl -w use strict; use DBI; my $driver = "mysql"; my $dsn = "database=EMP_DB"; my $username = "root"; my $passwd = ""; my $dbh = DBI->connect("dbi:$driver:$dsn", $username, $passwd, { AutoCommit => 1 }) or die "Failed to connect to database : $DBI::errstr"; $dbh->do("UPDATE EMP_DETAILS SET ID=250 WHERE ID=150") or die "Failed to update : $DBI::errstr";
Producción:
Tabla original:
Tabla después de la actualización de datos:
Eliminación de valores de la base de datos
Para eliminar una fila en particular de la tabla, podemos usar la instrucción SQL DELETE de la siguiente manera:
#!/usr/bin/perl -w use strict; use DBI; my $driver = "mysql"; my $dsn = "database=EMP_DB"; my $username = "root"; my $passwd = ""; my $dbh = DBI->connect("dbi:$driver:$dsn", $username, $passwd, { AutoCommit => 1 }) or die "Failed to connect to database : $DBI::errstr"; $dbh->do("DELETE FROM EMP_DETAILS WHERE ID=250") or die "Failed to delete : $DBI::errstr"; $dbh->do("DELETE FROM EMP_DETAILS WHERE EMP_NAME='ROSS'") or die "Failed to delete : $DBI::errstr";
Producción:
Publicación traducida automáticamente
Artículo escrito por chinmay_bhide y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA