CS 5614: Basic Data Definition and Modification in SQL. 67. Introduction ..... V
Notice how SQL and Relational Algebra do not allow unsafe queries. V because
...
CS 5614: Basic Data Definition and Modification in SQL
67
Introduction to SQL
Structured Query Language (‘Sequel’)
Serves as DDL as well as DML
Declarative Say what you want without specifying how to do it One of the main reasons for commercial success of DBMSs Many standards and implementations ANSI SQL SQL-92/SQL-2 (Null operations, Outerjoins etc.) SQL3 (Recursion, Triggers, Objects) Vendor specific implementations “Bag Semantics” instead of “Set Semantics” Used in commercial RDBMSs
CS 5614: Basic Data Definition and Modification in SQL
Example:
Create a Relation/Table in SQL
CREATE TABLE Students (sid CHAR(9), name VARCHAR(20), login CHAR(8), age INTEGER, gpa REAL);
Support for Basic Data Types
CHAR(n) VARCHAR(n) BIT(n) BIT VARYING(n) INT/INTEGER FLOAT REAL, DOUBLE PRECISION DECIMAL(p,d) DATE, TIME etc.
68
CS 5614: Basic Data Definition and Modification in SQL
69
More Examples
And one for Courses
CREATE TABLE Courses (courseid CHAR(6), department CHAR(20));
And one for their relationship!
CREATE TABLE takes
Why?
(sid CHAR(9), courseid CHAR(6));
Can also provide default values
CREATE TABLE Students (sid CHAR(9), .... age INTEGER DEFAULT 21, gpa REAL);
CS 5614: Basic Data Definition and Modification in SQL
Examples Contd.
DATE and TIME Implementations vary widely Typically treated as strings of a special form Allows comparisons of an ordinal nature ( etc.) DATE Example ‘1999-03-03’ (No Y2K problems) TIME Examples ‘15:30:29’ ‘15:30:29.3875’ Deleting a Relation/Table in SQL
DROP TABLE Students;
70
CS 5614: Basic Data Definition and Modification in SQL
71
Modifying Relation Schemas
‘Drop’ an attribute (column)
ALTER TABLE Students DROP login;
‘Add’ an attribute (column)
ALTER TABLE Students ADD phone CHAR(7);
What happens to the new entry for the old records? Default is ‘NULL’ or say ALTER TABLE Students ADD phone CHAR(7) DEFAULT ‘unknown’;
Always begin with ‘ ALTER TABLE ’
Can use DEFAULT even with regular definition (as in Slide 69)
CS 5614: Basic Data Definition and Modification in SQL
How do you enter/modify data?
INSERT command INSERT INTO Students VALUES (‘53688’,’Mark’,’mark2345’,23,3.9)
Cumbersome (use bulk loading; described later)
DELETE command DELETE FROM Students S WHERE S.name = ‘Smith’
UPDATE command UPDATE Students S SET S.age=S.age+1, S.gpa=S.gpa-1 WHERE S.sid = ‘53688’
72
CS 5614: Basic Data Definition and Modification in SQL
73
Domains
Domains: Similar to Structs and other user-defined types
CREATE DOMAIN Email AS CHAR(8) DEFAULT ‘unknown’; .... login Email // instead of login CHAR(8) DEFAULT ‘unknown’
Advantages: can be reused
junkaddress Email, fromaddress Email, toaddress Email, ....
Can DROP DOMAINS too!
DROP DOMAIN Email;
Affects only future declarations
CS 5614: Basic Data Definition and Modification in SQL
Keys
To Specify Keys
Use PRIMARY KEY or UNIQUE Declare alongside attribute For multiattribute keys, declare as a separate line CREATE TABLE takes ( sid CHAR(9), courseid CHAR(6), PRIMARY KEY (sid,courseid) );
Whats the difference between PRIMARY KEY and UNIQUE?
Typically only one PRIMARY KEY but any number of UNIQUE keys Implementor allowed to attach special significance
74
CS 5614: Basic Data Definition and Modification in SQL
75
Creating Indices/Indexes
Why?
Speeds up query processing time For Students
CREATE INDEX indexone ON Students(sid); CREATE INDEX indextwo ON Students(login);
How to decide attributes to place indices on? One is (typically) created by default on PRIMARY KEY Creation of indices on UNIQUE attributes is implementation-dependent In general, physical database design/tuning is very difficult! Use Tools: Microsoft SQLServer has an index selection Wizard Why not place indices on all attributes? Too cumbersome for insertions/deletions/updates Like all things in computer science, there is a tradeoff! :-)
CS 5614: Basic Data Definition and Modification in SQL
Other Properties
‘NOT NULL’ instead of DEFAULT CREATE TABLE Students (sid CHAR(9), name VARCHAR(20), login CHAR(8), age INTEGER, gpa REAL);
Can insert a tuple without a value for gpa
NULL will be inserted If we had specified
gpa REAL NOT NULL);
insert cannot be made!
76
"!$#&%('*),+.-&/10(2$35462748%(0(09':!;/&-?2@2A-&%CBD2@>?2$;!FEG/&2$>:?2$0CIY!;%C+L&IJ0L)"+.-&2$0CZ\[]#&2 ^&>N'!_%('9>N2$0(IP!;%C+L&IJ0.IL0(KJ2$`&>NIL3GILQIL0CKL2$`&>NIL%CR_IJ&-AO1>?+.R$2$-1/&>?IJ0 46I]R$>?2@IY!;%C&Kc&2N4d>?2@0(IY!$%(+J&']ab>?+J)eKL%gfD2$+L12$'?Zh[]#&2Q'?2$R@+L&-%(']i*IY!;IJ0(+JKL3548#&%(RY#%(']0(+JKL%CR$IL0jIL&-&2$R@0(IL>NIY!$%XfD2h%(&IY!$/&>?2,k:'!;/1-&2$;!;']abIL)"%(0C%(IJ>l48%X!$#F!;#&2Qm n]oQp9o8qrO&>?+JKL>NIL)"),%C&K,0CIL&KJ/&ILKJ2h48%C0(0^1&!;#1%('\IJ0(0!;+.+c&IP!;/&>NIL0(sNZtabIJRN!;3!;#&2@>?2uIJ>?2uR$0C+L'N2uR$+L>N>?2$'NOv+L&-&2@&R$2$'w`D2V!V4u2$2$-1IY!;IJ`&IL'N2Q'N2,IJ0(0|!;#12-&IY!$I}^J!$'A%C !$+ )"IL%(~)"2$)"+L>?IJ'!$3uI-1%('!$%(&KJ/&%('N#&%(1Kab2$IY!$/&>?2S+Launhiu]&'c%C'Q!$#&IY!"!;#&2VNIY!;2+J '?2@R$+L&-1IL>?2@&R$2$'Q%(yEG/&2$>N+.R$2$'?'N%(&KJs?3!$#&2$>?2"IL>N2 2NR$2$0C0(2$;!7IL1IL0(+JKL'w!$+c`v+Y!;#SR$/&0g!;/&>N2$'?Z]]+P!;#m n]o8p9oQqIJ&-ntiu]1']IL>?2Q-&2@R$0(IJ>?IY!$%XfD2$Z#&IY!]4u2 &+4!;+"`v2A>?2@0(IY!$%(+J&']IL>N2A>?2@ab2$>?>N2$-z!;+"IL'*(O&>N2$-&%(R@IY!;2@'?%Cm_n]oQp9oQqQZ!$/&O&0(2Q%C']R$IL0C0(2$-I"KL>?+J/&&abILRV!F%C}m n]oQp9o8qQZ
!;IJ`&0(2z%('hR$IL0C0(2$-ILC2NG!;2$&'N%(+J&IL0l-&2$^&1%X!;%C+L&9%C}m n]oQp9oQqIJ&-'?++J&Zk:iu+ &+P!8KL2N!u`D+JKLKJ2$-}-&+48`;?+.-&/&R@2=`1IL'?%CR+LOv2$>?IP!;%C+L&'"IL&-~)"IL&%CO&/&0CIY!;%C+L&'*!$#&IY!c4u2R$IL~Ov2$>?ab+J>?)+J >?2@0(IY!$%(+J&'?Z" v+L>Q2$ILRY#'?/1R¡#`&IJ'?%CRc+LOv2$>?IP!;%C+L&3462*48%(0C0'N#&+4¢#&+4%X!c%('Q>?2$O1>?2$'N2$ !$2$-}%C2$ILRY#+La|!$#&2 !;#1>?2$2Q-&%CBD2@>?2$;!6&+P!;IP!;%(+J&'?Z £ Zu¤¥l¦¨§v¥©§vª]«¬G¨®&¯@¦¨§v¥l° ±\[]#&2z/&&%C+L+Laj!4u+c>?2$0CIY!;%C+L&'7²IL&-=³%('!;#&2Q'?2V!8+Lal2$0(2$)"2$;!;'!;#&IP! IJ>?2u%C²+J>\%C³´+L>]`v+P!;#&Z2uIL'N'?/&)"2w!$#&IY!w!;#&2h'?RY#&2$)"IL'w+La²IJ&-³IL>N2uIL0C% 28k+Ja9R$+L/1>?'?2@s IJ&-z!;#1IY! !;#&2@%(>R$+J0(/&)"&' IL>N2tIJ0('N+A+L>N-&2$>N2$-,IJ0(% 26k+JaR$+J/&>?'N2$3vILKJIL%(1s?Z2]&+4KJ%XfD2!;#12 !$#&>?2$2 >N2$O&>?2@'?2$;!;IP!;%(+J&']+La5!;#128/1&%(+J}>?2@0(IY!$%(+J&± ²
³k'?%C),O10(2$3j>?%(KJ# !$µ s
¶·?¸ ¹?º ¹?»¹¼½~¾À¿Á ·?¸¹º¹»¹?¼|½Â ¶·?¸ ¹?º ¹?»¹¼½~¾À¿Ã ·?¸¹º¹»¹?¼|½Â Ä*+Y!;%CR$2S!$#&IY!!$#&2SfÀIL>N%(IL`10(2$'
¸ ¹º¹?» ¹?¼ IJ>?2)"2$>?2@0XN'?Q/&'?2@-ab+J>O&IY!N!;2$>N )"IY!$R¡#1%(&KJ1462uR$+J/&0(-#&IfD2W48>?%g!?!$2$F!;#&2QIL`v+fD2W!46+cIL'N± ¶·?Å ¹?Æ ¹;ǹȽ~¾À¿Á ·?Źƹ ǹ?È|½Â ¶·?É ¹?Ê ¹?˹̽~¾À¿Ã ·?ɹʹ˹?Ì|½Â ·?ÃGÍÀÎGÍÀÏG¶ÑÐ ÒÓlÔ\Õ Ö¨ÔØ×_Ù ÚÜÛÝLÔYÚÜÙNÞ?ß9àáÔYÖ9âYãÛßߨÚäÙâ×_åVæ]×Ûßç×_Ú Þ?èéå ÛVêWÞ?Ô]ë]ê ÚÜìLÛÖÛVÙVÞ_êÔ@èVã í]ÛÙNÞ\ßîÞbæ.ïÜÛàîÔ¡ÖjðQÔ$ê ãïäÛñ¡ò
óLó
ôGÁõ ö©Á½ ÷GøùÀõ;ø ·?ÃGÍÀÎGÍÀÏG¶ÑÐ ôGÁõ ö©Ã½ ú Zuû¦ü_¬Gý ¬À¥lþ.¬"§Dªw«¬G¨®&¯@¦¨§v¥l° ±\[]#&2*-&%(Bv2$>N2$&R$2t² 2$0C2$)"2$ !$'l!$#&IY!AIL>N2A%(=²`&/J!A&+Y!
³~+Ja1!46+A>N2$0(IP!;%C+L&'\²ÿIJ&-³%('!;#&2*'?2N!u+La
%C=³ Zhu'h/&'?/1IL0(35462QIJ'?'?/1),27!;#&IP!t!$#&2A'NR¡#&2@),IJ']+La²IL&-
³IL>N2uIL0C% 2hIL&-F!$#&IY!w!;#&2$%C> R$+L0C/&),1'\IL>N2uIL0C'?+c+J>?-&2$>N2$-IJ0(% 2@Z\+L>N2$+fD2$>?31&+Y!$%(R$2w!$#&IY!6² %C']&+Y!kKJ2$&2$>NIL0(0gN'?2$RV!;%(+JF² ³´+La!46+Q>?2$0CIY!$%(+L1'² IJ&-,³´%('j!$#&2]'?2V! +Ja2$0C2$)"2$ !$'l!$#&IY!8IJ>?2A%C
²IL&-}³ Z]*KLIL%C&31462*IL'?'N/&)"2h!;#1IY!]!;#128'NR¡#12$),IJ']+La²ÑIJ&-³ IJ>?2\IJ0(% 2_IJ&-*!;#1IY!!$#&2$%(>9R@+L0(/1),&'lIL>N2]IL0C'?+h+L>?-12$>?2$-cIJ0(% 2$ZÄu+P!;%(R@29!$#&IY!7² ³ ² k¨² ³sNZ ²
³
¶·?¸ ¹?º ¹?»¹¼½~¾À¿Á ·?¸¹º¹»¹?¼|½D¹Ã ·?¸ ¹?º¹»¹¼D½Â ·?ÃGÍÀÎGÍÀÏG¶ÑÐ ôGÁõ ö©Á½ ù;øG¶ÀÍGÁÀÃGÍGÏÀ¶ ·?ÃGÍÀÎGÍÀÏG¶ÑÐ ôGÁõ ö©Ã½ Z Qý §
¬Àþ.¯$¦§v¥±*o8Ov2$>NIY!$2$'u+LyI'N%(&KJ0(2A>N2$0(IP!;%C+L}IJ&->?2@),+fD2$'h'?+J),2z+La|!;#&2cR@+L0(/1),&'NZu'N2$ab/&0
ab+J>,>N2$'!$>?%(RV!;%(1K}%(1ab+L>?)"IY!$%(+J&Z©u'?'N/&)"2c!$#&IY!"462F4uIL;!=+L&0g?2@'?'"ab>?+L) >N2$0(IP!;%(+J=²*Z
! #"$"&%')(*(
²
¶·?¸ ¹?º|½©¾G¿Á ·?¸ ¹?º¹»¹¼D½Â []#G/&' »¹¼
`D2@R$+L)"2]%(>N>?2$0C2NfÀIL;!WIP!?!;>N%(`&/!;2$'NZl2]R$+L/&0C-,%C&'!$2$IL-c>N2$%(1ab+L>?R@2!;#&%C'` ?%g!;%(1K
¶·?¸ ¹?º|½©¾G¿Á ·?¸ ¹?º¹,+¹,+.½Â ÃGÍGÎÀÍGÏÀ¶.-GÅ/ÀɹÅGÈÀÈ0GÉ211 ôGÁõ ö©Á Z 4l¬À¬Gþ.¯$¦¨§v¥±\oQOv2$>?IP!;2$'h+LSIc'?%C&KL0C28>N2$0(IP!;%C+LIL&-S>?2$)"+fD2$']'?+J),2Q+Jaj!;#&2Q>N+ 3
48'NZt[]#12A>?2@),+fÀIL0
%C'8`1IL'?2@-+L'N+L)"2,R@+L&-&%g!;%C+Ly'?Ov2$R$%C^&2$-y` ?+J)¢²
48#12$>?2W!;#1281IL)"28%C'](%CR¡#&IJ2$0(CZ ó65
7 8:9=