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