🖍️
Developer Note
  • Welcome
  • Git
    • Eslint & Prettier & Stylelint & Husky
  • Programming Language
    • JavaScript
      • Script Async vs Defer
      • Module
      • Const VS Let VS Var
      • Promise
      • Event Loop
      • Execution Context
      • Hoisting
      • Closure
      • Event Buddling and Capturing
      • Garbage Collection
      • This
      • Routing
      • Debounce and Throttle
      • Web Component
      • Iterator
      • Syntax
      • String
      • Array
      • Object
      • Proxy & Reflect
      • ProtoType
      • Class
      • Immutability
      • Typeof & Instanceof
      • Npm (Node package manager)
    • TypeScript
      • Utility Type
      • Type vs Interface
      • Any vs Unknown vs Never
      • Void and undefined
      • Strict Mode
      • Namespace
      • Enum
      • Module
      • Generic
    • Python
      • Local Development
      • Uv
      • Asyncio & Event loop
      • Context Manager
      • Iterator & Generator
      • Fast API
      • Pydantic & Data Class
    • Java
      • Compilation and Execution
      • Data Type
      • Enumeration
      • Data Structure
      • Try Catch
      • InputStream and OutputStream
      • Concurrent
      • Unicode Block
      • Build Tools
      • Servlet
      • Java 8
  • Coding Pattern
    • MVC vs MVVM
    • OOP vs Functional
    • Error Handling
    • MVC vs Flux
    • Imperative vs Declarative
    • Design Pattern
  • Web Communication
    • REST API
      • Web Hook
      • CORS issue
    • HTTPS
    • GraphQL
      • REST API vs GraphQL
      • Implementation (NodeJS + React)
    • Server-Sent Event
    • Web Socket
    • IP
    • Domain Name System (DNS)
  • Frontend
    • Progressive Web App (PWA)
    • Single Page & Multiple Page Application
    • Search Engine Optimiaztion (SEO)
    • Web bundling & Micro-frontend
      • Webpack
        • Using Webpack to build React Application
        • Using Webpack to build react library
      • Vite
      • Using rollup to build react library
      • Implementing micro frontend
    • Web Security
      • CSRF & Nonce
      • XSS
      • Click hijacking
    • Cypress
    • CSS
      • Core
        • Box Model
        • Inline vs Block
        • Flexbox & Grid
        • Pseudo Class
        • Position
      • Tailwind CSS
        • Shadcn
      • CSS In JS
        • Material UI
    • React
      • Core
        • Component Pattern
        • React Lazy & Suspense
        • React Portal
        • Error Boundary
        • Rendering Methods
        • Environment Variable
        • Conditional CSS
        • Memo
        • Forward Reference
        • High Order Component (HOC) & Custom Hook
        • TypeScript
      • State Management
        • Redux
        • Recoil
        • Zustand
      • Routing
        • React Router Dom
      • Data Fetching
        • Axios & Hook
        • React Query
        • Orval
      • Table
        • React Table
      • Form & Validation
        • React Hook Form
        • Zod
      • NextJS
        • Page Router
        • App Router
      • React Native
    • Angular
    • Svelte
      • Svelte Kit
  • Backend
    • Cache
      • Browser Cache
      • Web Browser Storage
      • Proxy
      • Redis
    • Rate limit
    • Monitoring
      • Logging
      • Distributed Tracing
    • Load Test
    • Encryption
    • Authentication
      • Password Protection
      • Cookie & Session
      • JSON Web Token
      • SSO
        • OAuth 2.0
        • OpenID Connect (OIDC)
        • SAML
    • Payment
      • Pre-built
      • Custom
    • File Handling
      • Upload & Download (Front-end)
      • Stream & Buffer
    • Microservice
      • API Gateway
      • Service Discovery
      • Load Balancer
      • Circuit Breaker
      • Message Broker
      • BulkHead & Zipkin
    • Elastic Search
    • Database
      • SQL
        • Group By vs Distinct
        • Index
        • N + 1 problem
        • Normalization
        • Foreign Key
        • Relationship
        • Union & Join
        • User Defined Type
      • NOSQL (MongoDB)
      • Transaction
      • Sharding
      • Lock (Concurrency Control)
    • NodeJS
      • NodeJS vs Java Spring
      • ExpressJS
      • NestJS
        • Swagger
        • Class Validator & Validation Pipe
        • Passport (Authentication)
      • Path Module
      • Database Connection
        • Integrating with MYSQL
        • Sequalize
        • Integrating with MongoDB
        • Prisma
        • MikroORM
        • Mongoose
      • Streaming
      • Worker Thread
      • Passport JS
      • JSON Web Token
      • Socket IO
      • Bull MQ
      • Pino (Logging)
      • Yeoman
    • Spring
      • Spring MVC
      • Spring REST
      • Spring Actuator
      • Aspect Oriented Programming (AOP)
      • Controller Advice
      • Filter
      • Interceptor
      • Concurrent
      • Spring Security
      • Spring Boot
      • Spring Cloud
        • Resilience 4j
      • Quartz vs Spring Batch
      • JPA and Hibernate
      • HATEOS
      • Swagger
      • Unit Test (Java Spring)
      • Unit Test (Spring boot)
  • DevOp
    • Docker
    • Kubernetes
      • Helm
    • Nginx
    • File System
    • Cloud
      • AWS
        • EC2 (Virtual Machine)
        • Network
        • IAM
          • Role-Service Binding
        • Database
        • Route 53
        • S3
        • Message Queue
        • Application Service
        • Serverless Framework
        • Data Analysis
        • Machine Learning
        • Monitoring
        • Security
      • Azure
        • Identity
        • Compute Resource
        • Networking
        • Storage
        • Monitoring
      • Google Cloud
        • IAM
          • Workload Identity Federation
        • Compute Engine
        • VPC Network
        • Storage
        • Kubernetes Engine
        • App Engine
        • Cloud function
        • Cloud Run
        • Infra as Code
        • Pub/Sub
    • Deployment Strategy
    • Jenkins
    • Examples
      • Deploy NextJS on GCP
      • Deploy Spring on Azure
      • Deploy React on Azure
  • Domain Knowledge
    • Web 3
      • Blockchain
      • Cryptocurrency
    • AI
      • Prompt
      • Chain & Agent
      • LangChain
      • Chunking
      • Search
      • Side Products
Powered by GitBook
On this page
  • Overview
  • Create Table
  • Key
  • Constraint
  • Introduction
  • Type
  • Date
  • Introduction
  • Method
  • String
  • Method
  • Number
  • Method
  • Case Study
  • Case 1
  • Case 2
  • References

Was this helpful?

  1. Backend
  2. Database

SQL

PreviousDatabaseNextGroup By vs Distinct

Last updated 2 months ago

Was this helpful?

Overview

Create Table

CREATE TABLE student_info(
	id VARCHAR(100) NOT NULL,
	// allow Chinese Character
	name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
	age int NOT NULL,
	class VARCHAR(100),
	PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT charset utf8mb4 COLLATE utf8mb4_unicode_ci;
  • Engine : define storage engines to decide how and where the table data is stored (Default = InnoDB)

  • Charset: define the character Sets to encode the characters (Default = utf8mb4)

  • Collate: define how to the field do comparison or ordering (ORDER BY, WHERE will be affected)

Key

  • key means a constraint imposed on the behaviour of the column

  • Primary Key(PK): a unique key that represent the row (usually a random number) and include unique and non-null constraint and primary index

  • Foreign Key(FK): a key that referencing the primary of other table in order to make sure the data in tables are valid and consistent

  • Composite Primary Key: combine 2 columns into a primary key

Constraint

Introduction

  • Constraints are the rules that we can apply on the type of data in a table. That is, we can specify the limit on the type of data that can be stored in a particular column in a table using constraints.

Type

  • NOT NULL: This constraint tells that we cannot store a null value in a column. That is, if a column is specified as NOT NULL then we will not be able to store null in this particular column any more.

CREATE TABLE Student
(
ID int(6) NOT NULL,
NAME varchar(10) NOT NULL,
ADDRESS varchar(20)
);
  • UNIQUE: This constraint when specified with a column, tells that all the values in the column must be unique. That is, the values in any row of a column must not be repeated.

CREATE TABLE Student
(
ID int(6) NOT NULL UNIQUE,
NAME varchar(10),
ADDRESS varchar(20)
);
  • CHECK: This constraint helps to validate the values of a column to meet a particular condition. That is, it helps to ensure that the value stored in a column meets a specific condition.

CREATE TABLE Student
(
ID int(6) NOT NULL,
NAME varchar(10) NOT NULL,
AGE int NOT NULL CHECK (AGE >= 18)
);

Date

Introduction

  • Date can be used to search for the range of data

  • If a String is entered into a column where its type is a date/ datetime, its format must be 'Year-Month-Day' or 'Year/Month/Day'

Method

Date Format

  • Structure : Date_Format(date, format) and output as a string

DATE_FORMAT(curdate(), '%d/%m/%Y') 

String to Date

  • Convert the String to date, Structure: STR_TO_DATE(input, the input format)

Str_to_date('5/7/2020','%e/%e/%Y') 
// output : 2020-07-05

Date Add/Min

SELECT "2017-06-15" + INTERVAL 10 DAY;  // 2017-06-25
SELECT "2017-06-15" - INTERVAL 10 DAY;  // 2017-06-05

Date Diff

SELECT datediff('2015-06-04','2015-07-04') // -30
SELECT datediff('2015-06-04','2015-05-04') // 31

Extract

  • Obtain the part of date as a string or number

EXTRACT(YEAR_MONTH FROM '2015-7-15') // 201507
SELECT MONTHNAME("2017-06-15"); // June

Get the day of week

SELECT DAYOFWEEK("2017-06-15"); // 5 which means Thursday
SELECT DayName("2017-06-15"); // Thursday

String

Method

Insert

SELECT insert("hitest", 3, 0, "test");    // hitesttest
SELECT insert("hitest", 3, 1, "example"); // hiexampleest
SELECT insert("hitest", 3, 9, "example"); // hiexample

Concat

SELECT CONCAT("SQL ", "Tutorial ", "is ", "fun!"); // SQL Tutorial is fun
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!") // SQL-Tutorial-is-fun!

Sub String

SELECT left("hitest", 2); // hi
SELECT right("hitest",2); // st
SELECT SUBSTR("test test", 6, 4); //test

TRIM

SELECT LTRIM(" test "); //test_
SELECT RTRIM(" test "); //_test
SELECT TRIM(" test "); //test

String Comparison

SELECT strcmp("test", "test"); // 0
SELECT strcmp("test123", "test"); // 1
SELECT strcmp("test", "test123"); // -1

Number

Method

ABS

SELECT ABS(-1) // 1
SELECT ABS(1)  // 1

Round

SELECT Ceil(25.25) // 26
SELECT Floor(25.75) // 25
SELECT ROUND(135.775, 0) // 136
SELECT ROUND(135.775, 2) //135.78

+/-

SELECT 25-2 // 23
SELECT 25+3 // 28

Random Number

SELECT Rand() 

Case Study

Case 1

Select * FROM Estate AS e 
JOIN District d ON e.district = d.pk 
GROUP BY d.pk 
ORDER BY 
Case 
    WHEN convert (d.name using big5) LIKE CONCAT(Char(63),'%') then 1 else 0 end
, d.willDelivery DESC;    

Case 2

INSERT INTO "PermissionGroupFeature" ("groupTypes", "featureName", "featureKey", "isBasic") 
SELECT ARRAY['BOT', 'FLOW', 'INSIGHT']::"GroupType"[], 'Audit Log' , 'audit-log', false WHERE NOT EXISTS
(SELECT 1 FROM "PermissionGroupFeature" WHERE "featureKey" = 'audit-log');

References

LogoWhat is Normalization in DBMS (SQL)? 1NF, 2NF, 3NF, BCNF Database with ExampleGuru99
LogoAn in-depth look at Database IndexingfreeCodeCamp.org