My SQL Mauro Csar Lopes Introduo 1132020 2

  • Slides: 100
Download presentation
My. SQL Mauro César Lopes

My. SQL Mauro César Lopes

Introdução 11/3/2020 2

Introdução 11/3/2020 2

Bancos de Dados - Exemplos n n n My. SQL Postgre. SQL Oracle SQLServer

Bancos de Dados - Exemplos n n n My. SQL Postgre. SQL Oracle SQLServer (Microsoft) DB 2 (IBM) 11/3/2020 3

Tipos de Campos n n n Numéricos Binários Strings Data e Hora Geométricos 11/3/2020

Tipos de Campos n n n Numéricos Binários Strings Data e Hora Geométricos 11/3/2020 4

Campos Numéricos Podem apresentar as seguintes características: n n n 11/3/2020 UNSIGNED ZEROFILL AUTO_INCREMENT

Campos Numéricos Podem apresentar as seguintes características: n n n 11/3/2020 UNSIGNED ZEROFILL AUTO_INCREMENT 5

Campos Numéricos (2) n n n n TINYINT[(M)] SMALLINT [(M)] MEDIUMINTINT [(M)] BIGINT [(M)]

Campos Numéricos (2) n n n n TINYINT[(M)] SMALLINT [(M)] MEDIUMINTINT [(M)] BIGINT [(M)] FLOAT [(M, D)] DOUBLE [(M, D)] DECIMAL [(M[, D])] 11/3/2020 6

Campos Binários Armazenam tipos de dados conhecidos como binários. n BIT n TYNYBLOB n

Campos Binários Armazenam tipos de dados conhecidos como binários. n BIT n TYNYBLOB n BLOB (Binary Large OBject) n MEDIUMBLOB n LONGBLOB 11/3/2020 7

Campos String n n n n CHAR(M) – strings de tamanho fixo VARCHAR(M) –

Campos String n n n n CHAR(M) – strings de tamanho fixo VARCHAR(M) – strings de tamanho variável TINYTEXT MEDIUMTEXT ENUM - enumeração SET - conjunto 11/3/2020 8

Data e Hora n n n DATE (3 bytes) suporte a ano, mês, dia

Data e Hora n n n DATE (3 bytes) suporte a ano, mês, dia TIME (3 bytes) valor hora do dia DATETIME (8 bytes) YEAR (1 byte) – dois ou quatro dígitos TIMESTAMP (4 bytes) – formato customizável armazena um valor combinado de DATE e TIME 11/3/2020 9

Geométricos n n n POINT LINESTRING POLYGON MULTIPOINT MULTILINESTRING MULTIPOLYGON 11/3/2020 10

Geométricos n n n POINT LINESTRING POLYGON MULTIPOINT MULTILINESTRING MULTIPOLYGON 11/3/2020 10

Operadores Aritméticos n n soma subtração multiplicação divisão 11/3/2020 11

Operadores Aritméticos n n soma subtração multiplicação divisão 11/3/2020 11

Operadores Lógicos n n n and or not 11/3/2020 12

Operadores Lógicos n n n and or not 11/3/2020 12

Operadores de comparação n n n < = > <= >= <> 11/3/2020 13

Operadores de comparação n n n < = > <= >= <> 11/3/2020 13

Outros operadores n n n n like between in exists all any some 11/3/2020

Outros operadores n n n n like between in exists all any some 11/3/2020 14

Funções de Agregação n n n count() min () max () avg () sum

Funções de Agregação n n n count() min () max () avg () sum () 11/3/2020 15

Iniciando o My. SQL em ambiente Linux n n /etc/init. d/mysql start /etc/init. d/mysql

Iniciando o My. SQL em ambiente Linux n n /etc/init. d/mysql start /etc/init. d/mysql stop 11/3/2020 16

Arquivo de Configuração (ambiente Linux) n /etc/mysql/my. cnf arquivo de configuração do My. SQL

Arquivo de Configuração (ambiente Linux) n /etc/mysql/my. cnf arquivo de configuração do My. SQL 11/3/2020 17

Arquivos de Configuração (2) n n n /usr/share/doc/My. SQL-servercommunity-5. 0. 51 a/my-huge. cnf /usr/share/doc/My.

Arquivos de Configuração (2) n n n /usr/share/doc/My. SQL-servercommunity-5. 0. 51 a/my-huge. cnf /usr/share/doc/My. SQL-servercommunity-5. 0. 51 a/my-large. cnf /usr/share/doc/My. SQL-servercommunity-5. 0. 51 a/my-medium. cnf 11/3/2020 18

Arquivos de Configuração (3) n n /usr/share/doc/My. SQL-servercommunity-5. 0. 51 a/my-small. cnf /usr/share/doc/My. SQL-servercommunity-5.

Arquivos de Configuração (3) n n /usr/share/doc/My. SQL-servercommunity-5. 0. 51 a/my-small. cnf /usr/share/doc/My. SQL-servercommunity-5. 0. 51 a/my-innodb-heavy 4 G. cnf 11/3/2020 19

Verificando se o My. SQL está em execução root@ubuntu-server: /etc/apache 2# ps auxw |

Verificando se o My. SQL está em execução root@ubuntu-server: /etc/apache 2# ps auxw | grep mysqld root 3652 0. 0 0. 2 1716 528 ? S 19: 44 0: 00 /bin/sh /usr/bin/mysqld_safe mysql 3714 0. 0 6. 4 126744 16624 ? Sl 19: 44 0: 00 /usr/sbin/mysqld --basedir=/usr -datadir=/var/lib/mysql --user=mysql --pidfile=/var/run/mysqld. pid --skip-external -locking --port=3306 -socket=/var/run/mysqld. sock root 3716 0. 0 0. 2 1640 532 ? S 19: 44 0: 00 logger -p daemon. err -t mysqld_safe -i -t mysqld 11/3/2020 20

Comandos básicos do My. SQL Solicita o password. Usa usuário corrente $ mysql –p

Comandos básicos do My. SQL Solicita o password. Usa usuário corrente $ mysql –p mysql> create database <database>; mysql> use <database>; mysql> show fields from <tabela>; mysql> status; mysql> connect; 11/3/2020 21

Comandos básicos do My. SQL (2) n n show databases; # exibe todos os

Comandos básicos do My. SQL (2) n n show databases; # exibe todos os databases existentes use <database>; # usa um database específico show tables; # exibe todas as tabelas no database corrente desc <table>; # exibe a estrutura de uma tabela 11/3/2020 22

Comando mysqladmin – cliente para administração do servidor My. SQL n Uso: mysqladmin [OPTIONS]

Comando mysqladmin – cliente para administração do servidor My. SQL n Uso: mysqladmin [OPTIONS] command. . n Para maiores informações, digite: $ man mysqladmin n 11/3/2020 23

Exemplos de uso – comando mysqladmin n n mysqladmin –u <user> <password> cria um

Exemplos de uso – comando mysqladmin n n mysqladmin –u <user> <password> cria um usuário no My. SQL $ mysqladmin -u root ping $ mysqladmin -u root processlist $ mysqladmin -u root status $ mysqladmin -u root 11/3/2020 24

Logando com um usuário específico n n $ mysql –u root –p $ mysql-admin

Logando com um usuário específico n n $ mysql –u root –p $ mysql-admin & 11/3/2020 25

Exemplos mysql>select current_date, version(), user(), now(); mysql> select current_date, version(), user(), now(); +-------+----------------+-----------+ |

Exemplos mysql>select current_date, version(), user(), now(); mysql> select current_date, version(), user(), now(); +-------+----------------+-----------+ | current_date | version() | user() | now() | +-------+----------------+-----------+ | 2008 -02 -21 | 4. 1. 20 | root@localhost | 2008 -02 -21 10: 57: 05 | +-------+----------------+-----------+ 1 row in set (0. 00 sec) 11/3/2020 26

Criação de Database n n n mysql> mysql> 11/3/2020 create database test; show databases;

Criação de Database n n n mysql> mysql> 11/3/2020 create database test; show databases; use database magagerie show tables for <database>; drop database <database>; 27

Criação de Tabelas create [temporary] table <nome> (<colunas) [<opções avançadas>]; Formato das colunas: n

Criação de Tabelas create [temporary] table <nome> (<colunas) [<opções avançadas>]; Formato das colunas: n <nome coluna> <tipo de dado> [NULL| NOT NULL] [default <valor>] [auto_increment] [primary key | index] n 11/3/2020 28

Criação de Tabelas create table noticias ( id int(5) not null auto_increment, nome char(30)

Criação de Tabelas create table noticias ( id int(5) not null auto_increment, nome char(30) not null, sobrenome char(30) not null, cidade char(5) not null, estado char(2) not null, email char(80), data date not null. hora time not null. subtitulo char(200), texto text not null, ver char(3) default 'off', primary key (id), unique (id) ); 11/3/2020 29

Métodos de funcionamento e armazenamento n n n n n My. ISAM não suporta

Métodos de funcionamento e armazenamento n n n n n My. ISAM não suporta transações Inno. DB MERGE Memory (HEAP) Berkeley. DB (BDB) EXAMPLE ARCHIVE CSV BLACKHOLE 11/3/2020 30

Diferenças entre My. ISAM e Inno. DB My. ISAM Inno. DB Suporte a índices

Diferenças entre My. ISAM e Inno. DB My. ISAM Inno. DB Suporte a índices Sim Suporte a transações Não SIM (ACID) Nenhum Tabela Linha Nome de uso Tipos de dados não suportados Nível de bloqueio 11/3/2020 31

Exemplos show tables; exibe todas as tabelas do database corrente Duas forma de chamar

Exemplos show tables; exibe todas as tabelas do database corrente Duas forma de chamar o comando describe: n describe <nome da tabela>; n desc <nome da tabela>; n 11/3/2020 32

Índices n Create [<tipo de índice>] index <nome do indice> on <nome da tabela>(<colunas>);

Índices n Create [<tipo de índice>] index <nome do indice> on <nome da tabela>(<colunas>); Três tipos de índices: n UNIQUE n FULLTEXT n SPATIAL 11/3/2020 33

Visões (Views) n n n create view <nome> as <expressão SQL>; alter view <nome>

Visões (Views) n n n create view <nome> as <expressão SQL>; alter view <nome> as <expressão SQL>; drop view <nome>; 11/3/2020 34

Segurança e Direitos de Acesso 11/3/2020 35

Segurança e Direitos de Acesso 11/3/2020 35

Criação/Remoção de Usuários n n create user <usuario> [identified by password(‘<senha>’)]; drop user <usuario>[@<dominio>];

Criação/Remoção de Usuários n n create user <usuario> [identified by password(‘<senha>’)]; drop user <usuario>[@<dominio>]; 11/3/2020 36

Definindo nova senha set password for ‘<usuario>’ = password(‘<senha>’); n SET PASSWORD = PASSWORD(‘<senha>’);

Definindo nova senha set password for ‘<usuario>’ = password(‘<senha>’); n SET PASSWORD = PASSWORD(‘<senha>’); altera a senha do usuário corrente. OBS: OBS para remover a senha do usuários root digite o comando: SET PASSWORD = PASSWORD(‘’); n 11/3/2020 37

Observação Observe que após a criação de um novo usuário é necessário adicionar permissões

Observação Observe que após a criação de um novo usuário é necessário adicionar permissões aos novos usuários n grant all on *. * to <usuario>’@’<dominio> identified by ‘<senha>’; OBS: é necessário criar “permissões” para os domínios ‘localhost’ e ‘%’. n 11/3/2020 38

Observação n Após criar, alterar ou excluir um acesso manualmente utilizando expressões SQL, é

Observação n Após criar, alterar ou excluir um acesso manualmente utilizando expressões SQL, é necessário executar o comando FLUSH PRIVILEGES para que o My. SQL atualize suas informações imediatamente. 11/3/2020 39

Exemplo n n n grant all on *. * to 'maurocl'@'localhost' identified by ‘maurocl-pwd';

Exemplo n n n grant all on *. * to 'maurocl'@'localhost' identified by ‘maurocl-pwd'; grant all on *. * to 'maurocl'@‘%' identified by ‘maurocl-pwd'; grant all on persondb. * to ‘persondb’ identified by ‘abcdefg’; 11/3/2020 40

Tipos de Privilégios n n n n alter permite alterar a estrutura das tabelas

Tipos de Privilégios n n n n alter permite alterar a estrutura das tabelas select permite realizar consultas SQL insert update delete index permite o gerenciamento de índices create permite criar bancos de dados e tabelas drop 11/3/2020 41

Exibindo privilégios n n n show grants for ‘root’@’localhost’; show grants for maurocl@localhost; show

Exibindo privilégios n n n show grants for ‘root’@’localhost’; show grants for maurocl@localhost; show grants for maurocl@'%'; 11/3/2020 42

Alterando as permissões de acesso de um usuário n grant <privilegio> [(colunas)] on <banco>.

Alterando as permissões de acesso de um usuário n grant <privilegio> [(colunas)] on <banco>. <tabela> to ‘<usuario>’@’<dominio>’ identified by ‘<senha>’ with grant option; 11/3/2020 43

Sintaxe do comando GRANT n GRANT priv_type [(column_list)] [, priv_type [(column_list)]]. . . ON

Sintaxe do comando GRANT n GRANT priv_type [(column_list)] [, priv_type [(column_list)]]. . . ON [object_type] {tbl_name | *. * | db_name. *} TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']]. . . [REQUIRE NONE | [{SSL| X 509}] [CIPHER 'cipher' [AND]] [ISSUER 'issuer' [AND]] [SUBJECT 'subject']] [WITH with_option [with_option]. . . ] object_type = TABLE | FUNCTION | PROCEDURE with_option = GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count 11/3/2020 44

Comando para criação de um usuário GRANT select, insert, update, delete, index, alter, create,

Comando para criação de um usuário GRANT select, insert, update, delete, index, alter, create, drop on <tabela>. * to <user> identified by ‘<password>‘ with grant option; 11/3/2020 45

Executando um comando a partir de um arquivo externo mysql –h <hostname> –D <database>

Executando um comando a partir de um arquivo externo mysql –h <hostname> –D <database> u <user> -p < arquivo. sql Conecta-se ao banco de dados <database> localizado no <hostname> usando usuário <user> e executa o comando SQL presente em <arquivo. sql> Obs: quando desejarmos fornecer o password é necessário que não exista nenhum espaço entre o parâmetro –p e a password. Por exemplo, p<password> 11/3/2020 46

Extensões PHP para acessar o My. SQL n n My. SQL para versões anteriores

Extensões PHP para acessar o My. SQL n n My. SQL para versões anteriores a versão 4. 1 do My. SQLi (Improved My. SQL) para versão 4. 1 ou posterior 11/3/2020 47

Transações n Uma transação pode ser caracterizada pelo conjunto de operações que devem ser

Transações n Uma transação pode ser caracterizada pelo conjunto de operações que devem ser executadas havendo atomicidade, ou seja, todas as operações são realizadas ou nenhuma é realizada. 11/3/2020 48

Transações n n n START TRANSACTION (BEGIN, BEGIN WORK) SAVEPOINT <nome>; ROLLBACK TO SAVEPOINT

Transações n n n START TRANSACTION (BEGIN, BEGIN WORK) SAVEPOINT <nome>; ROLLBACK TO SAVEPOINT <nome>; COMMIT; 11/3/2020 49

Transações n n Inno. DB – suporta transações -- suporta nível de bloqueio (LOCK/UNLOCK)

Transações n n Inno. DB – suporta transações -- suporta nível de bloqueio (LOCK/UNLOCK) por tabela My. ISAM – default no My. SQL – suporta nível de bloqueio (LOCK/UNLOCK) por tabela 11/3/2020 50

Transações mysql> LOCK TABLES <nome da tabela> [ AS <alias> ] <tipo de bloqueio>

Transações mysql> LOCK TABLES <nome da tabela> [ AS <alias> ] <tipo de bloqueio> [ , <nome da tabela 2>, . . . ] 11/3/2020 51

Tipos de Bloqueio n n READ (bloqueio de leitura) READ LOCAL WRITE (bloqueio de

Tipos de Bloqueio n n READ (bloqueio de leitura) READ LOCAL WRITE (bloqueio de escrita) LOW_PRIORITY WRITES 11/3/2020 52

Tipos de Bloqueio - READ n tanto a thread em questão quanto as demais

Tipos de Bloqueio - READ n tanto a thread em questão quanto as demais podem somente ter acesso de leitura na tabela 11/3/2020 53

Tipos de Bloqueio – READ LOCAL n realiza o mesmo bloqueio definido pelo modo

Tipos de Bloqueio – READ LOCAL n realiza o mesmo bloqueio definido pelo modo READ, contudo permite que comandos de inserção não conflitantes sejam executados IMPORTANTE: para tabelas Inno. DB, o comportamento READ LOCAL é o mesmo que READ 11/3/2020 54

Tipos de Bloqueio - WRITE n permite que a thread atual possa ler, inserir

Tipos de Bloqueio - WRITE n permite que a thread atual possa ler, inserir ou alterar dados da tabela e impede acesso de escrita e leitura de outras threads até o processo terminar. 11/3/2020 55

Tipos de Bloqueio – LOW_PRIORITY WRITE n permite a leitura, inserção e alteração de

Tipos de Bloqueio – LOW_PRIORITY WRITE n permite a leitura, inserção e alteração de dados pela thread atual e também que outras threads solicitem bloqueio de leitura 11/3/2020 56

Desbloqueio de tabelas mysql> UNLOCK TABLES; mysql> FLUSH TABLES; 11/3/2020 57

Desbloqueio de tabelas mysql> UNLOCK TABLES; mysql> FLUSH TABLES; 11/3/2020 57

Grau de isolamento de Transações n set [session|global] transaction isolation level read uncommited |

Grau de isolamento de Transações n set [session|global] transaction isolation level read uncommited | read commited | repeatable read | serializable 11/3/2020 58

Graus de isolamento (isolation degrees) n n READ UNCOMMITED READ COMMITED REPEATABLE COMMITED SERIALIZABLE

Graus de isolamento (isolation degrees) n n READ UNCOMMITED READ COMMITED REPEATABLE COMMITED SERIALIZABLE 11/3/2020 59

Transações XA n XA Transactions (transação global ou distribuída) 11/3/2020 60

Transações XA n XA Transactions (transação global ou distribuída) 11/3/2020 60

Papéis em XA Transactions n n Resource Manager (RM): servidores usados na transação Transaction

Papéis em XA Transactions n n Resource Manager (RM): servidores usados na transação Transaction Manager (TM) : servidor que gerencia todo o procedimento da transação distribuída 11/3/2020 61

Two-phase commit (2 pc) n n Two-phase commit Único commit como ocorre em transações

Two-phase commit (2 pc) n n Two-phase commit Único commit como ocorre em transações normais (isoladas) 11/3/2020 62

Comandos das XA Transactions n n n XA XA XA 11/3/2020 START <xa id>

Comandos das XA Transactions n n n XA XA XA 11/3/2020 START <xa id> END <xa id> PREPARE <xa id> COMMIT <xa id> [ONE PHASE] ROLLBACK <xa id> RECOVER 63

Sites n n My. SQL Brasil http: //www. mysqlbrasil. com. br Php. My. Admin

Sites n n My. SQL Brasil http: //www. mysqlbrasil. com. br Php. My. Admin http: //www. phpmyadmin. net 11/3/2020 64

Bibliografia n MILANI, A. My. SQL – Guia do Programador. São Paulo. Ed Novatec.

Bibliografia n MILANI, A. My. SQL – Guia do Programador. São Paulo. Ed Novatec. 2006. 11/3/2020 65

mysqldump n mysqldump --no-data  infradb, masterdb, salesforce, userdb, utild b -u ribbit -p.

mysqldump n mysqldump --no-data infradb, masterdb, salesforce, userdb, utild b -u ribbit -p. Fr 00 g 3 r --host 10. 100. 241. 22 >pqp 3. sql 11/3/2020 66

mysqldump (2) mysqldump --no-data  infradb  -u ribbit -p. Fr 00 g 3

mysqldump (2) mysqldump --no-data infradb -u ribbit -p. Fr 00 g 3 r --host 10. 100. 241. 22 >pqp 3. sql n 11/3/2020 67

Apêndice A – Conceitos Gerais 11/3/2020 68

Apêndice A – Conceitos Gerais 11/3/2020 68

Dados e Informações n n Dados podem ser definidos com um conjunto de bits

Dados e Informações n n Dados podem ser definidos com um conjunto de bits (ou de caracteres em uma macrovisão) para o armazenamento de caracteres e textos no formato alfanumérico, ou até mesmo de arquivos e imagens Informação é a agregação de um determinado conhecimento a um dado 11/3/2020 69

Dados e Informações dado + informação = conhecimento 11/3/2020 70

Dados e Informações dado + informação = conhecimento 11/3/2020 70

Banco de Dados n n manuais e automatizados relacionais 11/3/2020 71

Banco de Dados n n manuais e automatizados relacionais 11/3/2020 71

Bancos de dados relacionais 11/3/2020 72

Bancos de dados relacionais 11/3/2020 72

Arquitetura de um banco de dados n n n tabelas registros campos chaves índices

Arquitetura de um banco de dados n n n tabelas registros campos chaves índices relacionamentos 11/3/2020 73

Tabelas n n cada coluna será um campo cada linha será um registro 11/3/2020

Tabelas n n cada coluna será um campo cada linha será um registro 11/3/2020 74

Chaves (keys) n Refere-se a coluna da tabela que é responsável pela identificação dos

Chaves (keys) n Refere-se a coluna da tabela que é responsável pela identificação dos registros 11/3/2020 75

Tipos de chaves (keys) n n n Chave primária (primary key (PK)) Chave primária

Tipos de chaves (keys) n n n Chave primária (primary key (PK)) Chave primária composta (composed primary key) Chave estrangeira (foreign key (FK)) 11/3/2020 76

Relacionamentos 11/3/2020 77

Relacionamentos 11/3/2020 77

Tipos de relacionamentos n n n 1 para 1 (1: 1) 1 para N

Tipos de relacionamentos n n n 1 para 1 (1: 1) 1 para N (1: N) N para M (N: M) (muitos para muitos) 11/3/2020 78

O que é um SGBD n n n n gerenciamento de acesso integridade de

O que é um SGBD n n n n gerenciamento de acesso integridade de dados integridade de entidade referencial concorrência de acesso linguagens de dados funcionalidades gerais banco de dados do tipo arquivo X SGBD 11/3/2020 79

Sistema Gerenciador de Banco de Dados (SGBD) n DBMS – Database Management System 11/3/2020

Sistema Gerenciador de Banco de Dados (SGBD) n DBMS – Database Management System 11/3/2020 80

Gerenciamento de acesso 11/3/2020 81

Gerenciamento de acesso 11/3/2020 81

Linguagens de dados n n SQL (Structured Query Language) DDL (Data Definition Language) DML

Linguagens de dados n n SQL (Structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) DCL (Data Control Language) 11/3/2020 82

Funcionalidades gerais n n n Visões Transações Triggers (gatilhos) 11/3/2020 83

Funcionalidades gerais n n n Visões Transações Triggers (gatilhos) 11/3/2020 83

Normalização de Banco de Dados Anomalias são problemas gerados pelo mau planejamento de um

Normalização de Banco de Dados Anomalias são problemas gerados pelo mau planejamento de um banco de dados Tipos de Anomalias: n Anomalias de inserção n Anomalias de alteração n Anomalias de exclusão 11/3/2020 84

Normalização de Banco de Dados n n n Primeira forma normal (1 FN) Segunda

Normalização de Banco de Dados n n n Primeira forma normal (1 FN) Segunda forma normal (2 FN) Terceira forma normal (3 FN) 11/3/2020 85

Primeira Formal (1 FN) n n n Traduz os dados de um sistema qualquer

Primeira Formal (1 FN) n n n Traduz os dados de um sistema qualquer para tabelas cada célula deve possuir apenas um valor cada coluna deve armazenar registros únicos (exceto quando referenciando valores-chaves de outras tabelas) 11/3/2020 86

Segunda Forma Normal (2 FN) n n 1 FN 2 FN Atributos não chave

Segunda Forma Normal (2 FN) n n 1 FN 2 FN Atributos não chave da tabela deverá depender exclusivamente de todas as chaves da tabela (busca não haver relação de um campo não chave com apenas parte da chave primária composta (cada campo não-chave deve ser dependente de ambas as chaves que compõem a chave composta) 11/3/2020 87

Terceira Forma Normal n n 2 FN 3 FN Cada atributo de uma tabela

Terceira Forma Normal n n 2 FN 3 FN Cada atributo de uma tabela depende exclusivamente da chave primária desta (busca-se não haver relação de um campo não-chave com outro campo não -chave) 11/3/2020 88

Gerenciamento de transações Uma transação é o conjunto de uma ou mais operações realizada

Gerenciamento de transações Uma transação é o conjunto de uma ou mais operações realizada no banco de dados, a qual deve ter sua integridade garantida por meio de quatro propriedades conhecidas como ACID: n Atomicidade execução da operação por completo ou aborto dessa (uma transação é indivisível) n Consistência validação dos dados (requer que ao final de uma transação a base de dados esteja em um estado consistente) n Isolamento acesso privado aos dados de que necessita (várias transações podem rodar independentemente e simultaneamente sem interferir uma nas outras) n Durabilidade garante que em caso de erro na execução, todos os campos em questão no banco de dados sejam restaurados com seus valores iniciais 11/3/2020 89

Papéis em um sistema de Banco de Dados n n Administrador de dados (DA

Papéis em um sistema de Banco de Dados n n Administrador de dados (DA – Data Administrator) Administrador de banco de dados (DBA – Database Administrator) Desenvolvedores e programadores Usuário final 11/3/2020 90

Apêndice B – Linguagem SQL n Recursos da Linguagem: n n n consultas atualizações

Apêndice B – Linguagem SQL n Recursos da Linguagem: n n n consultas atualizações filtros e remoções 11/3/2020 91

Apêndice C – Integridade Referencial n n n foreign key (FK) – chave estrangeira

Apêndice C – Integridade Referencial n n n foreign key (FK) – chave estrangeira foreign key relationship parent table child table Inno. DB storage engine 11/3/2020 92

Apêndice D n O My. SQL possui os seguintes schemas databases: n n information_schema

Apêndice D n O My. SQL possui os seguintes schemas databases: n n information_schema mysql 11/3/2020 93

information_schema database +--------------------+ | Tables_in_information_schema +--------------------+ | CHARACTER_SETS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS

information_schema database +--------------------+ | Tables_in_information_schema +--------------------+ | CHARACTER_SETS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES | | KEY_COLUMN_USAGE | | PROFILING | | ROUTINES | | SCHEMATA | | SCHEMA_PRIVILEGES | | STATISTICS | | TABLE_CONSTRAINTS | | TABLE_PRIVILEGES | | TRIGGERS | | USER_PRIVILEGES | | VIEWS | +--------------------+ 11/3/2020 | 94

mysql database +--------------+ | Tables_in_mysql | +--------------+ | columns_priv | | db | |

mysql database +--------------+ | Tables_in_mysql | +--------------+ | columns_priv | | db | | func | | help_category | | help_keyword | | help_relation | | help_topic | | host | | procs_priv | | tables_priv | | time_zone_leap_second | | time_zone_name | | time_zone_transition_type | | user_info | +--------------+ 11/3/2020 95

Exemplo: obter o engine de todas tabelas select table_name, table_type, engine from tables; 11/3/2020

Exemplo: obter o engine de todas tabelas select table_name, table_type, engine from tables; 11/3/2020 96

Comandos create database, create table n n show create database <nome_banco> exibe a estrutura

Comandos create database, create table n n show create database <nome_banco> exibe a estrutura de criação do banco de dados show create table <nome_tabela> 11/3/2020 97

Diferenças entre os comando ‘desc <table>’ e ‘show create table <table>’ mysql> desc feature;

Diferenças entre os comando ‘desc <table>’ e ‘show create table <table>’ mysql> desc feature; +------------------+------+-----+--------+ | Field | Type | Null | Key | Default | Extra | +------------------+------+-----+--------+ | id_feature | int(10) unsigned | NO | PRI | NULL | auto_increment | | feature_type | varchar(45) | YES | | NULL | | | name_short | varchar(45) | YES | | NULL | | | name_long | varchar(255) | YES | | NULL | | | is_provisionable | tinyint(1) | YES | | NULL | | +------------------+------+-----+--------+ 5 rows in set (0. 00 sec) mysql> show create table feature; +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | feature | CREATE TABLE `feature` ( `id_feature` int(10) unsigned NOT NULL auto_increment, `feature_type` varchar(45) default NULL, `name_short` varchar(45) default NULL, `name_long` varchar(255) default NULL, `is_provisionable` tinyint(1) default NULL, PRIMARY KEY (`id_feature`) ) ENGINE=Inno. DB AUTO_INCREMENT=102 DEFAULT CHARSET=latin 1 | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 11/3/2020 98

Arquivo de Configuração do My. SQL n n Windows my. ini Sistemas Unix-Like my.

Arquivo de Configuração do My. SQL n n Windows my. ini Sistemas Unix-Like my. cnf 11/3/2020 99

Exemplo de arquivo my. cnf [mauro. lopes@brdldly 01 ~]$ cat /usr/src/redhat/SOURCES/my. cnf [mysqld] datadir=/var/lib/mysql

Exemplo de arquivo my. cnf [mauro. lopes@brdldly 01 ~]$ cat /usr/src/redhat/SOURCES/my. cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql. sock # Default to using old password format for compatibility with mysql 3. x # clients (those using the mysqlclient 10 compatibility package). old_passwords=1 [mysql. server] user=mysql basedir=/var/lib [mysqld_safe] err-log=/var/log/mysqld. log pid-file=/var/run/mysqld. pid 11/3/2020 100