Apache Derby - Szybki przewodnik

Apache Derby to Rpodniosły Database Mzaręczyny System, który jest w pełni oparty na (napisanym / zaimplementowanym) języku programowania Java. Jest to baza danych typu open source opracowana przez Apache Software Foundation.

Oracle wypuściło odpowiednik Apache Derby o nazwie JavaDB.

Funkcje Apache Derby

Poniżej przedstawiono godne uwagi funkcje bazy danych Derby -

  • Platform independent - Derby używa formatu bazy danych na dysku, w którym zawarte w nim bazy danych są przechowywane w pliku na dysku w katalogu o tej samej nazwie, co baza danych.

  • No modifying data - Z tego powodu można przenosić bazy danych derby na inne maszyny bez modyfikowania danych.

  • Transactional support - Derby zapewnia pełną obsługę transakcji, zapewniając integralność danych.

  • Including databases - Możesz dołączyć wstępnie utworzone / istniejące bazy danych do swoich bieżących aplikacji Derby.

  • Less space - Baza danych Derby zajmuje mało miejsca, tj. Zajmuje mniej miejsca, jest łatwa w obsłudze i wdrażaniu.

  • Embed with Java Application- Derby zapewnia wbudowany silnik bazy danych, który można osadzić w aplikacjach Java i będzie on uruchamiany w tej samej JVM, co aplikacja. Po prostu załadowanie sterownika uruchamia bazę danych i zatrzymuje się na aplikacjach.

Ograniczenia Apache Derby

Oto ograniczenia Apache Derby -

  • Derby nie obsługuje indeksów dla typów danych, takich jak BLOB i LONGVARCHAR.

  • Jeśli Derby nie ma wystarczającej ilości miejsca na dysku, zostanie natychmiast zamknięty.

Przechowywanie danych

Podczas przechowywania danych Apache Derby kieruje się koncepcją znaną jako conglomerate. W tym przypadku dane tabeli będą przechowywane w oddzielnym pliku. W ten sam sposób każdy indeks tabeli jest również przechowywany w oddzielnym pliku. W związku z tym dla każdej tabeli lub indeksu w bazie danych będzie osobny plik.

Biblioteka / składniki Apache Derby

Dystrybucja Apache Derby zawiera różne komponenty. W folderze lib pobranej dystrybucji Apache możesz obserwować pliki jar reprezentujące różne komponenty.

Plik jar Składnik Opis
derby.jar Aparat baz danych i sterownik JDBC

Silnik bazy danych Apache Derby to wbudowany silnik relacyjnej bazy danych, który obsługuje interfejsy JDBC i SQL API.

Działa również jako wbudowany sterownik, za pomocą którego można komunikować się z Derby za pomocą aplikacji Java.

derbynet.jar derbyrun.jar Serwer sieciowy

Serwer sieciowy Apache Derby zapewnia funkcjonalność serwera klienckiego, dzięki której klienci mogą łączyć się z serwerem Derby przez sieć.

derbyclient.jar Sterownik JDBC klienta sieciowego
derbytools.jar Narzędzia wiersza poleceń Ten plik jar zawiera narzędzia takie jak sysinfo, ij, i dblook.
derbyoptionaltools.jar Opcjonalne narzędzia wiersza poleceń (narzędzia)

Ten plik jar zawiera opcjonalne narzędzia: opcjonalne narzędzie databaseMetaData, opcjonalne narzędzie ForeignViews, opcjonalne narzędzie luceneSupport, opcjonalne narzędzie rawDBReader, opcjonalne narzędzie simpleJson itp.

derbyLocale_XX.jar Pliki JAR do lokalizowania wiadomości

Oprócz wyżej wymienionych plików jar można zobaczyć kilka plików derbyLocale_XX.jar (es, fr, hu, it, ja itd.). Korzystając z nich, możesz zlokalizować wiadomości Apache Derby.

Możesz wdrożyć apache derby w dwóch trybach, a mianowicie w trybie osadzonym i trybie serwera.

Tryb osadzony

Derby można uruchomić w trybie wbudowanym za pomocą aplikacji Java (przy użyciu wbudowanego sterownika). Jeśli produkt Derby zostanie wdrożony w trybie osadzonym, aparat bazy danych będzie działał w tej samej maszynie JVM, co aplikacja Java. Rozpoczyna się i kończy wraz z aplikacją. Dostęp do bazy danych można uzyskać tylko za pomocą tej aplikacji.

Tryb serwera

W trybie serwera narzędzie Derby zostanie uruchomione w JVM serwera aplikacji, na którym można wysłać żądanie do serwera, aby uzyskać do niego dostęp. W przeciwieństwie do trybu osadzonego, wiele aplikacji (java) może wysyłać żądania do serwera i uzyskiwać dostęp do bazy danych.

Poniższy rozdział wyjaśnia, jak pobrać i zainstalować Apache Derby.

Pobieranie Apache Derby

Odwiedź stronę domową strony głównej Apache Derby https://db.apache.org/derby/. Kliknij kartę Pobierz.

Wybierz i kliknij łącze do najnowszej wersji Apache Derby.

Po kliknięciu w wybrany link zostaniesz przekierowany do Distributionsstrona z apache derby. Jeśli zauważysz tutaj, derby zapewnia dystrybucje, a mianowicie db-derby-bin, db-derbylib.zip, db-derby-lib-debug.zip i db-derby-src.zip.

Pobierz db-derby-binteczka. Skopiuj jego zawartość do osobnego folderu, w którym chcesz zainstalować Apache Derby. (na przykład, powiedzC:\Derby)

Teraz, aby pracować z Derby,

  • Upewnij się, że już ustawiłeś JAVA_HOME zmienną, przekazując lokalizację folderu bin folderu instalacyjnego Java i dołącz plik JAVA_HOME/bin w zmiennej PATH.

  • Utwórz nową zmienną środowiskową, DERBY_HOME z wartością C: \ Derby.

  • Folder bin dystrybucji db-derby-bin (zmieniliśmy go na C: \ Derby \ bin) zawiera wszystkie wymagane pliki jar.

Jak wspomniano, Apache Derby można zainstalować / wdrożyć na dwa sposoby w następujący sposób -

  • Embedded mode- W tym celu należy uzyskać dostęp do bazy danych za pomocą sterownika Embedded Derby JDBC. Możesz uruchamiać i zatrzymywać derby za pomocą aplikacji Java. Zarówno silnik bazy danych, jak i aplikacja będą działać na tej samej maszynie JVM.

  • Network Server mode- W tym trybie można uzyskać dostęp do Derby w typowy sposób typu klient-serwer, w którym Derby jest osadzony w systemie serwera. Następnie komputery klienckie działające w różnych maszynach JVM (tej z serwera) będą wysyłać żądania do serwera, a serwer odpowiada na te żądania.

Klientem może być inna maszyna JVM na tym samym komputerze systemowym serwera lub aplikacja Java z systemu zdalnego.

Instalowanie Derby w trybie wbudowanym

Aby zainstalować Apache Derby w trybie osadzonym, dołącz plik jar derby.jar w Twojej CLASSPATH.

Możesz też ustawić ścieżkę klasy dla wymaganych plików jar, uruchamiając plik setEmbeddedCPKomenda. Przejrzyjbin katalogu Apache Derby i uruchom ten plik, jak pokazano poniżej -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setEmbeddedCP.bat
C:\Derby\bin>SET DERBY_HOME=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derby.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib/derby
optionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Po skonfigurowaniu Apache Derby, aby uzyskać do niego dostęp, uruchom programy Java przy użyciu wbudowanego sterownika.

Weryfikacja

Możesz zweryfikować konfigurację za pomocą ij narzędzie, jak pokazano poniżej -

C:\Derby\bin>ij
ij version 10.14
ij> connect 'jdbc:derby:SampleDB;create=true';
ij>

Instalowanie Derby w trybie serwera sieciowego

Aby zainstalować Apache Derby w trybie serwera sieciowego, musisz dołączyć derbynet.jar i derbytools.jar pliki do CLASSPATH.

Lub możesz ustawić ścieżkę klasy dla wymaganych plików jar, uruchamiając setNetworkServerCPKomenda. Przejrzyjbin katalogu Apache Derby i uruchom ten plik, jak pokazano poniżej -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setNetworkServerCP.bat
C:\Derby\bin>SET DERBY_INSTALL=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derbynet.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib/de
rbyoptionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Uruchamianie Derby w trybie serwera

Możesz uruchomić serwer sieciowy, uruchamiając polecenie startNetworkServer. Przejrzyjbin katalogu Apache Derby i uruchom to polecenie, jak pokazano poniżej -

C:\Derby\bin>startNetworkServer
Fri Jan 04 11:20:30 IST 2019 : Security manager installed using the Basic
server security policy.
Fri Jan 04 11:20:30 IST 2019 : Apache Derby Network Server - 10.14.2.0 -
(1828579) started and ready to accept connections on port 1527

Lub możesz uruchomić serwer za pomocą derbyrun.jar jak pokazano poniżej -

C:\Users\MYUSER>cd %DERBY_HOME%/lib
C:\Derby\lib>java -jar derbyrun.jar server start
Fri Jan 04 11:27:20 IST 2019: Security manager installed using the Basic server
security policy.
Fri Jan 04 11:27:21 IST 2019: Apache Derby Network Server - 10.14.2.0 -
(1828579) started and ready to accept connections on port 1527

Klient sieciowy

W kliencie dodaj pliki jar derbyclient.jar i derbytools.jardo CLASSPATH. Lub uruchomsetNetworkClientCP polecenie, jak pokazano poniżej -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setNetworkClientCP
C:\Derby\bin>SET DERBY_HOME=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derbyclient.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib
/derbyoptionaltools.jar;C:\Derby\lib\derby.jar;C:\Derby\lib\derbytools.jar;C:\D
erby/lib/derbyoptionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Następnie z tego klienta możesz wysyłać żądania do serwera.

Weryfikacja

Możesz zweryfikować konfigurację za pomocą ij narzędzie, jak pokazano poniżej -

C:\Derby\bin>ij
ij version 10.14
ij> connect 'jdbc:derby://localhost:1527/SampleDB;create=true';
ij>

Środowisko Apache Derby Eclipse

Podczas pracy z Eclipse musisz ustawić ścieżkę kompilacji dla wszystkich wymaganych plików jar.

Krok 1: Utwórz projekt i ustaw ścieżkę kompilacji

Otwórz eclipse i utwórz przykładowy projekt. Kliknij projekt prawym przyciskiem myszy i wybierz opcjęBuild Path -> Configure Build Ścieżka, jak pokazano poniżej -

w Java Build Path ramka w Libraries kliknij Add External JARs.

I wybierz wymagane jar pliki w folderze lib folderu instalacyjnego Derby i kliknij Apply and Close.

Apache Derby zapewnia narzędzia, takie jak sysinfo, ij i, dblook.

sysinfo

Za pomocą tego narzędzia można uzyskać informacje o środowisku Java i Derby.

Przejrzyj folder bin katalogu instalacyjnego Derby i wykonaj polecenie sysinfo, jak pokazano poniżej -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>sysinfo

Podczas wykonywania wyświetla informacje systemowe o Javie i Derby, jak podano poniżej -

------------------ Java Information ------------------
Java Version: 1.8.0_101
Java Vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_101\jre
Java classpath: C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\derby.jar;C:\Derby\lib\derbyclient.jar;C:\Derby\lib\derb
yLocale_cs.jar;C:\Derby\lib\derbyLocale_de_DE.jar;C:\Derby\lib\derbyLocale_es.j
ar;C:\Derby\lib\derbyLocale_fr.jar;C:\Derby\lib\derbyLocale_hu.jar;C:\Derby\lib
\derbyLocale_it.jar;C:\Derby\lib\derbyLocale_ja_JP.jar;C:\Derby\lib\derbyLocale
_ko_KR.jar;C:\Derby\lib\derbyLocale_pl.jar;C:\Derby\lib\derbyLocale_pt_BR.jar;C
:\Derby\lib\derbyLocale_ru.jar;C:\Derby\lib\derbyLocale_zh_CN.jar;C:\Derby\lib\
derbyLocale_zh_TW.jar;C:\Derby\lib\derbynet.jar;C:\Derby\lib\derbyoptionaltools
.jar;C:\Derby\lib\derbyrun.jar;C:\Derby\lib\derbytools.jar;;C:\Derby/lib/derby.
jar;C:\Derby/lib/derbynet.jar;C:\Derby/lib/derbyclient.jar;C:\Derby/lib/derbyto
ols.jar;C:\Derby/lib/derbyoptionaltools.jar
OS name: Windows 10
OS architecture: amd64
OS version: 10.0
Java user name: Tutorialspoint
Java user home: C:\Users\Tutorialspoint
Java user dir: C:\Derby\bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.8
java.runtime.version: 1.8.0_101-b13
--------- Derby Information --------
[C:\Derby\lib\derby.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbytools.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbynet.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbyclient.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbyoptionaltools.jar] 10.14.2.0 - (1828579)
------------------------------------------------------
----------------- Locale Information -----------------
Current Locale : [English/United States [en_US]]
Found support for locale: [cs]
 version: 10.14.2.0 - (1828579)
Found support for locale: [de_DE]
 version: 10.14.2.0 - (1828579)
Found support for locale: [es]
 version: 10.14.2.0 - (1828579)
Found support for locale: [fr]
 version: 10.14.2.0 - (1828579)
Found support for locale: [hu]
 version: 10.14.2.0 - (1828579)
Found support for locale: [it]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ja_JP]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ko_KR]
 version: 10.14.2.0 - (1828579)
Found support for locale: [pl]
 version: 10.14.2.0 - (1828579)
Found support for locale: [pt_BR]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ru]
 version: 10.14.2.0 - (1828579)
Found support for locale: [zh_CN]
 version: 10.14.2.0 - (1828579)
Found support for locale: [zh_TW]
 version: 10.14.2.0 - (1828579)
------------------------------------------------------
------------------------------------------------------

ijtool

Za pomocą tego narzędzia można uruchamiać skrypty i zapytania dotyczące apache Derby.

Przejrzyj folder bin katalogu instalacyjnego Derby i wykonaj polecenie ij, jak pokazano poniżej -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>ij

To ci da ij shell gdzie możesz wykonać polecenie derby i skrypty, jak pokazano poniżej -

ij version 10.14
ij>

Za pomocą help polecenie, możesz uzyskać listę poleceń obsługiwanych przez tę powłokę.

C:\Derby\bin>cd %DERBY_HOME%/bin
C:\Derby\bin>ij
ij version 10.14
ij> help;
Supported commands include:
 PROTOCOL 'JDBC protocol' [ AS ident ];
 -- sets a default or named protocol
 DRIVER 'class for driver'; -- loads the named class
 CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];
 -- connects to database URL
 -- and may assign identifier
 SET CONNECTION connectionName; -- switches to the specified connection
 SHOW CONNECTIONS; -- lists all connections
 AUTOCOMMIT [ ON | OFF ]; -- sets autocommit mode for the connection
 DISCONNECT [ CURRENT | connectionName | ALL ];
 -- drop current, named, or all connections;
-- the default is CURRENT
 SHOW SCHEMAS; -- lists all schemas in the current database
 SHOW [ TABLES | VIEWS | PROCEDURES | FUNCTIONS | SYNONYMS ] { IN schema };
 -- lists tables, views, procedures, functions or
synonyms
 SHOW INDEXES { IN schema | FROM table };
 -- lists indexes in a schema, or for a table
 SHOW ROLES; -- lists all defined roles in the database,
sorted
 SHOW ENABLED_ROLES; -- lists the enabled roles for the current
 -- connection (to see current role use
 -- VALUES CURRENT_ROLE), sorted
 SHOW SETTABLE_ROLES; -- lists the roles which can be set for the
 -- current connection, sorted
 DESCRIBE name; -- lists columns in the named table
 COMMIT; -- commits the current transaction
 ROLLBACK; -- rolls back the current transaction
 PREPARE name AS 'SQL-J text'; -- prepares the SQL-J text
 EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;
 -- executes the statement with parameter
-- values from the USING result set row
 REMOVE name; -- removes the named previously prepared
statement
 RUN 'filename'; -- run commands from the named file
 ELAPSEDTIME [ ON | OFF ]; -- sets elapsed time mode for ij
 MAXIMUMDISPLAYWIDTH integerValue;
 -- sets the maximum display width for
-- each column to integerValue
 ASYNC name 'SQL-J text'; -- run the command in another thread
 WAIT FOR name; -- wait for result of ASYNC'd command
 HOLDFORCONNECTION; -- sets holdability for a connection to HOLD
 -- (i.e. ResultSet.HOLD_CURSORS_OVER_COMMIT)
 NOHOLDFORCONNECTION; -- sets holdability for a connection to NO HOLD
 -- (i.e. ResultSet.CLOSE_CURSORS_AT_COMMIT)
 GET [SCROLL INSENSITIVE] [WITH { HOLD | NOHOLD }] CURSOR name AS 'SQL-J
query';
 -- gets a cursor (JDBC result set) on the query
-- the default is a forward-only cursor with
holdability
 NEXT name; -- gets the next row from the named cursor
 FIRST name; -- gets the first row from the named scroll
cursor
 LAST name; -- gets the last row from the named scroll
cursor
 PREVIOUS name; -- gets the previous row from the named scroll
cursor
 ABSOLUTE integer name; -- positions the named scroll cursor at the
absolute row number
 -- (A negative number denotes position from the
last row.)
 RELATIVE integer name; -- positions the named scroll cursor relative to
the current row
 -- (integer is number of rows)
 AFTER LAST name; -- positions the named scroll cursor after the
last row
 BEFORE FIRST name; -- positions the named scroll cursor before the
first row
 GETCURRENTROWNUMBER name; -- returns the row number for the current
position of the named scroll cursor
 -- (0 is returned when the cursor is not
positioned on a row.)
 CLOSE name; -- closes the named cursor
 LOCALIZEDDISPLAY [ ON | OFF ];
 -- controls locale sensitive data representation
 EXIT; -- exits ij
 HELP; -- shows this message
Any unrecognized commands are treated as potential SQL-J commands and executed
directly.

dblooktool

To narzędzie służy do generowania języka definicji danych.

Przejrzyj folder bin katalogu instalacyjnego Derby i uruchom plik dblook polecenie, jak pokazano poniżej -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>dblook -d myURL

Gdzie, myURL to adres URL połączenia z bazą danych, dla której należy wygenerować kod DDL.

W tym rozdziale przedstawiono składnię wszystkich instrukcji SQL Apache Derby.

Wszystkie instrukcje zaczynają się od dowolnego ze słów kluczowych, takich jak SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW, a wszystkie instrukcje kończą się średnikiem (;).

Instrukcje SQL Apache Derby uwzględniają wielkość liter, w tym nazwy tabel.

Instrukcja CREATE

CREATE TABLE table_name (
   column_name1 column_data_type1 constraint (optional),
   column_name2 column_data_type2 constraint (optional),
   column_name3 column_data_type3 constraint (optional)
);

DROP TABLE

DROP TABLE table_name;

Instrukcja INSERT

INSERT INTO table_name VALUES (column_name1, column_name2, ...);

Instrukcja SELECT

SELECT column_name, column_name, ... FROM table_name;

Instrukcja UPDATE

UPDATE table_name
   SET column_name = value, column_name = value, ...
   WHERE conditions;

Instrukcja DELETE

DELETE FROM table_name WHERE condition;

Instrukcja DESCRIBE

Describe table_name

Instrukcja SQL TRUNCATE TABLE

TRUNCATE TABLE table_name;

Instrukcja ALTER - dodawanie kolumny

ALTER TABLE table_name ADD COLUMN column_name column_type;

Instrukcja ALTER - dodawanie ograniczenia

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

Instrukcja ALTER - porzucenie kolumny

ALTER TABLE table_name DROP COLUMN column_name;

Instrukcja ALTER - porzucenie ograniczenia

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Klauzula GDZIE

SELECT * from table_name WHERE condition;
or,
DELETE from table_name WHERE condition;
or,
UPDATE table_name SET column_name = value WHERE condition;

Klauzula GROUP BY

SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;

Klauzula ORDER BY

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

Posiadanie klauzuli

SELECT column1, column2 . . . from table_name GROUP BY column having
condition;

Tworzenie indeksu

CTREATE INDEX index_name on table_name (column_name);

Tworzenie UNIQUE indeksu

CREATE UNIQUE INDEX index_name on table_name (column_name);

Tworzenie indeksu COMPOSITE

CREATE INDEX index_name on table_name (column_name1, column_name2);

Wyświetlanie indeksów

SHOW INDEXES FROM table_name;

Upuszczanie indeksów

DROP INDEX index_name;

Typ danych to atrybut, który określa typ danych dowolnego obiektu. Każda kolumna, zmienna i wyrażenie ma powiązany typ danych. Podczas tworzenia tabel można używać tych typów danych. Możesz wybrać typ danych dla kolumny tabeli w oparciu o swoje wymagania.

Derby Server oferuje kilka kategorii typów danych do użytku, które wymieniono poniżej -

Całkowite liczbowe typy danych

Poniżej znajduje się lista całkowitych liczbowych typów danych -

TYP DANYCH ROZMIAR OD DO
SMALLINT 2 bajty -32768 32767
LICZBA CAŁKOWITA 4 bajty -2,147,483,648 2,147,483,647
BIGINT 8 bajtów -9223372036854775808 9223372036854775808

Przybliżone numeryczne typy danych

Poniżej znajduje się lista przybliżonych liczbowych typów danych -

TYP DANYCH ROZMIAR OD DO
REAL 4 bajty -3,40E + 38 3,40E + 38
PODWÓJNA PRECYZJA 8 bajtów -1,79E + 308 1,79E + 308
PŁYWAK -1,79E + 308 1,79E + 308

Dokładne numeryczne typy danych

Poniżej znajduje się lista dokładnych liczbowych typów danych -

TYP DANYCH OD DO
DZIESIĘTNY -10 ^ 38 +1 10 ^ 38 -1
NUMERYCZNE -10 ^ 38 +1 10 ^ 38 -1

Instrukcja CREATE TABLE służy do tworzenia nowej tabeli w bazie danych Derby.

Składnia

Poniżej znajduje się składnia instrukcji CREATE.

CREATE TABLE table_name (
   column_name1 column_data_type1 constraint (optional),
   column_name2 column_data_type2 constraint (optional),
   column_name3 column_data_type3 constraint (optional)
);

Innym sposobem tworzenia tabeli w Apache Derby jest określenie nazw kolumn i typów danych za pomocą zapytania. Składnia tego jest podana poniżej -

CREATE TABLE table_name AS SELECT * FROM desired_table WITH NO DATA;

Przykład

Poniższa instrukcja SQL tworzy tabelę o nazwie Student z czterema kolumnami, gdzie id jest kluczem podstawowym i jest generowany automatycznie.

ij> CREATE TABLE Student (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Age INT NOT NULL,
   First_Name VARCHAR(255),
   last_name VARCHAR(255),
   PRIMARY KEY (Id)
);
> > > > > > > 0 rows inserted/updated/deleted

Polecenie DESCRIBE opisuje określoną tabelę, wyświetlając kolumny i ich szczegóły, jeśli tabela istnieje. Możesz użyć tego polecenia, aby sprawdzić, czy tabela została utworzona.

ij> DESCRIBE Student;
COLUMN_NAME |TYPE_NAME |DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
AGE |INTEGER |0 |10 |10 |NULL |NULL |NO
FIRST_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
LAST_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
4 rows selected

Utwórz tabelę za pomocą programu JDBC

W tej sekcji przedstawiono sposób tworzenia tabeli w bazie danych Apache Derby przy użyciu aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci toorg.apache.derby.jdbc.ClientDriver a URL to jdbc: derby: // localhost: 1527 / DATABASE_NAME; create = true; user = USER_NAME; passw ord = PASSWORD ".

Wykonaj poniższe czynności, aby utworzyć tabelę w Apache Derby -

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć, Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement or, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() and, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery() do wyników, które zwracają dane itp. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak utworzyć tabelę w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateTable {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();
 
      //Executing the query
      String query = "CREATE TABLE Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
         stmt.execute(query);
         System.out.println("Table created");
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe

Table created

Instrukcja DROP TABLE służy do usuwania istniejącej tabeli, w tym wszystkich jej wyzwalaczy, ograniczeń i uprawnień.

Składnia

Poniżej znajduje się składnia instrukcji DROP TABLE.

ij> DROP TABLE table_name;

Przykład

Załóżmy, że w bazie danych znajduje się tabela o nazwie Student. Następująca instrukcja SQL usuwa tabelę o nazwie Student.

ij> DROP TABLE Student;
0 rows inserted/updated/deleted

Ponieważ usunęliśmy tabelę, jeśli spróbujemy ją opisać, otrzymamy następujący błąd

ij> DESCRIBE Student;
IJ ERROR: No table exists with the name STUDENT

Drop Table za pomocą programu JDBC

W tej sekcji przedstawiono sposób usuwania tabeli w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy dla sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527/DATABASE_NAME;create = true; user =USER_NAME; passw ord =PASSWORD"

Wykonaj poniższe czynności, aby upuścić tabelę w Apache Derby

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement lub, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() and, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery() do wyników, które zwracają dane itp. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak usunąć tabelę w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class DropTable {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Executing the query
      String query = "DROP TABLE Employees";
      stmt.execute(query);
      System.out.println("Table dropped");
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Table dropped

Apache Derby - Wstaw dane

Zapytanie wstawiające wstawia dane: new recordsdo stołu.

Składnia

Poniżej znajduje się podstawowa składnia instrukcji INSERT -

ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...);

gdzie kolumna1, kolumna2 to wartości kolumn w wierszu, który ma zostać wstawiony.

Przykład

Następująca instrukcja SQL INSERT wstawia nowy wiersz w tabeli Student, w którym wstawia wartości w kolumnach id, age, first name i, last name.

SQL> INSERT INTO Student VALUES (101, 20, 'Zara', 'Ali');

Składnia 2

Lub możesz wstawić dwie konkretne kolumny, podając nazwy kolumn, jak podano poniżej -

ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...) VALUES
(value1, value2, ...);

Note- Apache Derby automatycznie oblicza wartości dla wygenerowanych kolumn. Na przykład nie ma potrzeby przekazywania wartości dla kolumny id w tabeli uczniów utworzonej wcześniej w tym samouczku. Jeśli Twoja tabela zawiera kolumny, użyjsyntax2.

Przykład

ij> INSERT INTO Student(Age, First_Name, Last_Name) VALUES (21, 'Sucharitha' , 'Tyagi');
1 row inserted/updated/deleted

Możesz również wstawić dwa wiersze za pomocą jednej instrukcji w następujący sposób -

ij>INSERT INTO Student(Age, First_Name, Last_Name) VALUES (20, 'Amit',
'Bhattacharya'), (22, 'Rahul', 'Desai');
2 rows inserted/updated/deleted

Możesz zweryfikować zawartość tabeli za pomocą polecenia SELECT (omówimy to polecenie w dalszej części tego samouczka).

Składnia 3

Możesz użyć innego zapytania w instrukcji wstawiania jako -

INSERT INTO table_Name Query

Przykład

Załóżmy, że mamy tabelę o nazwie First_Year w bazie danych, jak pokazano poniżej, z podobnymi kolumnami jak w tabeli Studentów -

ID |AGE |FIRST_NAME |LAST_NAME
-----------------------------------------------------------------
1 |20 |Raju |Pendyala
2 |21 |Bhargav |Prayaga
3 |22 |Deepthi |Yerramilli

Możesz wstawić wartości z tej tabeli do tabeli uczniów, używając powyższej składni jako -

ij> INSERT INTO Student (Age, First_Name, Last_Name)
 SELECT Age, First_Name, Last_Name FROM First_Year;
> 3 rows inserted/updated/deleted

Po wykonaniu wszystkich powyższych instrukcji wstawiania tabela Studentów będzie wyglądać następująco -

ID |AGE |FIRST_NAME |LAST_NAME
-------------------------------------------------------------
1 |21 |Sucharitha |Tyagi
2 |20 |Amit |Bhattacharya
3 |22 |Rahul |Desai
4 |20 |Raju |Pendyala
5 |21 |Bhargav |Prayaga
6 |22 |Deepthi |Yerramilli

Wstaw dane za pomocą programu JDBC

W tej sekcji przedstawiono sposób wstawiania danych do tabeli w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"

Postępuj zgodnie z instrukcjami podanymi poniżej, aby wstawić dane do tabeli w Apache Derby -

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć, Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement or, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() i, prepareCall()odpowiednio. Utwórz dowolny z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute() do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników.

Plik executeUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery() do wyników, które zwracają dane itp. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak wstawiać dane do tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:SampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      //Executing the query
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      stmt.execute(query);
      System.out.println("Values inserted");
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Values inserted

Apache Derby - pobierz dane

Instrukcja SELECT służy do pobierania danych z tabeli. To zwraca dane w postaci tabeli znanej jako zestaw wyników.

Składnia

Poniżej znajduje się składnia instrukcji SELECT -

ij> SELECT column_name, column_name, ... FROM table_name;
Or,
Ij>SELECT * from table_name

Przykład

Załóżmy, że w bazie danych mamy tabelę o nazwie Pracownicy, jak pokazano poniżej -

ij> CREATE TABLE Employees (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   PRIMARY KEY (Id)
);
> > > > > > > 0 rows inserted/updated/deleted

I wstawiłem do niego cztery rekordy, jak pokazano poniżej -

ij> INSERT INTO Employees (Name, Salary, Location) VALUES
 ('Amit', 30000, 'Hyderabad'),
 ('Kalyan', 40000, 'Vishakhapatnam'),
 ('Renuka', 50000, 'Delhi'),
 ('Archana', 15000, 'Mumbai');
> > > > 4 rows inserted/updated/deleted

Następująca instrukcja SQL pobiera nazwiska, wiek i szczegóły wynagrodzenia wszystkich pracowników w tabeli;

ij> SELECT Id, Name, Salary FROM Employees;

Wynik tego zapytania to -

ID |NAME |SALARY
------------------------------------------------------------------------
1 |Amit |30000
2 |Kalyan |40000
3 |Renuka |50000
4 |Archana |15000
4 rows selected

Jeśli chcesz uzyskać wszystkie rekordy tej tabeli naraz, użyj * zamiast nazw kolumn.

ij> select * from Employees;

To da następujący wynik -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
4 rows selected

Pobierz dane za pomocą programu JDBC

W tej sekcji przedstawiono sposób pobierania danych z tabeli w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME; passw ord =PASSWORD"

Wykonaj czynności podane poniżej, aby pobrać dane z tabeli w Apache Derby -

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement lub, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() i, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery() do wyników, które zwracają dane itp. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak pobrać dane z tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

Plik executeQuery() metoda zwraca plik ResultSetobiekt, który przechowuje wynik instrukcji. Początkowo wskaźnik zestawu wyników będzie znajdował się na pierwszym rekordzie, możesz wydrukować zawartość obiektu ResultSet za pomocą jegonext() i getXXX() metody.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class RetrieveData {
   public static void main(String args[]) throws SQLException,
      ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      4Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT Id, Name, Salary FROM Employees";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println(" ");
      }
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe

Id: 1
Name: Amit
Salary: 30000

Id: 2
Name: Kalyan
Salary: 43000

Id: 3
Name: Renuka
Salary: 50000

Id: 4
Name: Archana
Salary: 15000

Id: 5
Name: Trupthi
Salary: 45000

Id: 6
Name: Suchatra
Salary: 33000

Id: 7
Name: Rahul
Salary: 39000

Apache Derby - aktualizacja danych

Instrukcja UPDATE służy do aktualizowania danych w tabeli. Apache Derby zapewnia dwa rodzaje aktualizacji (składnię), a mianowiciesearched aktualizacja i positioned aktualizacja.

Przeszukana instrukcja UPDATE aktualizuje wszystkie określone kolumny tabeli.

Składnia

Poniżej znajduje się składnia zapytania UPDATE -

ij> UPDATE table_name
 SET column_name = value, column_name = value, ...
 WHERE conditions;

W klauzuli WHERE można używać operatorów porównania, takich jak =,! =, <,>, <= I> =, a także operatorów BETWEEN i LIKE.

Przykład

Załóżmy, że masz w bazie danych tabelę Pracownik z 4 rekordami, jak pokazano poniżej -

ID |NAME |SALARY |LOCATION
----------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai

Poniższa instrukcja SQL UPDATE aktualizuje lokalizację i wynagrodzenie pracownika o imieniu Kaylan.

ij> UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE Name =
'Kalyan';
1 rows inserted/updated/deleted

Jeśli uzyskasz zawartość tabeli Pracownicy, możesz obserwować zmiany wprowadzone przez zapytanie UPDATE.

ij> select * from Employees;
ID |NAME |SALARY |LOCATION
----------------------------------------------------------
1 |Amit |30000 |Hyderabad 
2 |Kalyan |43000 |Chennai
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
4 rows selected

Zaktualizuj dane za pomocą programu JDBC

W tej sekcji wyjaśniono, jak zaktualizować istniejące rekordy tabeli w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME; passw ord =PASSWORD"

Postępuj zgodnie z instrukcjami podanymi poniżej, aby zaktualizować istniejące rekordy tabeli w Apache Derby.

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. Klasa Connection reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement or, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() i, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery()metoda zwraca dane. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak zaktualizować istniejące rekordy tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE
         Name = 'Kalyan'";
      int num = stmt.executeUpdate(query);
      System.out.println("Number of records updated are: "+num);
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Number of records updated are: 1

Apache Derby - Usuń dane

Instrukcja DELETE służy do usuwania wierszy tabeli. Podobnie jak instrukcja UPDATE, Apache Derby udostępnia dwa typy usuwania (składnia):searched usuń i positioned usunąć.

Wyszukana instrukcja delete usuwa wszystkie określone kolumny tabeli.

Składnia

Składnia instrukcji DELETE jest następująca -

ij> DELETE FROM table_name WHERE condition;

Przykład

Załóżmy, że mamy tabelę o nazwie pracownik z 5 rekordami, jak pokazano poniżej -

ID |NAME |SALARY |LOCATION
----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
5 |Trupti |45000 |Kochin
5 rows selected

Następująca instrukcja SQL DELETE usuwa rekord o nazwie Trupti.

ij> DELETE FROM Employees WHERE Name = 'Trupti';
1 row inserted/updated/deleted

Jeśli otrzymasz zawartość tabeli Pracownicy, zobaczysz tylko cztery rekordy, jak pokazano poniżej -

ID |NAME |SALARY |LOCATION
----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai 
4 rows selected

Aby usunąć wszystkie rekordy w tabeli, wykonaj to samo zapytanie bez klauzuli where.

ij> DELETE FROM Employees;
4 rows inserted/updated/deleted

Teraz, jeśli spróbujesz pobrać zawartość tabeli Pracownik, otrzymasz pustą tabelę, jak podano poniżej -

ij> select * from employees;
ID |NAME |SALARY |LOCATION
--------------------------------------------------------
0 rows selected

Usuń dane za pomocą programu JDBC

W tej sekcji wyjaśniono, jak usunąć istniejące rekordy tabeli w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD”.

Wykonaj czynności podane poniżej, aby usunąć istniejące rekordy tabeli w Apache Derby: / p>

Krok 1: Zarejestruj sterownik

Po pierwsze, musisz zarejestrować sterownik, aby komunikować się z bazą danych. PlikforName() metoda zajęć Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement or, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() and, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery()wyniki metody, która zwraca dane. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak usunąć istniejące rekordy tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DeleteData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();
      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupthi', 45000, 'Kochin')";
      //Executing the query
      String query = "DELETE FROM Employees WHERE Name = 'Trupthi'";
      int num = stmt.executeUpdate(query);
      System.out.println("Number of records deleted are: "+num);
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Number of records deleted are: 1

Apache Derby - Where Clause

Klauzula WHERE jest używana w instrukcjach SELECT, DELETE lub UPDATE do określenia wierszy, na których ma zostać wykonana operacja. Zwykle po tej klauzuli następuje warunek lub wyrażenie, które zwraca wartość logiczną. Operacje Select, delete lub update są wykonywane tylko na wierszach spełniających dany warunek.

ij> SELECT * from table_name WHERE condition;
or,
ij> DELETE from table_name WHERE condition;
or,
ij> UPDATE table_name SET column_name = value WHERE condition;

W klauzuli WHERE można używać operatorów porównania, takich jak =,! =, <,>, <= I> =, a także operatorów BETWEEN i LIKE.

Przykład

Załóżmy, że w bazie danych mamy tabelę o nazwie Pracownicy z 7 rekordami, jak pokazano poniżej -

ID |NAME |SALARY |LOCATION
-----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Pune
7 |Rahul |39000 |Lucknow

Następujące polecenie SQL DELETE pobiera rekordy pracowników, których wynagrodzenie przekracza 35000 -

ij> SELECT * FROM Employees WHERE Salary>35000;

Spowoduje to wygenerowanie następującego wyniku -

ID |NAME |SALARY |LOCATION 
---------------------------------------------------
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
5 |Trupthi |45000 |Kochin
7 |Rahul |39000 |Lucknow
4 rows selected

Podobnie możesz również usuwać i aktualizować rekordy za pomocą tej klauzuli.

Poniższy przykład aktualizuje lokalizację tych, których pensja jest mniejsza niż 30000.

ij> UPDATE Employees SET Location = 'Vijayawada' WHERE Salary<35000;
3 rows inserted/updated/deleted

Jeśli zweryfikujesz zawartość tabeli, możesz zobaczyć zaktualizowaną tabelę, jak pokazano poniżej -

ij> SELECT * FROM Employees;
ID |NAME |SALARY |LOCATION
------------------------------------------------------------------------------
1 |Amit |30000 |Vijayawada
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Vijayawada
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Vijayawada
7 |Rahul |39000 |Lucknow
7 rows selected

Przykład klauzuli Where JDBC

W tej sekcji przedstawiono sposób korzystania z klauzuli WHERE i wykonywania operacji CURD na tabeli w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME;passw ord =PASSWORD”.

Wykonaj poniższe czynności, aby użyć klauzuli WHERE i wykonać operacje CURD na tabeli w Apache Derby

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement lub, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() and, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery()wyniki metody, która zwraca dane. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak używać klauzuli WHERE i wykonywać operacje CURD na tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class WhereClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT * FROM Employees WHERE Salary>35000";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println("Location: "+rs.getString("Location"));
         System.out.println(" ");
      }
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Id: 2
Name: Kalyan
Salary: 43000
Location: Chennai

Id: 3
Name: Renuka
Salary: 50000
Location: Delhi

Id: 5
Name: Trupthi
Salary: 45000
Location: Kochin

Id: 7
Name: Rahul
Salary: 39000
Location: Lucknow

Apache Derby - klauzula GROUP BY

Klauzula GROUP BY jest używana z instrukcjami SELECT. Służy do tworzenia podzbiorów w przypadku identycznych danych. Zwykle po tej klauzuli występuje klauzula ORDER BY i umieszczana po klauzuli WHERE.

Składnia

Poniżej znajduje się składnia klauzuli GROUP BY -

ij>SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;

Przykład

Załóżmy, że w bazie danych mamy tabelę o nazwie Pracownicy z następującymi rekordami -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Rahul |39000 |Lucknow
3 |Renuka |50000 |Hyderabad
4 |Archana |15000 |Vishakhapatnam
5 |Kalyan |40000 |Hyderabad
6 |Trupthi |45000 |Vishakhapatnam
7 |Raghav |12000 |Lucknow
8 |Suchatra |33000 |Vishakhapatnam
9 |Rizwan |20000 |Lucknow

Poniższa instrukcja SELECT z klauzulą ​​GROUP BY grupuje tabelę na podstawie lokalizacji. Wyświetla całkowitą kwotę wynagrodzeń przyznanych pracownikom w danej lokalizacji.

ij> SELECT Location, SUM(Salary) from Employees GROUP BY Location;

Spowoduje to wygenerowanie następującego wyniku -

LOCATION |2
-------------------------------------------------------
Hyderabad |120000
Lucknow |71000
Vishakhapatnam |93000
3 rows selected

W ten sam sposób poniższe zapytanie znajdzie średnią kwotę wydaną na pracowników jako wynagrodzenie w danej lokalizacji.

ij> SELECT Location, AVG(Salary) from Employees GROUP BY Location;

Spowoduje to wygenerowanie następującego wyniku -

LOCATION |2
-----------------------------------------------------
Hyderabad |40000
Lucknow |23666
Vishakhapatnam |31000
3 rows selected

Przykład JDBC dla klauzuli Group By

W tej sekcji przedstawiono sposób korzystania z klauzuli Group By i wykonywania operacji CURD na tabeli w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"

Wykonaj poniższe czynności, aby użyć klauzuli Group By i wykonać operacje CURD na tabeli w Apache Derby

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement lub, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() and, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()służy do wykonywania zapytań, takich jak INSERT, UPDATE, DELETE. PlikexecuteQuery()metoda zwraca dane. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak używać Group Byklauzula i wykonaj operacje CURD na tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class GroupByClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      stmt.execute("CREATE TABLE EmployeesData( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))");
      stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) "
         + "VALUES ('Amit', 30000, 'Hyderabad'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Renuka', 50000, 'Hyderabad'), "
         + "('Archana', 15000, 'Vishakhapatnam'), "
         + "('Kalyan', 40000, 'Hyderabad'), "
         + "('Trupthi', 45000, 'Vishakhapatnam'), "
         + "('Raghav', 12000, 'Lucknow'), "
         + "('Suchatra', 33000, 'Vishakhapatnam'), "
         + "('Rizwan', 20000, 'Lucknow')");

      //Executing the query
      String query = "SELECT Location, SUM(Salary) from EmployeesData GROUP BY Location";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Location: "+rs.getString(1));
         System.out.println("Sum of salary: "+rs.getString(2));
         System.out.println(" ");
      }
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000

Apache Derby - Order By Clause

Klauzula ORDER BY służy do uporządkowania zawartości zestawu wyników w kolejności użycia słów kluczowych, ASC reprezentuje porządek rosnący, a DESC reprezentuje porządek malejący. Jeśli nie wymienisz żadnego z nich, zawartość zostanie domyślnie ułożona w kolejności rosnącej.

Składnia

Poniżej znajduje się składnia klauzuli ORDER BY -

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

Przykład

Załóżmy, że w bazie danych mamy tabelę o nazwie Pracownicy z następującymi rekordami -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------------------
1 |Amit |30000 |Vijayawada
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Vijayawada
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Vijayawada
7 |Rahul |39000 |Lucknow

Następujące zapytanie porządkuje zawartość tabeli w porządku rosnącym na podstawie nazwy pracownika.

ij> SELECT * FROM Employees ORDER BY Name;

Spowoduje to wygenerowanie następującego wyniku -

ID |NAME |SALARY |LOCATION
---------------------------------------------------------------
1 |Amit |30000 |Hyderabad
4 |Archana |15000 |Mumbai
2 |Kalyan |40000 |Vishakhapatnam 
7 |Rahul |39000 |Lucknow
3 |Renuka |50000 |Delhi
6 |Suchatra |33000 |Pune
5 |Trupthi |45000 |Kochin
7 rows selected

Podobnie, poniższe zapytanie porządkuje zawartość tabeli w porządku malejącym na podstawie wynagrodzenia Pracownika -

ij> SELECT * FROM Employees ORDER BY Salary DESC;

Spowoduje to wygenerowanie następującego wyniku -

ID |NAME |SALARY |LOCATION
---------------------------------------------------------------
3 |Renuka |50000 |Delhi
5 |Trupthi |45000 |Kochin
2 |Kalyan |40000 |Vishakhapatnam
7 |Rahul |39000 |Lucknow
6 |Suchatra |33000 |Pune
1 |Amit |30000 |Hyderabad
4 |Archana |15000 |Mumbai
7 rows selected

Sortowanie danych za pomocą programu JDBC

W tej sekcji przedstawiono sposób sortowania zawartości tabeli w Derby za pomocą JDBC. Możesz uporządkować rekordy za pomocą klauzuli ORDER BY i słów kluczowych ASC (oznaczających porządek rosnący) i DSC (oznaczających porządek malejący).

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD”.

Wykonaj kroki podane poniżej, aby posortować rekordy tabeli w Apache Derby -

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć Classakceptuje wartość String reprezentującą nazwę klasy, ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. Plik Connectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołując getConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement lub, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() and, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery()metoda zwraca dane. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak sortować rekordy tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SortData {
   public static void main(String args[]) throws SQLException, ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:SampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT Location, SUM(Salary) " + "from Employees GROUP BY Location";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Salary: "+rs.getString(1));
         System.out.println("Location: "+rs.getString(2));
         System.out.println(" ");
      }
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Salary: Chennai
Location: 43000

Salary: Delhi
Location: 50000

Salary: Hyderabad
Location: 30000

Salary: Kochin
Location: 45000

Salary: Lucknow
Location: 39000

Salary: Mumbai
Location: 15000

Salary: Pune
Location: 33000

Apache Derby - posiadanie klauzuli

Klauzula HAVING umożliwia określenie warunków filtrujących wyniki grup, które pojawiają się w wynikach.

Klauzula WHERE umieszcza warunki w wybranych kolumnach, podczas gdy klauzula HAVING nakłada warunki na grupy utworzone przez klauzulę GROUP BY.

Składnia

Poniżej znajduje się składnia klauzuli HAVING -

ij> SELECT column1, column2 . . . from table_name GROUP BY column having
condition;

Przykład

Załóżmy, że mamy w bazie danych tabelę o nazwie Pracownicy z 13 rekordami, jak pokazano poniżej -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Rahul |39000 |Lucknow
3 |Kalyan |40000 |Vishakhapatnam
4 |Renuka |50000 |Hyderabad
5 |Archana |15000 |Vishakhapatnam
6 |Krishna |40000 |Hyderabad
7 |Trupthi |45000 |Vishakhapatnam
8 |Raghav |12000 |Lucknow
9 |Radha |50000 |Delhi
10 |Anirudh |15000 |Mumbai
11 |Tara |45000 |Kochin
12 |Sucharita |44000 |Kochin
13 |Rizwan |20000 |Lucknow

Poniższe zapytanie wyświetla maksymalne pensje pracowników w lokalizacji zatrudniającej co najmniej 3 pracowników -

ij> SELECT Location, MAX(Salary) from Employees GROUP BY Location having
count(Location)>=3;

To generuje następujące dane wyjściowe -

LOCATION |2
------------------------------------------------------------
Hyderabad |50000
Lucknow |39000
Vishakhapatnam |45000
3 rows selected

Sortowanie danych za pomocą programu JDBC

W tej sekcji opisano, jak używać klauzuli posiadającej w bazie danych Apache Derby za pomocą aplikacji JDBC.

Jeśli chcesz zażądać serwera sieciowego Derby za pomocą klienta sieciowego, upewnij się, że serwer jest uruchomiony i działa. Nazwa klasy sterownika klienta sieci to org.apache.derby.jdbc.ClientDriver, a adres URL to jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"

Wykonaj czynności podane poniżej, aby posortować rekordy tabeli w Apache Derby

Krok 1: Zarejestruj sterownik

Aby komunikować się z bazą danych, należy przede wszystkim zarejestrować sterownik. PlikforName() metoda zajęć Classakceptuje wartość String reprezentującą nazwę klasy i ładuje ją do pamięci, która automatycznie ją rejestruje. Zarejestruj sterownik za pomocą tej metody.

Krok 2: Uzyskaj połączenie

Ogólnie rzecz biorąc, pierwszym krokiem, jaki robimy, aby komunikować się z bazą danych, jest połączenie się z nią. PlikConnectionklasa reprezentuje fizyczne połączenie z serwerem bazy danych. Możesz utworzyć obiekt połączenia, wywołującgetConnection() metoda DriverManagerklasa. Utwórz połączenie za pomocą tej metody.

Krok 3: Utwórz obiekt instrukcji

Musisz utworzyć plik Statement lub PreparedStatement or, CallableStatementobiekty do wysyłania instrukcji SQL do bazy danych. Możesz je utworzyć za pomocą metodcreateStatement(), prepareStatement() and, prepareCall()odpowiednio. Utwórz jeden z tych obiektów przy użyciu odpowiedniej metody.

Krok 4: Wykonaj zapytanie

Po utworzeniu instrukcji musisz ją wykonać. PlikStatement zapewnia różne metody wykonywania zapytania, takie jak execute()do wykonania instrukcji, która zwraca więcej niż jeden zestaw wyników. PlikexecuteUpdate()metoda wykonuje zapytania, takie jak INSERT, UPDATE, DELETE. PlikexecuteQuery()metoda zwraca dane. Użyj jednej z tych metod i wykonaj instrukcję utworzoną wcześniej.

Przykład

Poniższy przykład JDBC pokazuje, jak używać klauzuli Group By i wykonywać operacje CURD na tabeli w Apache Derby za pomocą programu JDBC. Tutaj łączymy się z bazą danych o nazwie sampleDB (utworzymy, jeśli nie istnieje) za pomocą wbudowanego sterownika.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class HavingClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      stmt.execute("CREATE TABLE EmployeesData( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))");
      stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) "
         + "VALUES ('Amit', 30000, 'Hyderabad'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Renuka', 50000, 'Hyderabad'), "
         + "('Archana', 15000, 'Vishakhapatnam'), "
         + "('Kalyan', 40000, 'Hyderabad'), "
         + "('Trupthi', 45000, 'Vishakhapatnam'), "
         + "('Raghav', 12000, 'Lucknow'), "
         + "('Suchatra', 33000, 'Vishakhapatnam'), "
         + "('Rizwan', 20000, 'Lucknow')");
      //Executing the query
      String query = "SELECT Location, MAX(Salary) "
         + "from EmployeesData GROUP BY Location having "
         + "count(Location)>=3";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println(rs.getString(1));
         System.out.println(rs.getString(2));
         System.out.println(" ");
      }
   }
}

Wynik

Wykonując powyższy program, otrzymasz następujące dane wyjściowe -

Hyderabad
50000

Lucknow
39000

Vishakhapatnam
45000

Apache Derby - instrukcja Alter Table

Instrukcja ALTER TABLE umożliwia zmianę istniejącej tabeli. Korzystając z tego, możesz wykonać następujące czynności -

  • Dodaj kolumnę, dodaj wiązanie

  • Upuść kolumnę, upuść ograniczenie

  • Zmień blokowanie tabeli na poziomie wiersza

Załóżmy, że utworzyliśmy tabelę o nazwie Pracownicy, jak pokazano poniżej -

ij> CREATE TABLE Employees (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   PRIMARY KEY (Id)
);

I wstawiłem cztery rekordy, używając instrukcji wstawiania jako -

ij> INSERT INTO Employees (Name, Salary, Location) VALUES
 ('Amit', 30000, 'Hyderabad'),
 ('Kalyan', 40000, 'Vishakhapatnam'),
 ('Renuka', 50000, 'Delhi'),
 ('Archana', 15000, 'Mumbai');

Dodawanie kolumny do tabeli

Poniżej przedstawiono składnię dodawania kolumny do tabeli za pomocą instrukcji ALTER.

ALTER TABLE table_name ADD COLUMN column_name column_type;

Przykład

Używając instrukcji ALTER, próbujemy dodać nową kolumnę o nazwie Age z typem integer.

ALTER TABLE Employees ADD COLUMN Age INT;
0 rows inserted/updated/deleted

Dodaj kolejną kolumnę o nazwie Phone_No i wpisz liczbę całkowitą.

ALTER TABLE Employees ADD COLUMN Phone_No BIGINT;
0 rows inserted/updated/deleted

Polecenie DESCRIBE opisuje określoną tabelę, wyświetlając kolumny i ich szczegóły, jeśli tabela istnieje. Jeśli OPISUJESZ, w tabeli Pracownicy możesz obserwować nowo dodane kolumny, jak pokazano poniżej -

ij> DESCRIBE Employees;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
SALARY |INTEGER |0 |10 |10 |NULL |NULL |NO
LOCATION |VARCHAR |NULL|NULL|255 |NULL |510 |YES
AGE |INTEGER |0 |10 |10 |NULL |NULL |YES
PHONE_NO |INTEGER |0 |10 |10 |NULL |NULL |YES
6 rows selected

Dodanie ograniczenia do tabeli

Poniżej znajduje się składnia dodawania ograniczenia do kolumny tabeli za pomocą instrukcji ALTER.

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

Gdzie constraint może mieć wartość NOT NULL, NULL, PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK.

Przykład

Używając instrukcji ALTER, próbujemy dodać ograniczenie UNIQUE do kolumny Phone_No.

ij> ALTER TABLE Employees ADD CONSTRAINT New_Constraint UNIQUE(Phone_No);
0 rows inserted/updated/deleted

Po dodaniu ograniczenia UNIQUE do kolumny nie może ono mieć tych samych wartości w dwóch wierszach, tj. Numer telefonu powinien być niepowtarzalny dla każdego pracownika.

Jeśli spróbujesz dodać dwie kolumny z tym samym numerem telefonu, pojawi się wyjątek, jak pokazano poniżej.

ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Amit', 30000, 'Hyderabad', 30, 9848022338);
1 row inserted/updated/deleted
ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Sumit', 35000, 'Chennai', 25, 9848022338);
ERROR 23505: The statement was aborted because it would have caused a duplicate
key value in a unique or primary key constraint or unique index identified by
'NEW_CONSTRAINT' defined on 'EMPLOYEES'.

Usunięcie ograniczenia z tabeli

Poniżej znajduje się składnia usuwania ograniczenia kolumny -

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Przykład

Następujące zapytanie usuwa nazwę ograniczenia New_Constraint w kolumnie Phone_No utworzonej powyżej.

ij> ALTER TABLE Employees DROP CONSTRAINT New_Constraint;
0 rows inserted/updated/deleted

Ponieważ usunęliśmy ograniczenie UNIQUE w kolumnie Phone_No, możesz dodać kolumny z tym samym numerem telefonu.

ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Sumit', 35000, 'Chennai', 25, 9848022338);
1 row inserted/updated/deleted

Możesz zweryfikować zawartość tabeli ij> wybierz * z Pracowników w następujący sposób -

ID |NAME |SALARY |LOCATION |AGE |PHONE_NO
-------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad |30 |9848022338
2 |Sumit |35000 |Chennai |25 |9848022338
2 rows selected

Upuszczenie kolumny z tabeli

Poniżej znajduje się składnia usuwania kolumny z kolumny.

ALTER TABLE table_name DROP COLUMN column_name;

Przykład

Poniższe zapytanie usuwa kolumnę o nazwie age of the employee -

ij> ALTER TABLE Employees DROP COLUMN Age;
0 rows inserted/updated/deleted

Jeśli opiszesz tabelę, zobaczysz tylko 4 kolumny.

ij> DESCRIBE Employees;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
SALARY |INTEGER |0 |10 |10 |NULL |NULL |NO
LOCATION |VARCHAR |NULL|NULL|255 |NULL |510 |YES
PHONE_NO |BIGINT |0 |10 |19 |NULL |NULL |YES

Zmiana tabeli za pomocą programu JDBC

Poniżej znajduje się program JDBC do zmiany tabeli za pomocą zapytania ALTER -

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class AlterTableExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Executing the query
      String createQuery = "CREATE TABLE Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";

      stmt.execute(createQuery);
      System.out.println("Table created");
      System.out.println(" ");

      //Executing the query
      String insertQuery = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupti', 45000, 'Kochin')";

      stmt.execute(insertQuery);
      System.out.println("Values inserted");
      System.out.println(" ");

      //Executing the query
      String selectQuery = "SELECT * FROM Employees";
      ResultSet rs = stmt.executeQuery(selectQuery);
      System.out.println("Contents of the table after inserting the table");
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println("Location: "+rs.getString("Location"));
      }
      System.out.println(" ");

      //Altering the table
      stmt.execute("ALTER TABLE Employees ADD COLUMN Age INT");
      stmt.execute("ALTER TABLE Employees ADD COLUMN Phone_No BigINT");
      stmt.execute("ALTER TABLE Employees " + "ADD CONSTRAINT New_Constraint UNIQUE(Phone_No)");

      stmt.execute("INSERT INTO Employees "
         + "(Name, Salary, Location, Age, Phone_No) "
         + "VALUES ('Amit', 30000, 'Hyderabad', 30, 9848022338)");
      ResultSet alterResult = stmt.executeQuery("Select * from Employees");
      System.out.println("Contents of the table after altering "
         + "the table and inserting values to it: ");
      while(alterResult.next()) {
         System.out.println("Id: "+alterResult.getString("Id"));
         System.out.println("Name: "+alterResult.getString("Name"));
         System.out.println("Salary: "+alterResult.getString("Salary"));
         System.out.println("Location: "+alterResult.getString("Location"));
         System.out.println("Age: "+alterResult.getString("Age"));
         System.out.println("Phone_No: "+alterResult.getString("Phone_No"));
      }
   }
}

Wynik

Po wykonaniu powyższego programu wygenerowane zostaną następujące dane wyjściowe -

Table created

Values inserted

Contents of the table after inserting the table
Id: 1
Name: Amit
Salary: 30000
Location: Hyderabad
Id: 2
Name: Kalyan
Salary: 40000
Location: Vishakhapatnam
Id: 3
Name: Renuka
Salary: 50000
Location: Delhi
Id: 4
Name: Archana
Salary: 15000
Location: Mumbai
Id: 5
Name: Trupti
Salary: 45000
Location: Kochin

Contents of the table after altering the table and inserting values to it:
Id: 1
Name: Amit
Salary: 30000
Location: Hyderabad
Age: null
Phone_No: null
Id: 2
Name: Kalyan
Salary: 40000
Location: Vishakhapatnam
Age: null
Phone_No: null
Id: 3
Name: Renuka
Salary: 50000
Location: Delhi
Age: null
Phone_No: null
Id: 4
Name: Archana
Salary: 15000
Location: Mumbai
Age: null
Phone_No: null
Id: 5
Name: Trupti
Salary: 45000
Location: Kochin
Age: null
Phone_No: null
Id: 6
Name: Amit
Salary: 30000
Location: Hyderabad
Age: 30
Phone_No: 9848022338

Apache Derby - indeksy Derby

Indeks w tabeli to nic innego jak wskaźnik do swoich danych. Służą one do przyspieszenia pobierania danych z tabeli.

Jeśli używamy indeksów, instrukcje INSERT i UPDATE są wykonywane w wolniejszej fazie. Podczas gdy SELECT i WHERE są wykonywane w krótszym czasie.

Tworzenie indeksu

Instrukcja CREATE INDEX służy do tworzenia nowego indeksu w tabeli w bazie danych Derby.

Składnia

Poniżej znajduje się składnia instrukcji CREATE INDEX -

CTREATE INDEX index_name on table_name (column_name);

Przykład

Załóżmy, że utworzyliśmy tabelę o nazwie Pracownicy w Apache Derby, jak pokazano poniżej.

CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);

Poniższa instrukcja SQL tworzy indeks w kolumnie o nazwie Salary w tabeli Employees.

ij> CREATE INDEX example_index on Emp (Salary);
0 rows inserted/updated/deleted

Tworzenie UNIQUE indeksu

W Apache Derby indeksy UNIQUE są używane do integracji danych. Po utworzeniu indeksu UNIQUE w kolumnie w tabeli nie zezwala on na zduplikowane wartości.

Składnia

Poniżej przedstawiono składnię tworzenia unikalnego indeksu.

CREATE UNIQUE INDEX index_name on table_name (column_name);

Przykład

Poniższy przykład tworzy UNIQUE indeks w kolumnie Id tabeli Employee.

ij> CREATE UNIQUE INDEX unique_index on Emp (Phone_Number);
0 rows inserted/updated/deleted

Po utworzeniu unikatowego indeksu w kolumnie nie można wprowadzić tych samych wartości dla tej kolumny w innym wierszu. Krótko mówiąc, kolumna, która ma indeks UNIQE, nie pozwoli na zduplikowane wartości.

Wstaw wiersz w tabeli Emp, jak pokazano poniżej

ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Amit',
45000, 'Hyderabad', 9848022338);
1 row inserted/updated/deleted

Ponieważ stworzyliśmy unikalny indeks w kolumnie Phone_No, jeśli wpiszesz tę samą wartość, co w poprzednim rekordzie, wyświetli się błąd.

ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Sumit',
35000, 'Chennai', 9848022338);
ERROR 23505: The statement was aborted because it would have caused a duplicate
key value in a unique or primary key constraint or unique index identified by
'UNIQUE_INDEX' defined on 'EMP'.

Tworzenie indeksu COMPOSITE

Możesz utworzyć pojedynczy indeks w dwóch wierszach i nazywa się to indeksem złożonym.

Składnia

Poniżej znajduje się składnia indeksu złożonego.

CREATE INDEX index_name on table_name (column_name1, column_name2);

Przykład

Poniższy indeks tworzy indeks złożony dla kolumn Nazwa i Lokalizacja.

ij> CREATE INDEX composite_index on Emp (Name, Location);
0 rows inserted/updated/deleted

Wyświetlanie indeksów

Zapytanie SHOW INDEXES wyświetla listę indeksów w tabeli.

Składnia

Poniżej znajduje się składnia instrukcji SHOW INDEXES -

SHOW INDEXES FROM table_name;

Przykład

Poniższy przykład i wyświetla indeksy w tabeli Pracownicy.

ij> SHOW INDEXES FROM Emp;

Daje to następujący wynik.

ij> SHOW INDEXES FROM Emp;
TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES
----------------------------------------------------------------------------
EMP |PHONE_NUMBER |false |3 |A |NULL |NULL
EMP |NAME |true |3 |A |NULL |NULL
EMP |LOCATION |true |3 |A |NULL |NULL
EMP |SALARY |true |3 |A |NULL |NULL
4 rows selected

Upuszczanie indeksów

Instrukcja Drop Index usuwa / upuszcza podany indeks w kolumnie.

Składnia

Poniżej znajduje się składnia instrukcji DROP INDEX.

DROP INDEX index_name;

Przykład

Poniższy przykład usuwa indeksy o nazwach composite_index i unique_index utworzone powyżej.

ij> DROP INDEX composite_index;
0 rows inserted/updated/deleted
ij>Drop INDEX unique_index;
0 rows inserted/updated/deleted

Teraz, jeśli zweryfikujesz listę indeksów, możesz zobaczyć indeks w jednej kolumnie, ponieważ usunęliśmy pozostałe.

ij> SHOW INDEXES FROM Emp;
TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES
----------------------------------------------------------------------------
EMP |SALARY |true |3 |A |NULL |NULL
1 row selected

Obsługa indeksów za pomocą programu JDBC

Poniższy program JDBC pokazuje, jak tworzyć indeksy upuszczania dla kolumny w tabeli.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class IndexesExample {
   public static void main(String args[]) throws Exception {

      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:MYDATABASE;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating the Emp table
      String createQuery = "CREATE TABLE Emp( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "Phone_Number BIGINT )";
      stmt.execute(createQuery);
      System.out.println("Table created");
      System.out.println(" ");

      //Creating an Index on the column Salary
      stmt.execute("CREATE INDEX example_index on Emp (Salary)");
      System.out.println("Index example_index inserted");
      System.out.println(" ");

      //Creating an Unique index on the column Phone_Number
      stmt.execute("CREATE UNIQUE INDEX unique_index on Emp (Phone_Number)");
      System.out.println("Index unique_index inserted");
      System.out.println(" ");

      //Creating a Composite Index on the columns Name and Location
      stmt.execute("CREATE INDEX composite_index on Emp (Name, Location)");
      System.out.println("Index composite_index inserted");
      System.out.println(" ");

      //listing all the indexes
      System.out.println("Listing all the columns with indexes");

      //Dropping indexes
      System.out.println("Dropping indexes unique_index and, composite_index ");
      stmt.execute("Drop INDEX unique_index");
      stmt.execute("DROP INDEX composite_index");
   }
}

Wynik

Podczas wykonywania generuje następujący wynik

Table created
Index example_index inserted

Index unique_index inserted

Index composite_index inserted

Listing all the columns with indexes
Dropping indexes unique_index and, composite_index

Apache Derby - procedury

W tym rozdziale dowiesz się, jak tworzyć i upuszczać procedury w Derby.

Tworzenie procedury

Procedurę można utworzyć za pomocą instrukcji CREATE PROCEDURE.

Składnia

Poniżej znajduje się składnia instrukcji CREATE PROCEDURE.

CREATE PROCEDURE procedure_name (parameter_type parameter_name1, parameter_type
parameter_name2 . . . .) parameter_style;

Przykład

Załóżmy, że utworzyliśmy tabelę w Derby, jak pokazano poniżej.

CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);

I wstawiłem do niego wartości w następujący sposób -

INSERT INTO Employees(Name, Salary, Location) VALUES
('Amit', 30000, 'Hyderabad'),
('Kalyan', 40000, 'Vishakhapatnam'),
('Renuka', 50000, 'Delhi'),
('Archana', 15000, 'Mumbai'),
('Trupthi', 45000, 'Kochin')";

Poniższy przykład tworzy procedurę o nazwie Update_Procedure, która akceptuje parametry JAVA.

ij> CREATE PROCEDURE Update_Procedure(IN id INTEGER, IN name VARCHAR(10))
PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME
'ProcedureExample.testProc';
> 0 rows inserted/updated/deleted

Gdzie klasa ProcedureExample wygląda następująco -

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class ProcedureExample {
   public static void testProc(int salary, String name) throws Exception {
      String connectionURL = "jdbc:derby:MYDATABASE;create=true";
      Connection conn = DriverManager.getConnection(connectionURL);
      String query = "UPDATE Employees SET SALARY = ? WHERE NAME = ?";
      PreparedStatement pstmt = conn.prepareStatement(query);
      pstmt.setInt(1, salary);
      pstmt.setString (2, name);
      pstmt.executeUpdate();
   }
}

Możesz sprawdzić listę procedur za pomocą SHOW PROCEDURES pytanie.

ij> SHOW PROCEDURES;
PROCEDURE_SCHEM |PROCEDURE_NAME |REMARKS
------------------------------------------------------------------------
APP |UPDATE_PROCEDURE |ProcedureExample.te&
SALES |EXAMPLE_ PROCEDURE |com.example.sales.c&
SQLJ |INSTALL_JAR |org.apache.derby.ca&
SQLJ |REMOVE_JAR |org.apache.derby.ca&
SQLJ |REPLACE_JAR |org.apache.derby.ca&
SYSCS_UTIL |SYSCS_BACKUP_DATABASE |org.apache.derby.ca&
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Tutaj możesz obserwować nowo utworzoną procedurę.

Porzucenie procedury

Procedurę można usunąć za pomocą instrukcji DROP PROCEDURE.

Składnia

Poniżej znajduje się składnia instrukcji DROP PROCEDURE.

DROP PROCEDURE procedure_name;

Przykład

Poniższy przykład porzuca procedurę o nazwie Update_Procedure utworzoną powyżej.

ij> DROP PROCEDURE Update_Procedure;
> 0 rows inserted/updated/deleted

Apache Derby - Schematy

Schemat bazy danych to szkieletowa struktura reprezentująca logiczny widok całej bazy danych. Definiuje sposób organizacji danych i powiązania między nimi relacji. Formułuje wszystkie ograniczenia, które mają być zastosowane do danych.

Tworzenie schematu

Schemat można utworzyć w Apache Derby za pomocą instrukcji CREATE SCHEMA.

Składnia

Poniżej znajduje się składnia instrukcji CREATE SCHEMA.

CREATE SCHEMA schema_name AUTHORIZATION id

Przykład

Poniższy przykład tworzy schemat o nazwie my_schema w bazie danych Derby.

ij> CREATE SCHEMA AUTHORIZATION my_schema;
0 rows inserted/updated/deleted

Następnie możesz utworzyć tabelę w tym schemacie, jak pokazano poniżej.

ij> CREATE TABLE my_schema.Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);
> > > > > 0 rows inserted/updated/deleted

Listę schematów możesz zweryfikować za pomocą zapytania POKAŻ SCHEMATY tutaj znajduje się lista utworzonych schematów.

ij> show schemas;
TABLE_SCHEM
------------------------------
APP
MY_SCHEMA
NULLID
SQLJ
SYS
SYSCAT
SYSCS_DIAG
SYSCS_UTIL
SYSFUN
SYSIBM
SYSPROC
SYSSTAT
12 rows selected

Upuszczanie schematu

Możesz usunąć istniejący schemat za pomocą instrukcji DROP SCHEMA.

Składnia

Poniżej znajduje się składnia instrukcji DROPS SCHEMA.

DROP SCHEMA my_schema RESTRICT;

Przykład

Schemat można usunąć tylko wtedy, gdy nie ma w nim żadnych obiektów. Aby usunąć schemat, usuń wszystkie znajdujące się w nim tabele i usuń schemat.

ij> DROP TABLE my_schema.Emp;
0 rows inserted/updated/deleted

Poniższy przykład usuwa powyższy utworzony schemat.

ij> DROP SCHEMA my_schema RESTRICT;
0 rows inserted/updated/deleted

Przykład JDBC

Poniższy przykład JDBC tworzy i usuwa schemat o nazwie my_schema.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateSchemaExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      stmt.execute("CREATE SCHEMA AUTHORIZATION my_schema");
      //Executing the query
      String query = "CREATE TABLE my_schema.Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      stmt.execute(query);
      System.out.println("Table created in schema");
      stmt.execute("DROP TABLE my_schema.Employees");
      stmt.execute("DROP SCHEMA my_schema RESTRICT");
      System.out.println("Schema dropped");
   }
}

Wynik

Podczas wykonywania powyższy program generuje następujący przykład.

Table created in schema
Schema dropped

Apache Derby - wyzwalacze

W bazach danych wyzwalacze to instrukcje / kod, który jest wykonywany za każdym razem, gdy wystąpi zdarzenie. Po utworzeniu wyzwalacza dla określonego zdarzenia w tabeli kod określony w wyzwalaczu jest wykonywany za każdym razem, gdy wystąpi zdarzenie. W jednej tabeli można utworzyć wiele wyzwalaczy.

W tym rozdziale dowiesz się, jak tworzyć i usuwać wyzwalacze za pomocą Apache Derby.

Tworzenie wyzwalacza

Możesz utworzyć wyzwalacz w Derby za pomocą instrukcji CREATE TRIGGER.

Składnia

Poniżej znajduje się składnia zapytania CREATE TRIGGER.

CREATE TRIGGER trigger_name
{ NO CASCADE BEFORE | AFTER }
{INSERT [OR] | UPDATE [OR] | DELETE}[OF col_name]
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
Statement

Przykład

Załóżmy, że utworzyliśmy tabelę o nazwie Emp in Derby, jak pokazano poniżej.

CREATE TABLE Emp (
   Id INT NOT NULL,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255) );

I wstawiłem w nim 5 wierszy.

INSERT INTO Emp(Id, Name, Salary, Location) VALUES
(1, 'Amit', 30000, 'Hyderabad'), (2, 'Kalyan', 40000, 'Vishakhapatnam'),
(3,'Renuka', 50000, 'Delhi'), (4, 'Archana', 15000, 'Mumbai'), (5, 'Trupthi',
45000, 'Kochin');

Jeśli mamy inną tabelę o nazwie BackUp i naszym zamiarem jest przechowywanie w niej usuniętych wierszy z tabeli Emp.

CREATE TABLE BackUp (
   Id INT NOT NULL,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255)
);

Następujące zapytanie tworzy wyzwalacz w tabeli zapytań DELETE o nazwie Emp. Przechowuje usunięte wierszeEmp do tabeli Backup.

ij> CREATE TRIGGER my_trigger
AFTER DELETE ON Emp
REFERENCING OLD AS oldRow
FOR EACH ROW MODE DB2SQL
INSERT INTO BackUp
VALUES (oldRow.Id, oldRow.Name, oldRow.Salary, oldRow.Location);

Teraz usuń wiersz z tabeli Emp jako -

ij> Delete From Emp where Name = 'Kalyan';
1 row inserted/updated/deleted
ij> Delete From Emp where Name = 'Amit';
1 row inserted/updated/deleted

Jeśli zweryfikujesz tabelę BackUp, możesz obserwować usunięte w niej wiersze.

ij> select * from BackUp;
ID |NAME |SALARY |LOCATION
-------------------------------------------------------------------------
2 |Kalyan |40000 |Vishakhapatnam
1 |Amit |30000 |Hyderabad

2 rows selected

Usuwanie wyzwalacza

Możesz usunąć wyzwalacz w Derby za pomocą instrukcji DROP TRIGGER.

Składnia

Poniżej znajduje się składnia zapytania DROP TRIGGER -

ij> Drop trigger tigger_name;

Przykład

Poniższy przykład usuwa wyzwalacz my_trigger utworzony powyżej -

ij> Drop trigger my_trigger;
0 rows inserted/updated/deleted

Przykład JDBC

Poniższy program JDBC tworzy i usuwa wyzwalacze w Derby.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Triggers_Example {
   public static void main(String args[]) throws SQLException, ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:TestDataBase;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating the Emp table
      stmt.execute("CREATE TABLE Emp ( "
         + "Id INT NOT NULL, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255))");

      //Insert values in to the EMp table
      String query = "INSERT INTO Emp(Id, Name, Salary, Location) VALUES \r\n"
         +"(1, 'Amit', 30000, 'Hyderabad'), "
         + "(2, 'Kalyan', 40000, 'Vishakhapatnam'), "
         + "(3,'Renuka', 50000, 'Delhi'), "
         + "(4, 'Archana', 15000, 'Mumbai'), "
         + "(5, 'Trupthi', 45000, 'Kochin')";
         stmt.execute(query);

      //Creating the BackUp table
      stmt.execute("CREATE TABLE BackUp ( "
         + "Id INT NOT NULL, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255))");

      //Creating a trigger
      String createTrigger = "CREATE TRIGGER my_trigger "
         + "AFTER DELETE ON Emp "
         + "REFERENCING OLD AS oldRow "
         + "FOR EACH ROW MODE DB2SQL "
         + "INSERT INTO BackUp "
         + "VALUES (oldRow.Id, oldRow.Name, oldRow.Salary, oldRow.Location)";
      stmt.execute(createTrigger);
      System.out.println("Trigger created");

      //Deleting records from Emp table
      stmt.executeUpdate("Delete From Emp where Name = 'Kalyan'");
      stmt.executeUpdate("Delete From Emp where Name = 'Amit'");
      //Getting the contents of BackUp table
      ResultSet rs = stmt.executeQuery("SELECT * from BackUp");
      while(rs.next()){
         System.out.println(rs.getInt("Id"));
         System.out.println(rs.getString("Name"));
         System.out.println(rs.getString("Salary"));
         System.out.println(rs.getString("Location"));
         System.out.println(" ");
      }
   }
}

Wynik

Podczas wykonywania powyższego programu generowane są następujące dane wyjściowe -

Trigger created
2
Kalyan
40000
Vishakhapatnam
1
Amit
30000
Hyderabad