Rapid postgresql learning, part 4
Click here to load reader
-
Upload
ali-masudianpour -
Category
Technology
-
view
152 -
download
1
Transcript of Rapid postgresql learning, part 4
![Page 1: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/1.jpg)
Rapid POSTGRESQL learning, PART-5BY: ALI MASUDIANPOUR [email protected]
RAPID POSTGRESQL LEARNING. 1
![Page 2: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/2.jpg)
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
![Page 3: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/3.jpg)
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
![Page 4: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/4.jpg)
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 1SAVEPOINT [save point name]UPDATE z SET a=14 WHERE 1SOLLBACK 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
![Page 5: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/5.jpg)
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
![Page 6: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/6.jpg)
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
![Page 7: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/7.jpg)
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
![Page 8: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/8.jpg)
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
![Page 9: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/9.jpg)
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
![Page 10: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/10.jpg)
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
![Page 11: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/11.jpg)
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
![Page 12: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/12.jpg)
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
![Page 13: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/13.jpg)
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
![Page 14: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/14.jpg)
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
![Page 15: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/15.jpg)
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
![Page 16: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/16.jpg)
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
![Page 17: Rapid postgresql learning, part 4](https://reader038.fdocuments.in/reader038/viewer/2022100603/559582da1a28ab09548b46ad/html5/thumbnails/17.jpg)
END OF PART 4End 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