Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rapid POSTGRESQL learning, PART-4

Rapid POSTGRESQL learning, PART-4

4 parts to easily understand how to interact with postgresql

Avatar for Ali MasudianPour

Ali MasudianPour

June 01, 2013
Tweet

More Decks by Ali MasudianPour

Other Decks in Programming

Transcript

  1. Transactions – Transactions are a group of SQL commands –

    These commands will be group together as an operation – Transactions are supposed to be ACID, but what does that mean? • ACID: Atomicity, Consistency, Isolation, Durability • ATOMICITY – All or nothing – All of the operations must be succeed or all fails. In other word if one command fails other will fail too • CONSYSTENCY – Means that any transaction should take the system from one consistency o another – In other words, only valid changes to the data will take a place • ISOLATION – Any pear of transactions should not be effecting the same row at once • DURABILITY – Once the transaction is committed, its result will not be lost forever Rapid POSTGRESQL learning. 2
  2. Transactions – Working with transactions (KEYWORDS) • To begin transaction:

    – BEGIN • To end transaction – COMMIT • To cancel transaction – ROLLBACK – Example • BEGIN; SELECT * FROM [table name] COMMIT; – Control Transactions • It is possible to control the commit in transactions using SAVEPOINT Rapid POSTGRESQL learning. 3
  3. Save points – Save points allow us to commit part

    of transaction and discard other parts – How to use SAVE POINT: • BEGIN UPDATE x SET y=20 WHERE 1 SAVEPOINT [save point name] UPDATE z SET a=14 WHERE 1 SOLLBACK TO SAVEPOINT [save point name] COMMIT; • Everything before save point will be committed and everything after save point will be discarded – Destroy SAVE POINT • To destroy a save point we use RELEASE – RELEASE SAVEPOINT [save point name] • After deletion of save point if we try to ROLLBACK TO SAVEPOINT [save point name] it will show an error! Rapid POSTGRESQL learning. 4
  4. DEADLOCKS – A deadlock happens when two or more transactions

    hold locks at other transactions at once – As we saw before, same operations on same rows in transaction can not be happen – If we do, it will be wait until first transaction done. – DEADLOCK • For instance: if we start a transaction one[1] and after that start the transaction two[2] and in transaction two[2] we write a command that will be wait for transaction one[1] to be done and after that we do the same in transaction one[1] deadlock will be happen. • At this moment we have to ROLLBACK • If we try to COMMIT, it will automatically ROLLBACK Rapid POSTGRESQL learning. 5
  5. System Columns – Columns that are added to the table

    automatically called System Columns – List of System Columns • XMIN – Transaction id of the inserting transaction for this row version. It also can be update • ROW VERSION • Is an individual state of a row. Every time we update the row, new row version will be generated • XMAX – Transaction id of deletion row • CTID – Physical location of the row version in the table • OIDS – Table object id – If we want to use OIDS, we should indicate in on the table creation time • CREATE TABLE … WITH OIDS; – Examples: • SELECT oid, tableoid, xmax, xmin FROM [table name] Rapid POSTGRESQL learning. 6
  6. Alternation in tables and columns – Change data type of

    column • ALTER [table name] ALTER COLUMN [column name] TYPE [new type] – Change default value of column • ALTER TABLE [table name] ALTER COLUMN [column name] SET DEFAULT [value]; – Unset default value • ALTER TABLE [table name] ALTER COLUMN [column name] SET DEFAULT NULL • ALTER TABLE [table name] ALTER COLUMN [column name] DROP DEFAULT – Add Column • ALTER TABLE [table name] ADD COLUMN [column name] [column type] • ALTER TABLE [table name] ADD COLUMN [column name] [column type] NOT NULL DEFAULT [value] – Remove Column • ALTER TABLE [table name] DROP COLUMN [column name] – Every data and constraints will be deleted – If it has a reference column, we must use CASCADE to remove Rapid POSTGRESQL learning. 7
  7. Alternation in tables and columns – Add Constraint • CHECK

    – ALTER TABLE [table name] ADD CONSTRAINT [constraint name] CHECK([condition]) • UNIQUE – ALTER TABLE [table name] ADD CONSTRAINT [constraint name] UNIQUE ([column name]) • FOREIGN KEY – ALTER TABLE [table name] ADD FOREIGN KEY [foreign key name] REFERENCES [reference table name]([reference table column name]) • NOT NULL – ALTER TABLE [table name] ALTER COLUMN [column name] SET NOT NULL – All of the values must satisfy constraints to be done • For instance we have a column that holds null value, now if we set null constraint it will generate an error, because it has a null value. Rapid POSTGRESQL learning. 8
  8. Alternation in tables and columns – Remove Constraint • ALTER

    TABLE [table name] DROP CONSTRAINT [constraint name] – If it uses a reference we should use CASCADE – Remove Not Null Constraint • ALTER TABLE [table name] ALTER COLUMN [column name] DROP NOT NULL – Rename Column name • ALTER TABLE [table name] RENAME COLUMN [column name] TO [new column name] – Rename Table name • ALTER TABLE [table name] RENAME TO [new table name] Rapid POSTGRESQL learning. 9
  9. Logical Operators – 3 types of Logical operators • AND

    – Will be true if both left and right operands are true • OR – Will be true if one of the operands is true, otherwise it will be false • NOT – Will be false if the operand is true and will be true if the operand is false – AND / OR has 2 right and left operand – NOT has one operand – Examples: • SELECT * FROM tableTest WHERE x>12 AND y<10 • SELECT * FROM tableTest WHERE x>12 OR y<10 • SELECT * FROM tableTest WHERE NOT x>12 Rapid POSTGRESQL learning. 10
  10. Comparison Operands – They are • < • <= •

    > • >= • = • ! – Examples • SELECT * FROM testable WHERE column1!=3600 • SELECT * FROM testable WHERE column1=3600 • SELECT * FROM testable WHERE column1>=3600 • SELECT * FROM testable WHERE column1<=3600 • SELECT * FROM testable WHERE column1>3600 • SELECT * FROM testable WHERE column1<3600 Rapid POSTGRESQL learning. 11
  11. Between – Between • To run a condition between a

    range • Example: – SELECT * FROM employee WHERE salary BETWEEN 2000 AND 9000 – The less value should be take place in left side of AND operator – SYMETRIC BETWEEN • In this case there would be no force to left operand be greater than right operand • Example – SELECT * FROM employee WHERE salary BETWEEN SYMETRIC 9000 AND 2000 – NOT BETWEEN • SELECT * FROM employee WHERE salary NOT BETWEEN 5000 AND 6000 Rapid POSTGRESQL learning. 12
  12. IS NULL/ IS NOT NULL – SELECT * FROM employee

    WHERE salary IS NULL – SELECT * FROM employee WHERE salary IS NOT NULL – SELECT * FROM employee WHERE (salary>3000) IS TRUE – SELECT * FROM employee WHERE (salary>3000) IS NOT TRUE – SELECT * FROM employee WHERE (salary>3000) IS FALSE – SELECT * FROM employee WHERE (salary>3000) IS NOT FALSE – SELECT * FROM employee WHERE (salary>3000) IS UNKNOWN – SELECT * FROM employee WHERE (salary>3000) IS NOT UNKNOWN Rapid POSTGRESQL learning. 13
  13. Mathematical Operators – Addition • SELECT 7+3 – Subtraction •

    SELECT 7-3 – Multiplication • SELECT 7*3 – Division • SELECT 7/3 – Modulo • SELECT 7%3 – Exponentiation • SELECT 7^3 – Square Root • SELECT |/4 – Cube root • SELECT ||/8 – Factorial • SELECT 7! AD ‘Factorial’ Rapid POSTGRESQL learning. 14
  14. Mathematical Functions – Natural Logarithm • SELECT ln(4) – Base

    10 logarithm • SELECT log(8) – PI Constant • SELECT pi() AS ‘PI’ – Power • SELECT power(2,3) – Round • SELECT round(2.888888) – Truncate • SELECT TRUNC(2.567,2) // truncate to 2 decimal points. Result : 2.56 • SELECT TRUNC(2.567) // result: 2 Rapid POSTGRESQL learning. 15
  15. Mathematical Functions – Floor • Largest integer not greater than

    entered value • SELECT FLOOR(4.5) • Result: 4 – CEIL • Smallest integer not less that entered value • SELECT CEIL(4.5) • Result: 5 – Absolute value • SELECT abs(-4.88) – Division • SELECT DIV(4,7) – Modulo • SELECT MOD(4,5) – Square root • SELECT SQRT(25) – Cube Root • SELECT CBRT(45) Rapid POSTGRESQL learning. 16
  16. END OF PART 4 End of Part 4 – In

    part 5 we will discuss about: • STRING FUNCTIONS AND OPERATIONS • DATE AND TIME • SEQUENCES • CONDITIONAL EXPRESSIONS • SCHEMA and PRIVILEGES • INDEXES Rapid POSTGRESQL learning. 17