Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright © 2003 - 2012 Curt Hill SQL The Data Definition Language.

Similar presentations


Presentation on theme: "Copyright © 2003 - 2012 Curt Hill SQL The Data Definition Language."— Presentation transcript:

1 Copyright © 2003 - 2012 Curt Hill SQL The Data Definition Language

2 Classification SQL statements can be broken into two categories Data Definition Language (DDL) –Create databases, tables, views Data Manipulation Language (DML) –Change the data –Process queries This presentation is about the DDL Copyright © 2003 - 2012 Curt Hill

3 Data Definition Language Used for creating databases, tables, views It also establishes most constraints –Primary keys –Foreign keys –Integrity constraints Also deletes databases and tables

4 Background Up to this point we have dealt with existing tables and data –We do not have to worry about what types of names are legal for table or field names in queries Now we have to worry about these things: –What constitutes a legal name? –What data types exist? Copyright © 2003 - 2012 Curt Hill

5 Identifiers A name for an item –Servers –Databases –Tables –Views –Fields There are rules for a legal name – Name must be 1-256 characters

6 Copyright © 2003 - 2012 Curt Hill Naming rules Legal characters –Letters –Digits –Underscore _ and dollar $ Start with any type of character including digit –May not be only digits Names are case sensitive Some other names may be used if quoted –Not usually a good idea Reserved words should be avoided

7 Copyright © 2003 - 2012 Curt Hill Creation and deletion The create reserved word is used to create a database, table, view The drop reserved word is used to delete any of these At table (or view) creation time the fields, keys and constraints are given These may be changed later

8 Copyright © 2003 - 2012 Curt Hill Create Database Simple form only gives the database name: Create database junkdb Some servers allow specification of estimated sizes and disk file names In Oracle, databases are linked so this is not done with SQL

9 SQL Server Older versions generally needed to give some disk specifics for first creation, no longer required Example: create database college on (name=college, filename='d:\courses\database \sqlserver\college.mdf', size=3MB) 3MB is minimum for current version Copyright © 2003 - 2012 Curt Hill

10 SQL Server Commentary The on is used to specify a file where the database is to be stored –Must be used for the first create –Once file exists other databases may be placed in it It is one file for all the databases and tables Every SQL Server database has the following three databases: –Master – the system catalog –Tempdb –Msdb Copyright © 2003 - 2012 Curt Hill

11 Tables Once a database exists the tables need to be created A create table must specify almost everything about it: –Table name –Fields: Name Type, including length –Constraints Such as keys Copyright © 2003 - 2012 Curt Hill

12 Creating a table Basic form: Create table tn (fields…) –Where tn is the table name The parenthesized list is the attributes of the file These include –Field names and types –Primary and foreign keys –Other constraints

13 Copyright © 2003 - 2012 Curt Hill Field Types There are several basic types that a field may possess Each implementation may augment these with others These include char, integer, real etc. These may be modified by lengths

14 Copyright © 2003 - 2012 Curt Hill Character types char(n) –Fixed length character string –Always uses n characters –Padded with blanks –0 < n < 256 varchar(n) –Variable length character strings –The n specifies the maximum length –Not all positions need to be stored depending on the data MySQL does not like to mix the two in a table

15 Copyright © 2003 - 2012 Curt Hill Numeric types Int(n) or integer(n) –N is optional display width –May be prefixed with Unsigned Float(p,d) –P is precision – maximum total number of digits –D is digits to right of decimal point –These are optional and only used for display Double or real –A larger float –Also allows p and d Decimal or numeric –Usually stored in string format –May also have p and d

16 Copyright © 2003 - 2012 Curt Hill Binary Large Objects AKA BLOB Stores data that usually cannot be manipulated in SQL –Word Processor Documents –Graphics –Executables Text –Case insensitive blob –Sensitive to character set

17 SQL Server specific types Bigint (64 bit), smallint(16 bit), tinyint(8 bit) –Different sizes Bit –Zero or one – a boolean Money(64 bit), tinymoney (32 bit) –4 digits to right of decimal Time, date, datetime Copyright © 2003 - 2012 Curt Hill

18 Oracle specific types Number (p,d) Varchar2 Date Raw(len) –Binary data of given length BLOB and CLOB Copyright © 2003 - 2012 Curt Hill

19 MySQL specific types Tinyint, smallint, bigint Bit, bool, boolean Many others as well

20 Copyright © 2003 - 2012 Curt Hill Field definitions Form of a field definition: name type col_attr gen_attr Fields are separated by commas The name is the field name Type is one of the above or other types Column attributes are always optional –Unsigned is specific to numerics –Lengths have different meanings for different types General attributes are always optional

21 Copyright © 2003 - 2012 Curt Hill Primary Key The most important attribute A table needs one or more fields specified as the primary key The key may be specified as part of the field: naid int primary key It may also be specified after the needed fields are given: Primary key (dept, number)

22 Copyright © 2003 - 2012 Curt Hill Example: Students Create table students ( s_id int, s_name char(20), s_address char(20), primary key (s_id) )

23 Copyright © 2003 - 2012 Curt Hill Attribute: NOT NULL NULL or NOT NULL –Whether it is possible for field not to have a value –Default is NULL –A key can not be null Example: name char(20) not null,

24 Copyright © 2003 - 2012 Curt Hill Attribute: DEFAULT Default constant Supplies a value when an Insert does not Cannot be used on type BLOB or TEXT Example: address char(20) default ‘Unknown’,

25 Copyright © 2003 - 2012 Curt Hill Attribute: UNIQUE Requires each field to be unique within the table Default for the primary key fields Coded as: UNIQUE or UNIQUE KEY Example: email varchar(50) unique,

26 Copyright © 2003 - 2012 Curt Hill Attribute: CHECK Domain Integrity constraint Form: CHECK (relational) The relational may be almost anything in a where Example: crhr int check (crhr 0),

27 Copyright © 2003 - 2012 Curt Hill Foreign Key Enforces referential integrity Form: foreign key (local-fields) references field Examples foreign key (dept,course) references course -- Must have same name in course foreign key (chair) references faculty.naid

28 Copyright © 2003 - 2012 Curt Hill Create Order In the college database that are tables that have no foreign keys: –Students, courses Others that do: –Grades references courses and students Tables with foreign keys need to be created after the tables they depend on The same is true for the insertion process

29 Copyright © 2003 - 2012 Curt Hill Relationship examples create table grades ( dept char(5), number int, naid int, score int check (score >= 0 AND score <= 100), primary key (dept, number, naid), foreign key (naid) references students, foreign key (dept, number) references course); create table faculty_teach ( dept char(5), number int, naid int, primary key (dept, number, naid), foreign key (naid) references faculty, foreign key (dept, number) references course);

30 Copyright © 2003 - 2012 Curt Hill Drop Deletes the entire database Drop database junkdb Deletes the table: Drop table junktab

31 Order again If there are many foreign keys then creation and insertion may be complicated It is also possible to change a table after creation This uses the Alter statement It may add or change fields or constraints Copyright © 2003 - 2012 Curt Hill

32 Alter Example Adding a field: alter table faculty add(f_age int, f_years int) Removing a field: Alter table students drop column f_balance Copyright © 2003 - 2012 Curt Hill

33 Changing constraints The Alter may also be used to add or remove constraints Consider changing a primary key: Alter Table newtab Add Primary Key (nt_id) A Foreign key: Alter Table newtab Add Foreign Key (fk) references table t(tk)

34 Cleaning Since Oracle does not allow either create or drop on a database removing all the tables to start over is complicated Dropping a table that has foreign keys point into it is disallowed Typically use Alter to remove all foreign keys from all tables The tables may then be dropped in any order Copyright © 2003 - 2012 Curt Hill

35 Views A view is a predefined query that may be used like a table It may be as a simple as a projection upon a single table –Such as removing payroll information from a personnel table It may be complicated rearrangement of data from several tables –Like any query Copyright © 2003 - 2012 Curt Hill

36 Syntax Form: Create View ViewName As Select … Viewname is the name of the new view and can be any SQL identifier View, As and Create are reserved words A normal Select/From/Where is the last part of the statement Copyright © 2003 - 2012 Curt Hill

37 View Commentary In a query using a view is just like using a table A view does not create a new table When referenced it is like an automatic nested query Not every option of Select is allowed –Eg. Order By and Into are disallowed Copyright © 2003 - 2012 Curt Hill

38 Another View Form The column names of the view usually just come from Select –Either original names or their aliases They can be specified explicitly Another form: Create View ViewName (col1, col2,…) As Select … Column count must match Select Copyright © 2003 - 2012 Curt Hill

39 Types of Views Two classifications of views, simple and complex A simple view would be a reduction of a single table Example: Create view missing as Select s_id, S_name From students Where s_address is Null A complex view involves multiple tables Copyright © 2003 - 2012 Curt Hill

40 Example Complex View Multiple table or complex view: create view student_hour (sh_id, sh_name, sh_load) as select s_id, s_name, sum(crs_crhr) from students, grades, course where s_id = g_naid AND g_dept = crs_dept And g_course = crs_number group by s_id, s_name Copyright © 2003 - 2012 Curt Hill

41 Update a View? A simple view may be updated –The DBMS translates the update into the single table update –Not very complicated A complex view may not be updated –Figuring out how to update the multiple tables is difficult to impossible –How could we update a view that involved computations? –The tables that contribute to the view should be updated instead Copyright © 2003 - 2012 Curt Hill

42 Finally We may now create a database The next presentation will consider populating it with data Copyright © 2003 - 2012 Curt Hill


Download ppt "Copyright © 2003 - 2012 Curt Hill SQL The Data Definition Language."

Similar presentations


Ads by Google