# bbdd-repte01
## (2ona part)
<!-- Put the link to this slide here so people can follow -->
slide: https://hackmd.io/@joaniznardo/bbdd-repte01
---
## referències
https://dev.mysql.com/doc/refman/8.0/en/
https://www.javatpoint.com/mysql-tutorial
---
## plan (1er bloc)
1. gestió dels **comptes i privilegis**
1. crear la base de dades
1. crear les taules
1. crear una **vista**
1. crear les claus
1. crear un índex
1. crear un **activador** (trigger)
---
## plan (2on bloc)
1. comprovar (**select**) abans i després de cada operació
1. inserir registres, actualitzar algun registre, esborrar algun registre
1. comprovar (**select**) abans i després d'esborrar de les 2 taules
1. **modificar** la taula per fer que **esborre en cascada**
1. **exportar** la base de dades
1. **importar** la base de dades
---
## gestió de comptes
alta
baixa
modificació
---
## alta de comptes
https://dev.mysql.com/doc/refman/8.0/en/create-user.html
```
CREATE USER [IF NOT EXISTS]
user [auth_option] [, user [auth_option]] ...
DEFAULT ROLE role [, role ] ...
[REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
[WITH resource_option [resource_option] ...]
[password_option | lock_option] ...
[COMMENT 'comment_string' | ATTRIBUTE 'json_object']
```
---
## alta de comptes (pensant-hi)
creació **múltiple**? (una sola instrucció)
què són els **rols**?
quins rols tenim **disponibles**?
---
## modificació comptes
https://dev.mysql.com/doc/refman/8.0/en/alter-user.html
```
ALTER USER [IF EXISTS]
user [auth_option] [, user [auth_option]] ...
[REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
[WITH resource_option [resource_option] ...]
[password_option | lock_option] ...
[COMMENT 'comment_string' | ATTRIBUTE 'json_object']
```
---
## baixa de comptes
https://dev.mysql.com/doc/refman/8.0/en/drop-user.html
```
DROP USER [IF EXISTS] user [, user] ...
```
---
## gestió de privilegis (permissos)
concesió (**grant**)
comprovació (**show grants**)
retirada (**revoke**)
---
## privilegis - concesió
**acumulativa!!**
https://dev.mysql.com/doc/refman/8.0/en/grant.html
```
GRANT
priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_or_role [, user_or_role] ...
[WITH GRANT OPTION]
[AS user
[WITH ROLE
DEFAULT | NONE | ALL
| ALL EXCEPT role [, role ] ...
| role [, role ] ...
]
]
```
---
## privilegis - comprovació
https://dev.mysql.com/doc/refman/8.0/en/show-grants.html
```
SHOW GRANTS
[FOR user_or_role
[USING role [, role] ...]]
user_or_role: {
user (see Section 6.2.4, “Specifying Account Names”)
| role (see Section 6.2.5, “Specifying Role Names”.
}
```
---
## privilegis - retirada
https://dev.mysql.com/doc/refman/8.0/en/revoke.html
**selectiva!!**
```
REVOKE [IF EXISTS]
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user_or_role [, user_or_role] ...
[IGNORE UNKNOWN USER]
REVOKE [IF EXISTS] ALL [PRIVILEGES], GRANT OPTION
FROM user_or_role [, user_or_role] ...
[IGNORE UNKNOWN USER]
```
---
## gestió de bases de dades
creació
eliminació
modificació
---
## creació de base de dades
https://dev.mysql.com/doc/refman/8.0/en/create-database.html
```
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
```
---
## eliminar base de dades
https://dev.mysql.com/doc/refman/8.0/en/drop-database.html
```
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
```
---
## modificar base de dades
https://dev.mysql.com/doc/refman/8.0/en/alter-database.html
```
ALTER {DATABASE | SCHEMA} [db_name]
alter_option ...
alter_option: {
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
| [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}
| READ ONLY [=] {DEFAULT | 0 | 1}
}
```
---
## gestió de les taules
crear taula
eliminar taula
modificar taula
---
## crear taula (1/3)
https://dev.mysql.com/doc/refman/8.0/en/create-table.html
```
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
```
---
## crear taula (2/3)
https://dev.mysql.com/doc/refman/8.0/en/create-table.html
```
create_definition: {
col_name column_definition
| {INDEX | KEY} [index_name] [index_type] (key_part,...)
[index_option] ...
| {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
[index_name] [index_type] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (col_name,...)
reference_definition
| check_constraint_definition
}
```
---
## crear taula (3/3)
https://dev.mysql.com/doc/refman/8.0/en/create-table.html
```
column_definition: {
data_type [NOT NULL | NULL] [DEFAULT {literal | (expr)} ]
[VISIBLE | INVISIBLE]
[AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY]
[COMMENT 'string']
[COLLATE collation_name]
[COLUMN_FORMAT {FIXED | DYNAMIC | DEFAULT}]
[ENGINE_ATTRIBUTE [=] 'string']
[SECONDARY_ENGINE_ATTRIBUTE [=] 'string']
[STORAGE {DISK | MEMORY}]
[reference_definition]
[check_constraint_definition]
| data_type
[COLLATE collation_name]
[GENERATED ALWAYS] AS (expr)
[VIRTUAL | STORED] [NOT NULL | NULL]
[VISIBLE | INVISIBLE]
[UNIQUE [KEY]] [[PRIMARY] KEY]
[COMMENT 'string']
[reference_definition]
[check_constraint_definition]
}
```
---
## eliminar taula
```
```
---
## modificar taula
```
```
---
## gestió de les vistes
```
```
---
## gestió de les claus
```
```
---
## gestió dels índex
```
```
---
## gestió dels activadors (triggers)
```
```
---
## gestió del contingut de les taules
```
```
---
## exportació/importació de bases de dades
```
```
---
{"metaMigratedAt":"2023-06-18T03:56:47.797Z","metaMigratedFrom":"YAML","title":"bbdd-repte01","breaks":true,"description":"View the slide with \"Slide Mode\".","contributors":"[{\"id\":\"0ffc4edc-eeda-47e7-8ec7-4160f77a930d\",\"add\":7684,\"del\":3811}]"}