|
dbms_stats Sql
|
|||
---|---|---|---|
#18+
Речь идет об использовании пакета DBMS_STATS. /* DROP TABLE zamowienie cascade constraints; DROP TABLE zamowienie_detale cascade constraints; DROP TABLE klient cascade constraints; DROP TABLE produkt cascade constraints; DROP TABLE adres cascade constraints; DROP TABLE metody_dostawy cascade constraints; DROP TABLE faktura cascade constraints; DROP TABLE faktura_specyfikacja cascade constraints; INSERT INTO zamowienie (STATUS) VALUES ('Anulowane') */ create table zamowienie( ID number generated by default on null as identity, ID_KLIENTA number, DATA_ZAMOWIENIA date, --default sysdate not null SUMA_ZAMOWIENIA number, CZY_OPLACONE number, -- za?o?y? constraint CHECK (1, 0) STATUS varchar2(50), -- za?o?y? constraint CHECK ('Przyj?te', 'W trakcie', 'Wyslane', 'Anulowane', 'Zako?czone') ID_ADRESU number, ID_METODA_DOSTAWY number, NUMER_LISTU_PRZEWOZOWEGO varchar2(255), UWAGI varchar2(4000), PRIMARY KEY(ID) ); ALTER TABLE zamowienie ADD CONSTRAINT cst_status CHECK ( STATUS IN ('Przyjete', 'W trakcie', 'Wyslane', 'Anulowane', 'Zakaczone')); ALTER TABLE zamowienie ADD CONSTRAINT cst_oplata CHECK (CZY_OPLACONE=1 OR CZY_OPLACONE=0); / create table zamowienie_detale( ID number generated by default on null as identity, ID_ZAMOWIENIA number, ID_PRODUKT number, ILOSC number NOT NULL, CENA_JEDNOSTKOWA number, PRIMARY KEY(ID) ); / create table produkt( ID number generated by default on null as identity, NAZWA varchar2(255) NOT NULL, CENA_JEDNOSTKOWA number NOT NULL, PRIMARY KEY(ID) ); / create table klient( ID number generated by default on null as identity, NAZWA varchar2(500) NOT NULL, DOMYSLNY_ADRES_ID number, NUMER_TELEFONU varchar2(50), EMAIL varchar2(150), NIP varchar2(20), PRIMARY KEY(ID) ); / create table adres( ID number generated by default on null as identity, ULICA varchar2(255), MIASTO varchar2(255), KRAJ varchar2(255), KOD_POCZTOWY varchar2(50), PRIMARY KEY(ID) ); / create table metody_dostawy( ID number generated by default on null as identity, NAZWA varchar2(255), --Kurier DPD, Paczkomat, Poczta PRIMARY KEY(ID) ); ALTER TABLE metody_dostawy ADD CONSTRAINT cst_dostawa CHECK ( NAZWA IN ('Kurier DPD', 'Paczkomat', 'Poczta')); / -- Za?o?enie, ?e mamy tylko 23% VAT create table faktura( ID number generated by default on null as identity, ID_ZAMOWIENIA number, DATA_FAKTURY date, DATA_PLATNOSCI date, FORMA_PLATNOSCI varchar2(100), --check ('Przelew', 'Got?wka') KWOTA_NETTO number, KWOTA_VAT number, KWOTA_BRUTTO number, PRIMARY KEY(ID) ); ALTER TABLE faktura ADD CONSTRAINT cst_fplat CHECK ( FORMA_PLATNOSCI IN ('Przelew', 'Got?wka')); / create table faktura_specyfikacja( ID number generated by default on null as identity, ID_ZAMOWIENIE_DETALE number, KWOTA_NETTO number, KWOTA_VAT number, KWOTA_BRUTTO number, PRIMARY KEY(ID) ); --klucze obce: ALTER TABLE zamowienie ADD CONSTRAINT FK_KLIENT FOREIGN KEY (ID_KLIENTA) REFERENCES klient(ID); ALTER TABLE zamowienie ADD CONSTRAINT FK_ADRES FOREIGN KEY (ID_ADRESU) REFERENCES adres(ID); ALTER TABLE zamowienie ADD CONSTRAINT FK_METODA_DOSTAWY FOREIGN KEY (ID_METODA_DOSTAWY) REFERENCES metody_dostawy(ID); ALTER TABLE zamowienie_detale ADD CONSTRAINT FK_ZAMOWIENIE FOREIGN KEY (ID_ZAMOWIENIA) REFERENCES zamowienie(ID); ALTER TABLE zamowienie_detale ADD CONSTRAINT FK_PRODUKT FOREIGN KEY (ID_PRODUKT) REFERENCES produkt(ID); ALTER TABLE klient ADD CONSTRAINT FK_ADRES_DOMYSLNY FOREIGN KEY (DOMYSLNY_ADRES_ID) REFERENCES adres(ID); ALTER TABLE faktura ADD CONSTRAINT FK_ZAMOWIENIE_FAKTURA FOREIGN KEY (ID_ZAMOWIENIA) REFERENCES zamowienie(ID); ALTER TABLE faktura_specyfikacja ADD CONSTRAINT FK_ZAMOWIENIE_DETALE FOREIGN KEY (ID_ZAMOWIENIE_DETALE) REFERENCES zamowienie_detale(ID); --indexy create index zamowienie_id_klienta_idx on zamowienie(ID_KLIENTA); create index zamowienie_data_zamowienia_idx on zamowienie(DATA_ZAMOWIENIA DESC); create index zamowienie_id_zam_produkt_idx on zamowienie_detale(ID_ZAMOWIENIA, ID_PRODUKT); create index produkt_nazwa_idx on produkt(NAZWA); create index adres_adres_idx on adres(MIASTO, ULICA); INSERT INTO produkt (NAZWA, CENA_JEDNOSTKOWA) VALUES ('paczek z cukrem', 13); INSERT INTO produkt (NAZWA, CENA_JEDNOSTKOWA) VALUES ('paczek z malina', 14); INSERT INTO metody_dostawy (NAZWA) VALUES ('Kurier DPD'); INSERT INTO metody_dostawy (NAZWA) VALUES ('Paczkomat'); INSERT INTO metody_dostawy (NAZWA) VALUES ('Poczta'); ---zapis zamowienia(not ended) CREATE OR REPLACE PROCEDURE zapis_zamowienia( NAZWA_ in varchar2 , NUMER_TELEFONU_ in varchar2 , EMAIL_ in varchar2 , NIP_ in varchar2 , ULICA_ in varchar2 , MIASTO_ in varchar2 , KRAJ_ in varchar2 , KOD_POCZTOWY_ in varchar2 , UWAGI_ in varchar2 ) IS DOMYSLNY_ADRES_ID_ number; ID_KLIENTA_ number; BEGIN INSERT INTO adres(ULICA, MIASTO, KRAJ, KOD_POCZTOWY) VALUES (ulica_, miasto_, kraj_, kod_pocztowy_); COMMIT; SELECT ID INTO DOMYSLNY_ADRES_ID_ FROM ADRES WHERE ULICA = ulica_ AND MIASTO = miasto_ AND KRAJ = kraj_ AND KOD_POCZTOWY = kod_pocztowy; INSERT INTO klient(NAZWA, DOMYSLNY_ADRES_ID, NUMER_TELEFONU, EMAIL, NIP) VALUES (nazwa_, domyslny_adres_id_, numer_telefonu_, email_, nip_); COMMIT; SELECT ID INTO ID_KLIENTA_ FROM KLIENT WHERE NIP = NIP_; INSERT INTO zamowienie(ID_KLIENTA, ID_ADRESU, UWAGI) VALUES (ID_KLIENTA_, DOMYSLNY_ADRES_ID_, UWAGI_); COMMIT; END zapis_zamowienia; / -- CREATE OR REPLACE TRIGGER trg_zamowienie BEFORE INSERT OR UPDATE ON zamowienie FOR EACH ROW BEGIN :new.DATA_ZAMOWIENIA := sysdate; END; CREATE OR REPLACE PROCEDURE zapis_koszyka( ID_ZAMOWIENIA_ in number , ID_PRODUKT_ in number , ILOSC_ in number , CZY_OPLACONE_ in number , STATUS_ in varchar2 , ID_METODA_DOSTAWY_ in number , FORMA_PLATNOSCI in varchar2 )IS CENA_JEDNOSTKOWA_ number; SUMA_ZAMOWIENIA_ number; BEGIN SELECT CENA_JEDNOSTKOWA INTO CENA_JEDNOSTKOWA_ FROM produkt WHERE ID = ID_PRODUKT_; INSERT INTO zamowienie_detale(ID_ZAMOWIENIA, ID_PRODUKT, ILOSC, CENA_JEDNOSTKOWA) VALUES (ID_ZAMOWIENIA_, ID_PRODUKT_, ILOSC_, CENA_JEDNOSTKOWA_); COMMIT; SUMA_ZAMOWIENIA_:= ILOSC_ * CENA_JEDNOSTKOWA_; UPDATE zamowienie SET SUMA_ZAMOWIENIA = SUMA_ZAMOWIENIA_, CZY_OPLACONE = CZY_OPLACONE_, STATUS = STATUS_, ID_METODA_DOSTAWY = ID_METODA_DOSTAWY_ WHERE zamowienie.ID = ID_ZAMOWIENIA_; COMMIT; END zapis_koszyka; / begin zapis_klienta('agdsfsd', 'dsdas4gd2553', 'wrrhy@gmail.com', '6478557', 'aaaegh', 'Warszawa', 'Polska', '03-324', 'Za'); end; BEGIN zapis_koszyka(2, 2, 5, 0, 'Przyjete', 2); END; /* Вот с етого, частично с подачей данных в таблицы, нужно написать кусок кода, который будет собирать статистику по таблицам/схеме.( КАК ?) через DBMS_STATS ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2022, 21:16 |
|
dbms_stats Sql
|
|||
---|---|---|---|
#18+
woody33, Правила форума на SQL.RU (v1.0) Правила форума SQL.ru... Не рекомендуется: ... * Создавать несколько топиков с одинаковым вопросом. Рекомендуется: ... * Для повышения удобочитаемости сообщений - пользоваться специальными кодами для выделения слов (b, u, i, color) (но не злоупотреблять ими) и тегом форматирования исходных кодов src. ... * При необходимости продолжить начатое обсуждение - продолжать существующий топик, а не заводить новый. ... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2022, 23:20 |
|
|
start [/forum/topic.php?fid=52&fpage=3&tid=1879562]: |
0ms |
get settings: |
8ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
29ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 147ms |
0 / 0 |