Opis
Funkcje i struktury systemów baz danych oraz przegląd modeli danych. Relacyjne bazy danych. Języki zapytań do relacyjnych baz danych (algebra relacji, logika pierwszego rzędu, SQL i Datalog). Projektowanie baz danych, teoria postaci normalnych i modelowanie encja-związek. Fizyczne aspekty wykonywania zapytań i składowania danych, metody optymalizacji zapytań, przetwarzanie transakcji i rozproszone bazy danych.
drop table wypozyczenia; drop table czytelnicy; drop table ksiazki; create table ksiazki ( nr_ew integer primary key, tytul varchar(128), autor varchar(64) ); create table czytelnicy ( pesel char(11) primary key, imie varchar(64), nazwisko varchar(64) ); create table wypozyczenia ( nr_ew integer references ksiazki, pesel char(11) references czytelnicy, data_wypozyczenia date, data_zwrotu date, primary key (nr_ew,pesel,data_wypozyczenia) );
delete from wypozyczenia; delete from ksiazki; delete from czytelnicy; insert into ksiazki (nr_ew,tytul,autor) values (1,'Teoria wszystkiego','J. Dziamdziak'); insert into ksiazki (nr_ew,tytul,autor) values (2,'Teoria prawie wszystkiego','J. Dziamdziak'); insert into ksiazki (nr_ew,tytul,autor) values (3,'Teoria całkowicie wszystkiego','J. Dziamdziak'); insert into ksiazki (nr_ew,tytul,autor) values (4,'Pan Tadeusz','A. Mickiewicz'); insert into ksiazki (nr_ew,tytul,autor) values (5,'Balladyna','J. Słowacki'); insert into ksiazki (nr_ew,tytul,autor) values (6,'Nieznana książka','Nieznany autor'); insert into czytelnicy (pesel,imie,nazwisko) values ('001','Jan','Kowalski'); insert into czytelnicy (pesel,imie,nazwisko) values ('002','Adam','Nowak'); insert into czytelnicy (pesel,imie,nazwisko) values ('003','Alojzy','Buczkowski'); insert into czytelnicy (pesel,imie,nazwisko) values ('004','Witold','Iksiński'); insert into czytelnicy (pesel,imie,nazwisko) values ('005','Anna','Ygregkowska'); insert into czytelnicy (pesel,imie,nazwisko) values ('006','Julia','Capuletti'); insert into czytelnicy (pesel,imie,nazwisko) values ('007','James','Bond'); insert into czytelnicy (pesel,imie,nazwisko) values ('008','Lidia','Montecchi'); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (1,'001','01-SEP-2007','15-SEP-2007'); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (1,'002','01-SEP-2006','15-SEP-2006'); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (1,'003','01-SEP-2004','15-SEP-2004'); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (1,'002','01-OCT-2007',NULL); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (2,'005','01-SEP-2007','15-SEP-2007'); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (2,'006','04-OCT-2007',NULL); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (2,'002',TO_DATE('2007-09-02','yyyy-mm-dd'),TO_DATE('2007-09-15','yyyy-mm-dd')); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (3,'006',TO_DATE('2007-10-03','yyyy-mm-dd'),NULL); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (3,'007',TO_DATE('2007-09-04','yyyy-mm-dd'),TO_DATE('2007-09-15','yyyy-mm-dd')); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (3,'001',TO_DATE('2007-09-20','yyyy-mm-dd'),TO_DATE('2007-09-25','yyyy-mm-dd')); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (3,'002',TO_DATE('2007-10-01','yyyy-mm-dd'),TO_DATE('2007-10-02','yyyy-mm-dd')); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (4,'008',TO_DATE('2007-10-02','yyyy-mm-dd'),NULL); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (4,'005',TO_DATE('2007-09-07','yyyy-mm-dd'),TO_DATE('2007-09-12','yyyy-mm-dd')); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (4,'006',TO_DATE('2007-09-02','yyyy-mm-dd'),TO_DATE('2007-09-05','yyyy-mm-dd')); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (5,'006',TO_DATE('2007-09-05','yyyy-mm-dd'),TO_DATE('2007-09-10','yyyy-mm-dd')); insert into wypozyczenia (nr_ew,pesel,data_wypozyczenia,data_zwrotu) values (5,'002',TO_DATE('2007-09-19 12:30','yyyy-mm-dd hh24:mi'),TO_DATE('2007-09-20','yyyy-mm-dd'));
-- inicjalizacja pomocniczych zmiennych
set pagesize 100; set trimspool on; set trimout on; set echo on; -- wyświetlanie poleceń SQL set linesize 100;
-- ustawienie domyślnych rozmiarów kolumn
column tytul format a30; column autor format a20;
-- lista książek
SELECT nr_ew,tytul FROM ksiazki;
-- lista książek konkretnego autora
SELECT * FROM ksiazki WHERE autor LIKE 'J. Dziam%';
-- liczba wypożyczeń każdej z książek
SELECT k.tytul,count(*) as ile FROM wypozyczenia w,ksiazki k WHERE w.nr_ew=k.nr_ew GROUP BY w.nr_ew,k.tytul ORDER BY ile DESC;
-- jeszcze nie oddane książki + dane wypożyczających
SELECT TO_CHAR(w.data_wypozyczenia,'yyyy-mm-dd hh24:mi') as data_wypozyczenia,w.nr_ew,k.tytul,c.imie||' '||c.nazwisko as wypozyczajacy FROM wypozyczenia w,ksiazki k,czytelnicy c WHERE w.nr_ew=k.nr_ew AND w.pesel=c.pesel AND w.data_zwrotu IS NULL ORDER BY w.data_wypozyczenia ASC;
-- wyświetlanie dokładnego sposobu obliczania zapytania
set autotrace on; select k.tytul,w.pesel,w.data_wypozyczenia,w.data_zwrotu from wypozyczenia w,ksiazki k WHERE w.nr_ew=k.nr_ew; set autotrace off;
Przydatne adresy:
javascript:alert(”Hello, World!”);
<script type="text/javascript" src="hello.js"></script>
alert(”Hello, World!”);
<script type="text/javascript"> alert(”Hello, World!”); </script>
var foo;
var foo = ”bar”;
foo = 8;
var foo = true; var bar = false;
var dwa = 2; var trzyipol = 3.5;
var s = ”String”;
var fib = new Array(0, 1, 1, 2, 3); var fib = [0, 1, 1, 2, 3];
fib[1] = ”jeden”;
function helloWorld() { alert("Hello, World!"); }
javascript:helloWorld();
function fib(n) { if (n == 0) { return 0; } else if (n == 1) { return 1; } else { return fib(n-1) + fib(n-2); } }
var twice = function(n) { return 2 * n; }
function Osoba(imie) { this.imie = imie; } var Jan = new Osoba(”Jan”);
Osoba.prototype.nazwisko = ”Kowalski”; Jan = new Osoba(”Jan”); //teraz Jan.nazwisko == ”Kowalski”
Jan = { 'imię': 'Jan', 'nazwisko': 'Kowalski' }
var helloWorld = function(evt) { alert("Hello, World!"); } document.onclick = helloWorld;
document.getElementById(”id”); document.getElementsByTagname(”p”);
var div = document.createElement(”div”); div.id = ”someDiv”; div.class = ”someClass”;
document.documentElement.appendChild(div);
document.getElementById(”someDiv”).class = ”otherClass”;
document.getElementById('someDiv').style.color = 'red';
div = document.getElementById(”someDiv”); document.removeChild(div);
<body></body>:
<a href="http://jquery.com/">jQuery</a>
<script></script>:
$(document).ready(function() { $(”a”).click(function(event) { alert(”Hello, jQuery!”); event.preventDefault(); }); });
$(".someClass").css("border", "red"); $("#someId").html(”Modified with jQuery”);
$(”#someId > p”) - wszystkie elementy typu p, które są dziećmi elementu o Id someId $("p[@class]") – wszystkie elementy typu p z atrybutem class $("p.foo[a]") – wszystkie elementy typu p, klasy foo, które zawierają element typu a.
$(”p.shy”).click(function() { $(this).hide(”slow”); });
<head> <script type="text/javascript"> function notEmpty() { var myTextField = document.getElementById('myText'); if(myTextField.value != " ") alert("You entered: "+ myTextField.value) else alert("Would you please enter some text?") } </script> </head> <body> <script type="text/javascript"> document.write("Wpisz tekst:"); </script> <input type='text' id='myText' /> <input type='button' onclick='notEmpty()' value='Form Checker' /> </body>
function sum(numbers) { var total = 0 forEach(numbers, function (number) { total += number }) return total } alert(sum([1, 10, 100]));
Właściwości:
Metody:
var cat = {colour: "grey", name: "Spot", size: 46}; cat.speak = function(line) { print("The cat says '", line, " " '); } cat.size = yellow"; alert(cat.size); delete cat.size; alert(cat.size); alert(cat.speak("Cześć")); alert(cat);
function Rabbit(adjecitve) { this.adjective = adjective; this.speak = function(line) { print("The ", this.adjective, " rabbit says '", line, " " '); }; } var = new Rabbit("krolik"); function makeRabbit(adjective) { return { adjective: adjective, speak: function(line) { tresc funkcji } }; } var blackRabbit = makeRabbit("black");
function negate(func) { return function(x) { return !func(x) }; } var isOdd = negate(isEven);
<script type="text/javascript" source="jquery.js"/>
$("#someId").html("<b>So Bold!</b>"); $(document).ready(function() { $("a").click(function(event) { alert("Thanks for visiting'); }); }
$(document).ready(function() { $("#orderedlist li:last").hover(function() { $(this).addClass("green"); },function(){ $(this).removeClass("blue"); }); });
$.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); } });
$.post("test.php", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); }); $.get("test.php", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); });
$c = oci_connect("rb291513", "XXXXXX"); if($c){ echo "Jest polaczenie.<br><br>"; }else{ $err = oci_error(); echo "Oracle Connect Error " . $err['text']; exit(0); }
$r = oci_parse($c, "SELECT * FROM wypozyczenia"); oci_execute($r); $rowCount = oci_fetch_all($r, $all, null, null, OCI_FETCHSTATEMENT_BY_ROW + OCI_ASSOC); echo "Zawartosc tabeli WYPOZYCZENIA: <br>"; echo "<pre>".print_r($all, true)."</pre>";
$var2 = "Scott"; $tab = array(2,8,19,32); $s = oci_parse($c, "insert into tab1 values (:bind1, :bind2)"); oci_bind_by_name($s, ":bind1", $var1, 20); oci_bind_by_name($s, ":bind2", $var2); foreach($tab as $var1){ oci_execute($s); }
$s = oci_parse($c, "select * from tab1"); oci_execute($s); while(oci_fetch($s)){ echo "COL1 = " . oci_result($s, "COL1") . ", COL2 = " . oci_result($s, "COL2") . "<br>"; }
$s = oci_parse($c, "create or replace procedure powieksz(p1 in number, p2 out number) as begin p2 := p1 + 1; end;"); oci_execute($s); $p1 = 233; $s = oci_parse($c, "begin powieksz(:x1, :x2); end;"); oci_bind_by_name($s, ":x1", $p1); oci_bind_by_name($s, ":x2", $p2, 40); oci_execute($s); echo $p1 . " + 1 = " . $p2; // 233 + 1 = 234