This course teaches developers how to build applications with MySQL 8.0 for Developers. Learn development best practices and techniques for MySQL solutions.
Course Content
Introduction to MySQL
- Objectives
- Course Goals
- Course Lesson Map
- Introductions
- Classroom Environment
- MySQL Powers the Web
- MySQL Market Share: DB-Engines 2019
- MySQL Enterprise Edition
- Oracle Premier Support for MySQL
- MySQL and Oracle Integration
- MySQL Websites
- Community Resources
- Oracle University: MySQL Training
- MySQL Certification
- Summary
- Practice 1: Overview
Connectors and APIs
- Objectives
- Topics
- Programming MySQL
- MySQL Connectors
- Connectors Developed by Oracle
- Connectors Developed by the Community
- Quiz
- Topics
- MySQL and PHP
- Topics
- Connector/J
- Downloading Connector/J
- Installing Connector/J
- Topics
- Connector/Python
- Summary
- Practice 2: Overview
Using Connectors
- Objectives
- Topics
- Using PHP mysqli to Connect to and Query MySQL
- Example: PHP and mysqli
- Another Example: PHP and mysqli
- Using PDO_MySQL to Connect to and Query MySQL
- Retrieving Query Results with PDO_MySQL
- Example: PHP and PDO_MySQL
- Buffered Queries in PHP
- Quiz
- Topics
- Connecting to the MySQL Server with Connector/J
- Obtaining the Connector/J Connection Object
- Disconnecting from MySQL with Java
- Using Java to Execute SQL
- Example: Connector/J – executeUpdate()
- Example: Connector/J – executeQuery()
- JavaServer Pages
- JavaServer Pages Standard Tag Library (JSTL)
- Accessing MySQL with JSP/JSTL
- Quiz
- Topics
- Using Python to Connect to the MySQL Server
- Using Python to Execute SQL
- Example: Connector/Python – Modifying the Database
- Example: Connector/Python – Data Retrieval with fetchone()
- Example: Connector/Python – Data Retrieval with the cursor Object
- Buffered Cursors in Connector/Python
- Python CGI Programming
- Example: Python/MySQL CGI Programming
- Quiz
- Topics
- Connection Pooling
- Topics
- Using Special Characters in SQL Statements
- Referring to NULL Values in SQL Statements
- Dealing With NULL Values in the Result Set
- Topics
- Obtaining Connection Parameters
- Topics
- Securing Connections with SSL
- Connecting Via SSL with PDO_MySQL
- Connecting Via SSL with Connector/J
- Connecting Via SSL with Connector/Python
- Topics
- MySQL 8.0 and the caching_sha2_password Plugin
- Options for Connector not Supporting caching_sha2_password Plugin
- Summary
- Practice 3: Overview
Prepared Statements
- Objectives
- Topics
- Why Use Prepared Statements?
- Limitations of Prepared Statements
- SQL Injection
- Topics
- User-Defined Variables
- Topics
- Preparing a Statement
- Executing a Prepared Statement
- Deallocating a Prepared Statement
- Prepared Statement Example: SQL
- Quiz
- Topics
- Preparing Statements with Connectors
- Preparing Statements with PHP/PDO
- Example: Preparing Statements with PHP/PDO
- Preparing Statements with Connector/J
- Example: Preparing Statements with Connector/J
- Preparing Statements with Connector/Python
- Example: Preparing Statements with Connector/Python
- Quiz
- Summary
- Practice 4: Overview
Handling Errors and Warnings
- Objectives
- Topics
- SQL Modes
- The Default SQL Mode
- Setting SQL Modes
- Strict Mode
- Example: Strict Mode
- The NO_ENGINE_SUBSTITUTION SQL Mode
- Other Important SQL Modes
- Topics
- Interpreting Error Messages
- Investigating Error Codes with perror
- Troubleshooting Syntax Errors
- Using SHOW WARNINGS
- Example: SHOW WARNINGS
- Using SHOW ERRORS
- Topics
- Using MySQL Diagnostics
- Retrieving Diagnostic Information
- Example: Retrieving Diagnostic Information
- Topics
- Handling Errors When Using Connectors
- Connector/J: The SQLException Class
- Example: SQLException
- PHP/PDO Error Handling Mode
- PHP/PDO: The PDOException Class
- Example: PHP/PDO Exception Handling
- Connector/Python: The mysql.connector.Error Class
- Example: Connector/Python Error Handling
- Quiz
- Summary
- Practice 5: Overview
Creating Database-Driven Web Applications
- Objectives
- Topics
- Database-Driven Web Application
- Client Request
- Server Response
- Topics
- Displaying Query Results
- Displaying Query Results in Paragraph Tags (PHP/PDO)
- Displaying Query Results in Paragraph Tags (Java/JSP)
- Displaying Query Results in Paragraph Tags (Python)
- Separating Row Fetching and HTML Generation
- Quiz
- Displaying Query Results in a List
- Displaying Query Results in a List (PHP/PDO)
- Display Query Results in a List (Java/JSP)
- Displaying Query Results in a List (Python)
- Displaying Query Results in a Table
- HTML Table Markup
- Displaying Query Results in a Table (PHP/PDO): Header Row
- Displaying Query Results in a Table (PHP/PDO): Table Body
- Displaying Query Results in a Table (Java/JSP)
- Displaying Query Results in a Table (Python)
- Displaying Query Results as Hyperlinks (PHP/PDO)
- Displaying Query Results as Hyperlinks (Java/JSP)
- Displaying Query Results as Hyperlinks (Python)
- Topics
- Web Forms
- Comparing GET and POST Requests
- Web Form Processing
- Retrieving Request Parameters with PHP
- Retrieving Request Parameters with JSP/JSTL
- Retrieving Request Parameters with Python/CGI
- Topics
- Using Hyperlinks for Navigation (Single Page)
- Using Hyperlinks for Navigation (Multiple Pages)
- Topics
- Displaying Query Results on Multiple Pages
- Topics
- Using Hyperlinks to Sort by Column
- Summary
- Practice 6: Overview
Working with Views
- Objectives
- Topics
- Views
- Benefits of Views
- Creating Views
- Example: CREATE VIEW
- CREATE VIEW Options
- View Column Names
- Column Names Derived From Expressions
- Topics
- Updatable Views
- Example: Updatable View
- Insertable Views
- Updatable Versus Insertable Views
- Using WITH CHECK OPTION
- Using WITH CHECK OPTION: Example
- Updating Multiple-table Views
- Quiz
- Topics
- Checking Views
- Checking a View: Example
- Topics
- Altering Views
- Altering a View: Example
- Dropping Views
- Topics
- Obtaining View Metadata with INFORMATION_SCHEMA
- Obtaining View Metadata with INFORMATION_SCHEMA.TABLES: Example
- Obtaining View Metadata with INFORMATION_SCHEMA.VIEWS: Example
- Obtaining View Metadata with SHOW CREATE VIEW
- Other Metadata Statements for Views
- Quiz
- Summary
- Practice 7: Overview
Working with Strings
- Objectives
- Topics
- SQL Expressions
- String Expressions
- String Functions
- Topics
- Concatenating Strings Using MySQL Functions
- Concatenating NULL Values
- Concatenating Strings Using the || Operator
- Retrieving the Left and Right Portions of a String
- Retrieving Part of a String
- Trimming a String
- Inserting Into and Replacing Portions of a String
- Converting to Uppercase and Lowercase
- Topics
- Determining String Length
- Comparing Strings
- Finding Strings Within Strings
- Quiz
- Topics
- String Comparison and Sorting Behavior
- Character Sets and Collations
- Character Set and Collation Functions
- Changing the Default Collation
- Topics
- Simple Pattern Matching Using LIKE
- Examples: LIKE and NOT LIKE
- Complex Pattern Matching Using RLIKE
- Regular Expression Syntax
- Examples: Literal and Anchors
- Example: Alternative
- Example: Complex Pattern
- Examples: Escape Character
- Quiz
- Topics
- MySQL Full-Text Search
- Full-Text Index
- Natural Language Full-Text Search
- Boolean Full-Text Search
- Boolean Mode Operators
- Full-Text Index Configurations
- Summary
- Practice 8: Overview
Working with Numeric and Temporal Data
- Objectives
- Topics
- Boolean Expressions
- Numeric Literals
- Arithmetic Operators
- Numeric Expressions: Examples
- Topics
- Temporal Expressions
- Temporal Data Types
- Interval Arithmetic
- Quiz
- Topics
- Numeric Functions
- Using ABS() and SIGN()
- Approximating Numbers With FLOOR() and CEILING()
- Approximating Numbers With ROUND()
- Trigonometric Functions
- Quiz
- Topics
- Temporal Functions
- Temporal Functions Syntax
- Displaying the Current Date and Time
- Determining Date and Time Format
- Customizing the Output Format
- Retrieving Components of Dates and Times
- Creating Date and Time Values
- Performing Date Arithmetic Using Functions
- Topics
- CASE Expressions
- Examples: CASE Expressions
- NULLIF() and IFNULL() Functions
- IF() Function
- Quiz
- Summary
- Practice 9: Overview
Transactions
- Objectives
- Topics
- What Is a Transaction?
- Handling Partial Operations
- The ACID Properties of Transactions
- Topics
- Transaction Control Statements
- autocommit Mode
- Controlling autocommit Mode
- Statements Causing an Implicit COMMIT
- Topics
- General Approach to Coding Transactional Statements
- Coding Transactional Statements in PHP/PDO
- Coding Transactional Statements in Connector/J
- Coding Transactional Statements in Connector/Python
- Topics
- Retrieving the AUTO_INCREMENT Value of the Last Insertion
- Retrieving the ID of the Last Insert by Using PHP/PDO
- Retrieving the ID of the Last Insert by Using Connector/J
- Retrieving the Last Insert ID by Using Connector/Python
- Quiz
- Topics
- Consistency Issues
- Dirty Read: Example
- Non-repeatable Read: Example
- Phantom Read: Example
- Topics
- Isolation Levels
- Resolving Consistency Issues with Isolation Levels
- Setting Isolation Levels
- Displaying the Current Isolation Level
- Topics
- Locking
- Locking Reads
- SELECT…FOR SHARE: Example
- SELECT…FOR UPDATE: Example
- Quiz
- Summary
- Practice 10: Overview
Optimizing Queries
- Objectives
- Topics
- Why Optimize?
- Optimization Strategies
- Topics
- SQL Parser and Query Optimizer
- Topics
- Using Indexes for Optimization
- General Index Types
- Special Index Types
- Creating Indexes
- Adding Indexes to a New Table
- Multiple and Unique Value Indexes
- Primary Key Indexes
- Functional Index
- Naming Indexes
- Adding Indexes to Existing Tables
- Using Index Prefixes
- Indexing Large Columns Without Prefixes
- Indexing with Prefixes
- Evaluating Index Prefixes
- Leftmost Index Prefixes
- Leftmost Index Prefixes: Example
- Invisible Indexes
- Dropping Indexes
- Quiz
- Topics
- Using EXPLAIN to Analyze Queries
- How EXPLAIN Works
- EXPLAIN Output: Example 1
- EXPLAIN Output: Example 2
- EXPLAIN Output Columns
- EXPLAIN for Access Method Analysis
- EXPLAIN Types
- EXPLAIN for Simple Join
- Explanation of Simple Join Output
- Extra Column: Signs of Efficient Queries
- Extra Column: Signs of Inefficient Queries
- EXPLAIN Output in JavaScript Object Notation (JSON) Format
- Visual EXPLAIN
- Topics
- Query Rewriting Techniques
- Avoiding Column Expressions in Comparisons
- Creating Indexes to Support Joins
- Comparing Similar Data Types
- Avoiding Leading Wildcards in “LIKE” Patterns
- Creating Functional Indexes for Expressions
- Optimizing Queries by Limiting Output
- Using Summary Tables
- Using Summary Tables: Example
- Optimizing Data Modification Statements
- Quiz
- Topics
- MySQL Enterprise Monitor
- MySQL Enterprise Monitor Query Analyzer
- Summary
- Practice 11: Overview
Stored Routines
- Objectives
- Topics
- What Is a Stored Routine?
- Uses of Stored Routines
- Issues with Stored Routines
- Topics
- Creating Stored Procedures
- Creating Stored Functions
- Compound Statements in Stored Routines
- Compound Statement: Example
- Topics
- Local and User Variables
- DECLARE Statement
- Rules of Precedence for Variable Names
- Using SELECT…INTO
- Assigning Values to Variables with SET
- Parameter Declarations
- Parameter Declaration Syntax
- Topics
- Stored Routines in Databases
- Examining Stored Routines
- Removing Stored Routines
- Quiz
- Topics
- Control Flow Statements
- IF Statement
- CASE Statement: Simple Case
- CASE Statement: Searched Case
- REPEAT Statement
- WHILE Statement
- LOOP Statement
- LEAVE and ITERATE
- Quiz
- Topics
- Declaring Error Handlers
- Declaring Named Conditions
- RESIGNAL
- SIGNAL
- Topics
- Cursors
- Declaring Cursors
- Working with Cursors
- Working with Cursors: Example
- Limitations of Cursors
- Topics
- Limitations of Stored Routines
- Limitations of Stored Functions
- Summary
- Practice 12: Overview
Triggers and Scheduled Events
- Objectives
- Topics
- What Are Triggers?
- Trigger Use Cases
- Creating Triggers
- Trigger Events
- Using BEFORE Triggers
- Using AFTER Triggers
- Using OLD and NEW Qualifiers
- Trigger Metadata
- Trigger Error Handling
- Deleting Triggers
- Trigger Restrictions
- Quiz
- Topics
- Scheduling Database Operations
- Using the MySQL Event Scheduler
- Managing Events
- Summary
- Practice 13: Overview
Reporting
- Objectives
- Topics
- Calculating Totals and Averages
- Finding Minimum and Maximum Values
- Finding the Row Containing Minimum or Maximum Value
- Finding All Rows Containing the Minimum or Maximum Value
- Counting Rows
- Performing Multiple Counts on a Set of Rows
- Conditional Counting
- Calculating Percentages
- Multiple Conditions Within Aggregate Functions
- Quiz
- Topics
- Grouping by the Results of an Expression
- Grouping Temporal Data
- Grouping Nonrepetitive Data
- Grouping Nonrepetitive Data: Example
- Topics
- Generating Row Numbers
- Rank and Row Number
- Calculating Percentage Using Column Total
- Calculating Percentage using Partitioned Total
- Topics
- Materialized Views
- Summary Tables: Advantages and Disadvantages
- Topics
- Crosstab Reports
- Showing Totals in Crosstab Reports
- Topics
- Creating a SQL Bar Chart
- Adding Extra Information to the Bar Chart
- Topics
- Decision Tables
- Explaining the Decision Table
- Implementing the Decision Table in MySQL: Step 1
- Implementing the Decision Table in MySQL: Step 2
- Implementing the Decision Table in MySQL: Step 3
- Summary
- Practice 14: Overview
Spatial Data
- Objectives
- Topics
- Spatial Data Support in MySQL
- Topics
- OpenGIS Geometry Model
- Geometry Class
- More Geometry Class Properties
- Point Class
- Curve Class
- LineString Class
- Surface Class
- Polygon Class
- Collections of Geometries
- Topics
- Spatial Data Formats
- Representing Geometry Objects as WKT
- Creating Geometry Objects from WKT
- Well-Known Binary (WKB) Format
- Creating and Populating Spatial Columns
- Fetching Spatial Data
- Quiz
- Topics
- Spatial Reference Systems
- Spatial Reference IDs (SRIDs)
- Specifying the SRID
- Distance Calculations Depend on the SRID
- Topics
- Analyzing Spatial Data
- Spatial Indexes
- Creating and Dropping Spatial Indexes
- Creating a Spatial Index: Examples
- Topics
- Spatial Data Functions: Review
- Other Spatial Data Functions
- Examples of ST_Contains() and ST_Within()
- Examples of ST_Intersects()
- Examples of ST_Area()
- Quiz
- Summary
- Practice 15: Overview
JSON Data
- Objectives
- Topics
- JavaScript Object Notation (JSON)
- JSON Objects
- JSON Arrays
- Combinations of Nested Objects and Arrays
- Quiz
- Topics
- MySQL JSON Data Type
- Using a JSON Column in a Table
- Querying a JSON Column in a Table
- Topics
- JSON Functions in MySQL
- JSON_OBJECT() Function
- JSON_ARRAY() Function
- JSON_OBJECT() and JSON_ARRAY() Can Be Nested
- JSON Paths
- JSON Path Examples
- JSON_EXTRACT() Function
- JSON_UNQUOTE() Function
- JSON_PRETTY() Function
- JSON_REMOVE() Function
- JSON_SET() Function
- Updating JSON Columns
- Other JSON Functions
- Quiz
- Topics
- Generated Columns
- Indexing JSON Data with a Generated Column
- Storing Generated Columns
- Summary
- Practice 16: Overview
Document Store
- Objectives
- Topics
- NoSQL: Overview
- NoSQL and Traditional RDBMS: Comparison
- Topics
- Document Store and X DevAPI Functions
- A Document Store Example in world_x
- Example of a JSON Document in the countryinfo Collection
- X DevAPI Functions – Connecting to a Schema
- X DevAPI Functions – Accessing, Adding, and Dropping Collections
- X DevAPI Functions – Collections and Relational Tables
- X DevAPI Functions – Additional Functions
- X DevAPI Functions – Examples of Chaining Functions
- Quiz
- Topics
- Using X DevAPI with PHP to Access a Document Store
- PHP with X DevAPI – Reading Data from an Existing Collection
- PHP with X DevAPI – Creating and Modifying a Collection
- PHP with X DevAPI – Working with Relational Tables
- Topics
- Using X DevAPI with Connector/J to Access a Document Store
- Connector/J with X DevAPI – Reading Data from an Existing Collection
- Connector/J with X DevAPI – Creating and Modifying a Collection
- Connector/J with X DevAPI – Working with Relational Tables
- Topics
- Using X DevAPI with Connector/Python to Access a Document Store
- Connector/Python with X DevAPI – Reading Data from an Existing Collection
- Connector/Python with X DevAPI – Creating and Modifying a Collection
- Connector/Python with X DevAPI – Working with Relational Tables
- Topics
- Using MySQL Shell to Access JSON
- Starting MySQL Shell
- Using MySQL Shell to Access a Document Store – SQL Mode
- Using MySQL Shell to Access a Document Store – Current Schema
- Accessing the Document Store in MySQL Shell
- Accessing the Document Store in MySQL Shell – Vertical Format
- Accessing the Document Store in MySQL Shell – Pretty-printing
- Quiz
- Topics
- Issuing Python statements from MySQL Shell – Python as the Active Language
- 17-41
- Python in MySQL Shell – Reading Data from an Existing Collection
- Python in MySQL Shell – Executing X DevAPI Functions Interactively
- Python in MySQL Shell – Creating and Modifying a Collection
- Python in MySQL Shell – Working with Relational Tables
- Summary
- Practice 17: Overview
Conclusion
- Course Goals
- Oracle University: MySQL Training
- MySQL Websites
- Your Evaluation
- Thank You
- Q&A Session
Related Courses
HeatWave MySQL: DB System Essentials LVC
After completing this course, you should be able to: Create..
2 Days
13 Lectures
MySQL 8.0 for Database Administrators LVC
This course will be delivered with a live lab The..
5 Days
15 Lectures
MySQL 8.0: Performance Tuning
After attending this course you will understand performance tuning concepts;..
4 Days
13 Lectures
MySQL High Availability with InnoDB Cluster ELS
MySQL High Availability with InnoDB Cluster teaches DBAs to implement..