[]-----------------------[]
 | MySQL feladatsor D |
[]-----------------------[]

a) Állítson elő egy iskola nevű adatbázist, majd tegye azt aktuális adatbázissá!
(Feladat nem tartalmazza, de ezt csak root felhasználói jogosultsággal tudjuk megtenni, így kell bejelentkezni a HeidiSQL indulásakor)

CREATE DATABASE iskola;
USE iskola;
SELECT DATABASE();

b) Készítsen egy tanulok nevű táblát az új adatbázisban a következő mezőkkel:
id int,
nev varchar(50)

CREATE TABLE tanulok (
	id INT,
	nev VARCHAR(50)
	);
SHOW TABLES;
Tables_in_iskola
tanulok

c) Módosítsa a tanulok táblát úgy, hogy a nev mezőt kötelező legyen kitölteni és maximális hossza 60 karakter legyen!

ALTER TABLE tanulok MODIFY COLUMN nev VARCHAR(60) NOT NULL;
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) YES
nev varchar(60) NO

d) Módosítsa a tanulok táblát úgy, hogy az id mező értéke automatikusan kapjon új sorszámot és elsődleges kulcs legyen!

ALTER TABLE tanulok MODIFY COLUMN id INT AUTO_INCREMENT PRIMARY KEY;
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO

e) Egészítse ki a tanulok táblát egy új mezővel: oszt char(3)

ALTER TABLE tanulok ADD COLUMN oszt CHAR(3);
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO
oszt char(3) YES

f) Egészítse ki a tanulok táblát egy új mezővel: dse bit
A dse mező alapértelmezett értéke legyen: 0

ALTER TABLE tanulok ADD COLUMN dse BIT DEFAULT 0;
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO
oszt char(3) YES
dse bit(1) YES b'0'

g) Módosítsa a dse oszlop típusát datetime típusra úgy, hogy aktuális értéke a kitöltéskori napi dátum legyen!

ALTER TABLE tanulok MODIFY COLUMN dse DATETIME DEFAULT CURRENT_DATE;
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO
oszt char(3) YES
dse datetime YES curdate()

vagy:

ALTER TABLE tanulok MODIFY COLUMN dse DATETIME DEFAULT NOW();
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO
oszt char(3) YES
dse datetime YES current_timestamp()

... de ha már a napi dátumnak kell lenni az alapértelmezett értéknek, akkor lehet szerencsésebb lenne az előírt "datetime helyett" csak a "date" adattípust használni:

ALTER TABLE tanulok MODIFY COLUMN dse DATE DEFAULT CURRENT_DATE;
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO
oszt char(3) YES
dse date YES curdate()

h) Módosítsa az oszt mező típusát char(4) -re!

ALTER TABLE tanulok MODIFY COLUMN oszt CHAR(4);
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO
oszt char(4) YES
dse date YES curdate()

i) Jelenítse meg a tanulok tábla aktuális szerkezetét!
desc tanulok;

Ezt a feladatot nem is értem itt...mindegy

DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO
oszt char(4) YES
dse date YES curdate()

j) A tanulok tábla új neve legyen: diakok (Nevezze át a táblát!)

RENAME TABLE tanulok TO diakok;
SHOW TABLES;
Tables_in_iskola
diakok

k) Készítsen egy diakok2 és egy diakok3 táblát, melyek szerkezete megegyezik a diakok tábla szerkezetével!

CREATE TABLE diakok2 LIKE diakok;
CREATE TABLE diakok3 LIKE diakok;
SHOW TABLES;
Tables_in_iskola
diakok
diakok2
diakok3

Ha adatok is vannak a forrás táblában, és azokat is szeretnénk az újonnan létrehozott táblákba átvinni, akkor:

INSERT INTO diakok2 SELECT * FROM diakok;
INSERT INTO diakok2 SELECT * FROM diakok;

l) Törölje ki egy utasítással a diakok2 és a diakok3 táblát!

DROP TABLE diakok2, diakok3;
SHOW TABLES;

m) Készítsen egy indexfájlt a diakok tábla nev oszlopához nev_idx néven!

CREATE INDEX nev_idx ON diakok (nev);
SHOW INDEX FROM diakok;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
diakok 0 PRIMARY 1 id A 1 BTREE
diakok 1 nev_idx 1 nev A 1 BTREE

n) Adjon hozzá a diakok táblához egy új mezőt: menza int unsigned

ALTER TABLE diakok ADD COLUMN menza INT UNSIGNED;
DESCRIBE diakok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO MUL
oszt char(4) YES
dse date YES curdate()
menza int(10) unsigned YES

o) Adjon hozzá a diakok táblához egy új mezőt: suly int

ALTER TABLE diakok ADD COLUMN suly INT;
DESCRIBE diakok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO MUL
oszt char(4) YES
dse date YES curdate()
menza int(10) unsigned YES
suly int(11) YES

p) Módosítsa a suly mező típusát úgy, hogy tizedes értékek is tárolhatók legyenek benne!

ALTER TABLE diakok MODIFY COLUMN suly FLOAT;
DESCRIBE diakok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO MUL
oszt char(4) YES
dse date YES curdate()
menza int(10) unsigned YES
suly float YES

q) A diakok tábla új neve legyen: tanulok (Nevezze át a táblát!)

RENAME TABLE diakok TO tanulok;
SHOW TABLES;
Tables_in_iskola
tanulok

r) Törölje a tanulok táblából a suly mezőt!
s) Jelenítse meg a tanulok tábla aktuális szerkezetét!

ALTER TABLE tanulok DROP COLUMN suly;
DESCRIBE tanulok;
Field Type Null Key Default Extra
id int(11) NO PRI auto_increment
nev varchar(60) NO MUL
oszt char(4) YES
dse date YES curdate()
menza int(10) unsigned YES

t) Szüntesse meg a tanulok táblát!

DROP TABLE tanulok;
SHOW TABLES;

u) Szüntesse meg az iskola nevű adatbázist!
v) Jelenítse meg az elérhető adatbázisok listáját!

DROP DATABASE iskola;
SHOW DATABASES;
Database
information_schema
mysql
performance_schema
sqlguru
generated 2023-01-04 11:34:36 by HeidiSQL 10.2.0.5723