Bazy danych 7. SQL podstawy

Podobne dokumenty
Bazy danych 5. Samozłaczenie SQL podstawy

Bazy danych 4. SQL podstawy. P. F. Góra

Bazy danych 4. SQL- podstawy

Bazy danych 4. Przykłady SQL podstawy

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych 10. SQL Widoki

Bazy Danych i Usługi Sieciowe

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Język SQL, zajęcia nr 1

Bazy danych i usługi sieciowe

Bazy danych 7. SQL dalsze możliwości. Grupowanie.

Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Wykład 2. SQL 1 Structured Query Lenguage

Wykład 5. SQL praca z tabelami 2

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Kurs. Podstawy MySQL

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Wykład 05 Bazy danych

Połączenie z bazą danych : mysql h u root -p Enter password: *******

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Wykład 4. SQL praca z tabelami 1

Bazy danych 6. Klucze obce. P. F. Góra

Projektowanie systemów baz danych

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Język baz danych SQL cz.1

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Relacyjne bazy danych. Podstawy SQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy danych. Dr inż. Paweł Kasprowski

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Autor: Joanna Karwowska

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Relacyjne bazy danych. Podstawy SQL

Bazy danych 9. SQL Klucze obce Transakcje

SIECI KOMPUTEROWE I BAZY DANYCH

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Wykład 8. SQL praca z tabelami 5

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Paweł Rajba

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

E.14 Bazy Danych cz. 16 SQL Tworzenie, modyfikowanie i usuwanie tabel

2 Przygotował: mgr inż. Maciej Lasota

Bazy danych 12. SQL Wyszukiwanie pełnotekstowe

Laboratorium nr 1. Temat: Wprowadzenie do MySQL-a

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

LAB2. Dalsze ćwiczenia z podstaw języka SQL (CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT)

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Instrukcja CREATE TABLE

SIECI KOMPUTEROWE I BAZY DANYCH

Instalacja MySQL.

Tworzenie, modyfikowanie i usuwanie tabel

Wykład 6. SQL praca z tabelami 3

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

SQL w praktyce. Miłej i owocnej nauki!!!

Widok Connections po utworzeniu połączenia. Obszar roboczy

SQL/MySQL. Rafał Kern

Bazy danych 7. Widoki i wyzwalacze. P. F. Góra

Bazy danych. Polecenia SQL

Obiekty dowolnego typu, w tym bazy danych, możemy tworzyć instrukcją CREATE. Po czasowniku CREATE należy podać typ tworzonego obiektu i jego nazwę.

Dr Michał Tanaś(

Podyplomowe Studium Programowania i Baz Danych

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

SQL Structured Query Language

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Wyzwalacze (triggery) Przykład

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Język SQL, zajęcia nr 2

korzyści finansowe przewaga pomysłu nad kapitałem tworzenie nowych branż tworzenie mechanizmów pochodnych (np. serwis snip).

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze

Bazy danych 7. Klucze obce Transakcje. P. F. Góra

Systemy GIS Tworzenie zapytań w bazach danych

Przestrzenne bazy danych Podstawy języka SQL

SQL (ang. Structured Query Language)

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

Komunikacja z bazą danych psql

Aspekty aktywne baz danych

Bazy danych - Materiały do laboratoriów VIII

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Wprowadzenie do języka SQL

Projektowanie Baz Danych GiG-2-KG Ćw. 5. Podstawy języka SQL

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

PROJEKTOWANIE BAZ DANYCH

Podyplomowe Studium Programowania i Baz Danych

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Transkrypt:

Bazy danych 7. SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06

Structured Query Language Używane standardy: SQL92 SQL99 SQL:2003 Żaden dostawca nie jest w pełni zgodny ze standardem prawie wszyscy wprowadzaja rozszerzenia, prawie nikt nie spełnia wszystkich wymogów. W dużych systemach komercyjnych odejście od wymogów nie jest wielkie 7. SQL podstawy 2

Połacznie się z serwerem Przed rozpoczęciem pracy, nalezy wywołać proces kliencki, który połaczy się z serwerem. W MySQL może to wygladać na przykład tak: C:\>mysql -upawel -p Enter password: ************* Po zakończeniu pracy trzeba się pożegnać: mysql> QUIT; Bye Znacznie częściej połaczenie z serwerem nawiazuje się za pomoca jakiejś aplikacji, nie zaś bezpośrednio z shella. 7. SQL podstawy 3

Utworzenie bazy danych mysql> CREATE DATABASE MoiStudenci CHARACTER SET cp1250; Query OK, 1 row affected (0.06 sec) mysql> USE MoiStudenci; Database changed mysql> Po wywołaniu klienta, trzeba wejść do wybranej bazy za pomoca instrukcji USE nie tylko po jej utworzeniu, ale zawsze. 7. SQL podstawy 4

To, jakie bazy znajduja się na serwerze, możemy zobaczyć za pomoca instrukcji SHOW DATABASES. mysql> SHOW DATABASES; +--------------------+ Database +--------------------+ information_schema kaskady moistudenci mysql test +--------------------+ 5 rows in set (0.00 sec) 7. SQL podstawy 5

Utworzenie tabeli mysql> CREATE TABLE Studenci -> (NrStudenta SMALLINT UNSIGNED NOT NULL -> AUTO_INCREMENT PRIMARY KEY); Query OK, 0 rows affected (0.14 sec) Jeśli okaże się to konieczne, po utworzeniu można zmienić definicję tabeli. mysql> ALTER TABLE Studenci -> ADD COLUMN (Nazwisko VARCHAR(20) NOT NULL); Query OK, 1 row affected (0.17 sec) Records: 1 Duplicates: 0 Warnings: 0 7. SQL podstawy 6

Składnia polecenia CREATE TABLE CREATE TABLE NazwaTabeli ( NazwaKolumny 1 TypKolumny 1 NULL NOT NULL..., NazwaKolumny 2 TypKolumny 2 NULL NOT NULL...,... ) PRIMARY KEY (NazwaKolumny p,nazwakolumny q,... ) ; Inne opcje poznamy później. 7. SQL podstawy 7

Typy danych (atrybutów) TINYINT DATE TINYBLOB SMALLINT TIME BLOB MEDIUMINT TIMESTAMP MEDIUMBLOB INT DATETIME LONGBLOB INTEGER CHAR TINYTEXT BIGINT VARCHAR TEXT REAL BOOLEAN LONGTEXT DOUBLE ENUM FLOAT SET DECIMAL NUMERIC 7. SQL podstawy 8

Instrukcja DESCRIBE podaje definicję tabeli. mysql> DESCRIBE Studenci; +------------+----------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +------------+----------------------+------+-----+---------+----------------+ NrStudenta smallint(5) unsigned NO PRI NULL auto_increment Nazwisko varchar(20) NO +------------+----------------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec) Niepotrzebna tabelę usuwamy za pomoca instrukcji DROP TABLE. mysql> DROP TABLE Studenci; Query OK, 0 rows affected (0.02 sec) Lepiej ja utworzyć od poczatku dobrze niż dodawać kolumna po kolumnie... 7. SQL podstawy 9

mysql> CREATE TABLE Studenci -> (NrStudenta SMALLINT UNSIGNED NOT NUll -> AUTO_INCREMENT PRIMARY KEY, -> Imie VARCHAR(20), -> Nazwisko VARCHAR(20) NOT NULL, -> Uwagi VARCHAR(30), -> Grupa CHAR(2) NOT NULL)); Query OK, 0 rows affected (0.06 sec) mysql> DESCRIBE Studenci; +------------+----------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +------------+----------------------+------+-----+---------+----------------+ NrStudenta smallint(5) unsigned NO PRI NULL auto_increment Imie varchar(20) YES NULL Nazwisko varchar(20) NO Uwagi varchar(30) YES NULL Grupa char(2) NO +------------+----------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) 7. SQL podstawy 10

Wstawianie wartości do tabeli mysql> SET CHARACTER SET cp1250; Query OK, 0 rows affected (0.00 sec) Gdybyśmy tego nie zrobili, MySQL używałby takiego zestawu znaków, jaki obowiazywał domyślnie w momencie połaczenia z serwerem. Kwestie określania zestawu znaków to osobliwość MySQLa mysql> INSERT INTO Studenci VALUES -> (1, Milena, Zahorska, wt, uzupełniające ); Query OK, 1 row affected (0.02 sec) 7. SQL podstawy 11

Co teraz jest w tabeli? mysql> SELECT * FROM Studenci; +------------+--------+----------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+--------+----------+---------------+-------+ 1 Milena Zahorska uzupełniające wt +------------+--------+----------+---------------+-------+ 1 row in set (0.00 sec) 7. SQL podstawy 12

Składnia zapytania SELECT; SELECT [DISTINCT] lista select FROM tabela lub zapytanie WHERE warunek logiczny GROUP BY wyrażenie grupujace HAVING warunek wyszukiwania po grupowaniu ORDER BY wyrażenie porzadkuj ace [ASC DESC] ; W zapytaniu SELECT wszystkie klauzule musza występować w powyższej kolejności. Niektóre klauzule można opuścić, ale to, co jest, musi być w tej kolejności. 7. SQL podstawy 13

Dodajmy więcej danych mysql> INSERT INTO Studenci VALUES -> (2, Sylwester, Tomiec, uzupełniające, wt ), -> (3, Michał, Gajewczyk,, wt ); Query OK, 2 rows affected (0.02 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM Studenci; +------------+-----------+-----------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+-----------+-----------+---------------+-------+ 1 Milena Zahorska uzupełniające wt 2 Sylwester Tomiec uzupełniające wt 3 Michał Gajewczyk wt +------------+-----------+-----------+---------------+-------+ 3 rows in set (0.00 sec) 7. SQL podstawy 14

Wykorzystanie opcji AUTOINCREMENT mysql> INSERT INTO Studenci (Imie,Nazwisko,Grupa) VALUES -> ( Rafał, Świderski, wt ), -> ( Maciej, Matowicki, wf ), -> ( Janko, Muzykant, nd ); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM Studenci; +------------+-----------+-----------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+-----------+-----------+---------------+-------+ 1 Milena Zahorska uzupełniające wt 2 Sylwester Tomiec uzupełniające wt 3 Michał Gajewczyk wt 4 Rafał Świderski NULL wt 5 Maciej Matowicki NULL wf 6 Janko Muzykant NULL nd +------------+-----------+-----------+---------------+-------+ 6 rows in set (0.00 sec) 7. SQL podstawy 15

Zapytanie UPDATE mysql> UPDATE Studenci -> SET Uwagi=NULL -> WHERE NrStudenta=3; Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> UPDATE Studenci -> SET Grupa= wt WHERE Grupa= wf ; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 7. SQL podstawy 16

mysql> SELECT * FROM Studenci; +------------+-----------+-----------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+-----------+-----------+---------------+-------+ 1 Milena Zahorska uzupełniające wt 2 Sylwester Tomiec uzupełniające wt 3 Michał Gajewczyk NULL wt 4 Rafał Świderski NULL wt 5 Maciej Matowicki NULL wt 6 Janko Muzykant NULL nd +------------+-----------+-----------+---------------+-------+ 6 rows in set (0.00 sec) 7. SQL podstawy 17

Zapytanie DELETE Usuwanie wierszy spełniajacych podane kryterium: mysql> DELETE FROM Studenci -> WHERE Imie= Janko ; Query OK, 1 row affected (0.03 sec) Dodajmy coś jeszcze: mysql> INSERT INTO Studenci (Imie,Nazwisko,Grupa) VALUES -> ( Michał, Czubek, pt ),( Marcin, Pyra, pt ), -> ( Marcin, Baranowski, pt ); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 7. SQL podstawy 18

mysql> SELECT * FROM Studenci; +------------+-----------+------------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+-----------+------------+---------------+-------+ 1 Milena Zahorska uzupełniające wt 2 Sylwester Tomiec uzupełniające wt 3 Michał Gajewczyk NULL wt 4 Rafał Świderski NULL wt 5 Maciej Matowicki NULL wt 7 Michał Czubek NULL pt 8 Marcin Pyra NULL pt 9 Marcin Baranowski NULL pt +------------+-----------+------------+---------------+-------+ 8 rows in set (0.01 sec) Brakuje numeru 6 AUTOINCREMENT zapamiętał, że on tam był. AUTOINCREMENT zawsze startuje od high water mark. 7. SQL podstawy 19

Jawnie wyspecyfikowana lista select mysql> SELECT Imie, Nazwisko FROM Studenci; +-----------+------------+ Imie Nazwisko +-----------+------------+ Milena Zahorska Sylwester Tomiec Michał Gajewczyk Rafał Świderski Maciej Matowicki Michał Czubek Marcin Pyra Marcin Baranowski +-----------+------------+ 8 rows in set (0.01 sec) Gwiazdka w zapytaniu SELECT (SELECT * FROM...) kolumny. oznacza wszystkie 7. SQL podstawy 20

Problem duplikatów mysql> SELECT Imie -> FROM Studenci; +-----------+ Imie +-----------+ Milena Sylwester Michał Rafał Maciej Michał Marcin Marcin +-----------+ 8 rows in set (0.00 sec) mysql> SELECT DISTINCT Imie -> FROM Studenci; +-----------+ Imie +-----------+ Milena Sylwester Michał Rafał Maciej Marcin +-----------+ 6 rows in set (0.00 sec) 7. SQL podstawy 21

Operator LIKE mysql> SELECT Imie, Nazwisko -> FROM Studenci -> WHERE Imie LIKE Mi% ; +--------+-----------+ Imie Nazwisko +--------+-----------+ Milena Zahorska Michał Gajewczyk Michał Czubek +--------+-----------+ 3 rows in set (0.00 sec) mysql> SELECT Imie, Nazwisko -> FROM Studenci -> WHERE Imie LIKE %ł ; +--------+-----------+ Imie Nazwisko +--------+-----------+ Michał Gajewczyk Rafał Świderski Michał Czubek +--------+-----------+ 3 rows in set (0.00 sec) 7. SQL podstawy 22

Wykorzystanie ORDER BY mysql> SELECT Imie, Nazwisko -> FROM Studenci -> WHERE Grupa= wt -> ORDER BY Nazwisko ASC; +-----------+-----------+ Imie Nazwisko +-----------+-----------+ Michał Gajewczyk Maciej Matowicki Sylwester Tomiec Milena Zahorska Rafał Świderski +-----------+-----------+ 5 rows in set (0.02 sec) Problemy z poprawnym sortowaniem polskich znaków diakrytycznych 7. SQL podstawy 23