adding db lec3 notes
This commit is contained in:
parent
445c97180e
commit
79ab59f2bb
83
cst363/lec/lec3.md
Normal file
83
cst363/lec/lec3.md
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# lec3
|
||||||
|
|
||||||
|
## Relational Algebra and its relation to SQL
|
||||||
|
|
||||||
|
### SELECT
|
||||||
|
Used to select rows from some table.
|
||||||
|
|
||||||
|
> `SELECT [...] FROM [...]`
|
||||||
|
|
||||||
|
> Relational symbol: sigma
|
||||||
|
|
||||||
|
### Projection
|
||||||
|
Picks out the columns of a (set of) table(s)
|
||||||
|
|
||||||
|
> `PROJECTION [table...]`
|
||||||
|
|
||||||
|
> Relational symbol: pi
|
||||||
|
|
||||||
|
### Union
|
||||||
|
Adds the rows of two tables into some new table.
|
||||||
|
Removes duplicates from resultant table as well.
|
||||||
|
|
||||||
|
> `UNION table[table...]`
|
||||||
|
|
||||||
|
> Relational symbol:
|
||||||
|
|
||||||
|
### Relational Algebra on paper
|
||||||
|
|
||||||
|
Even though conceptually this maps straight to SQL there is a handwritten way to express this on paper. The following is a _plain_ english way of reading these pape operations.
|
||||||
|
|
||||||
|
> /select_(concatenation of fields)[target table]
|
||||||
|
|
||||||
|
> /project_(_list of fields_)[target table]
|
||||||
|
|
||||||
|
> {resultant table} /union {resultant table}
|
||||||
|
|
||||||
|
## Cartesian Product
|
||||||
|
|
||||||
|
We take the _crossproduct_ of two relations(tables)
|
||||||
|
|
||||||
|
Take the __N'th__ row of the first and combine linearly with the rows from the second table.
|
||||||
|
The result should be a new table with R1_(rowcount) * R2_(rowcount).
|
||||||
|
This result isn't something that we would particularly care about since there is so much data which is now mixed throughout.
|
||||||
|
|
||||||
|
## SQL
|
||||||
|
|
||||||
|
Declarative language which mainly queries databases, and deals with schemas.
|
||||||
|
|
||||||
|
> Data-Definition language (DDL)
|
||||||
|
* Create/modify/delete schemas
|
||||||
|
* define integrity contraints
|
||||||
|
* define views
|
||||||
|
* drop tables
|
||||||
|
|
||||||
|
> Data Manipulation Language (DML)
|
||||||
|
* Queries and whatnot
|
||||||
|
|
||||||
|
### Define a relation Schema
|
||||||
|
|
||||||
|
```
|
||||||
|
create table tableName (
|
||||||
|
fieldName type(argv...),
|
||||||
|
...
|
||||||
|
fieldName1 type(length) not null,
|
||||||
|
primary_key(fieldName,[...]),
|
||||||
|
foreign_key(fieldName,[...]) references otherTable
|
||||||
|
|
||||||
|
);
|
||||||
|
```
|
||||||
|
#### Contraints
|
||||||
|
|
||||||
|
`not null`: Requires that the field not be null when data is being inserted.
|
||||||
|
|
||||||
|
`primary key`: Can be used inline to show that some field is a primary key on its own.
|
||||||
|
|
||||||
|
### Field Types
|
||||||
|
|
||||||
|
`varchar(length)`: _variable_ length string of characters. If we have `6` as a maxiumum then we may only end reserving `4` bytes(words) of space somewhere.
|
||||||
|
|
||||||
|
`char(length)`: _Fixed_ length string of characters. If we have `5` then we must have a string length of `5`.
|
||||||
|
|
||||||
|
`numeric(p,d)`: Fixed-point number of `p` digits with `d` digits to the right of the decimal.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user