{"id":19123949,"url":"https://github.com/cheatsheet-lang/mysql-cheatsheet","last_synced_at":"2025-05-05T18:47:58.976Z","repository":{"id":36764084,"uuid":"223172819","full_name":"Cheatsheet-lang/MySQL-cheatsheet","owner":"Cheatsheet-lang","description":"Cheatsheet for MySQL","archived":false,"fork":false,"pushed_at":"2022-10-26T19:39:05.000Z","size":62,"stargazers_count":75,"open_issues_count":1,"forks_count":51,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-19T11:09:09.308Z","etag":null,"topics":["aggregation","cheatsheet","database","ddl-commands","dml-commands","dql-commands","hacktoberfest","hacktoberfest2020","joins","mysql","mysql-cheatsheet","procedure","savepoint","sql","transaction","views"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cheatsheet-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-21T12:48:44.000Z","updated_at":"2025-04-01T09:41:56.000Z","dependencies_parsed_at":"2022-09-02T12:22:52.532Z","dependency_job_id":null,"html_url":"https://github.com/Cheatsheet-lang/MySQL-cheatsheet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cheatsheet-lang%2FMySQL-cheatsheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cheatsheet-lang%2FMySQL-cheatsheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cheatsheet-lang%2FMySQL-cheatsheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cheatsheet-lang%2FMySQL-cheatsheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cheatsheet-lang","download_url":"https://codeload.github.com/Cheatsheet-lang/MySQL-cheatsheet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252556116,"owners_count":21767302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aggregation","cheatsheet","database","ddl-commands","dml-commands","dql-commands","hacktoberfest","hacktoberfest2020","joins","mysql","mysql-cheatsheet","procedure","savepoint","sql","transaction","views"],"created_at":"2024-11-09T05:27:43.987Z","updated_at":"2025-05-05T18:47:58.945Z","avatar_url":"https://github.com/Cheatsheet-lang.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# MySQL cheatsheet\n\nI have even uploaded the .sql file which you can download and directly run them in the sql prompt.\n\n### General Commands\nTo run sql files\n```sql\nsource \u003cfilename\u003e.sql;\n```\n\n## Data Types\n\n#### Integers\n\n```sql\nINT\n```\n```sql\nTINYINT\n```\n```sql\nSMALLINT\n```\n```sql\nMEDIUMINT\n```\n```sql\nBIGINT\n```\n\n#### Float\n\n```sql\nFLOAT(M,D)\n```\n\n#### Double\n\n```sql\nDOUBLE(M,D)\n```\n\n#### Decimal\n\n```sql\nDECIMAL(M,D)\n```\n\n#### Date\n\n```sql\nDATE -- Format - (YYYY-MM-DD)\n```\n\n#### Date Time\n\n```sql\nDATETIME -- Format - (YYYY-MM-DD HH:MM:SS)\n```\n\n#### Time\n\n```sql\nTIME -- Format - (HH:MM:SS)\n```\n\n#### String\n\n```sql\nCHAR(M)\n```\n\n```sql\nVARCHAR(M)\n```\n\n```sql\nBLOB or TEXT\n```\n\n## Comments\n\n```sql\n/* Multi\nline\ncomment */\n```\n\n```sql\n# Single Line Comment\n```\n\n```sql\n-- Single Line Comment\n```\n\n## Data Definition Language (DDL)\n\n#### Create Database\n```sql\ncreate database cheatsheet;\n```\n\n#### Use Database\n```sql\nuse cheatsheet;\n```\n\n#### Show Databases\n```sql\nshow databases;\n```\n\n#### Create Table\n```sql\ncreate table employee\n(\n    employee_id int primary key,              -- Setting primary key(1st method)\n    first_name varchar(50),\n    last_name varchar(50),\n    dept_number int,\n    age int,\n    salary real\n);\n\ncreate table department\n(\n    dept_number int,\n    dept_name varchar(50),\n    dept_location varchar(50),\n    emp_id int,\n    primary key(dept_number)                -- Setting primary key(2nd method)\n);\n```\n\n#### Show Tables\n```sql\nshow tables;\n```\n\n#### Describe Table\n```sql\ndescribe employee;\ndesc employee;\nshow columns in employee;\n```\n\n#### Rename Table\n```sql\nrename table employee to employee_table;\nalter table employee_table rename to employee;\n```\n\n#### Renaming Column\n```sql\nalter table employee change column employee_id emp_id int;\n```\n\n#### Add Constraint to Column\n```sql\nalter table employee change column first_name first_name varchar(50) not null;\n```\n\n#### Add Column\n```sql\nalter table employee add column salary real;\n```\n\n#### Drop Column\n```sql\nalter table employee drop column salary;\n```\n\n#### Modify the Datatype of column\n```sql\nalter table employee modify column salary int;\n```\n\n#### Truncate Table\n```sql\ntruncate employee;\n```\n\n#### Drop Table\n```sql\ndrop table department;\n```\n\n#### Drop Database\n```sql\ndrop database cheatsheet;\n```\n## Data Manipulation Language (DML)\n\n#### Insertion (Complete)\n```sql\ninsert into employee (employee_id, first_name, last_name, dept_number, age, salary) values (1, \"Anurag\", \"Peddi\", 1, 20, 93425.63);\n\ninsert into employee values (2, \"Anuhya\", \"Peddi\", 2, 20, 83425.63);\n```\n#### Insertion (Partial)\n```sql\ninsert into employee (employee_id, first_name) values (3, \"Vageesh\");\n```\n\n#### Updating all rows\n```sql\nupdate employee set salary = 1.1 * salary;\n```\n\n#### Updating a specified row\n```sql\nupdate employee set salary = 1.2 * salary where employee_id = 1;\n```\n\n#### Delete a specified row\n```sql\ndelete from employee where employee_id = 2;\n```\n\n#### Delete all rows\n```sql\ndelete from employee;\n```\n\n#### Enabling foreign key checks\n```sql\nset foreign_key_checks = 1;\n```\n\n#### Disabling foreign key checks\n```sql\nset foreign_key_checks = 0;\n```\n\n## Data Query Language (DQL)\n\n#### Display Table\n```sql\nselect * from employee;\n```\n\n#### Select only specified columns\n```sql\nselect employee_id, first_name from employee;\n```\n\n#### Select only few rows\n```sql\nselect employee_id, first_name from employee where age \u003e 25;\n```\n\n### Where Clause\n\n#### Greater than(\u003e)\n```sql\nselect * from employee where salary \u003e 3100;\n```\n\n#### Greater than equal to(\u003e=)\n```sql\nselect * from employee where salary \u003e= 3100;\n```\n\n#### Less than(\u003c)\n```sql\nselect * from employee where salary \u003c 4500;\n```\n\n#### Less than equal to(\u003c=)\n```sql\nselect * from employee where salary \u003c= 4350;\n```\n\n#### Range\n```sql\nselect * from employee where salary \u003e 3000 and salary \u003c 4000;\n```\n\n#### BETWEEN and AND\n```sql\nselect * from employee where salary between 3000 and 4000;\n```\n\n### OR\n```sql\nselect * from employee where salary = 3000 or salary = 4000;\n```\n\n#### Null\n```sql\nselect * from employee where salary is NULL;\n```\n\n#### Not null\n```sql\nselect * from employee where salary is NOT NULL;\n```\n\n### ORDER BY Clause\n```sql\nselect * from employee ORDER BY salary DESC;\n```\n\n#### Like Operator\n```sql\nselect * from employee where name like '%Jo%';          -- Similar to *Jo* in regrex\n```\n```sql\nselect * from employee where name like 'Jo_';           -- Similar to Jo. in regrex\n```\n\n## Views\n\n#### Create a view\n```sql\ncreate view personal_info as select first_name, last_name, age from employees;\n```\n\n#### Displaying view\n```sql\nselect * from personal_info;\n```\n\n#### Updating in view\n```sql\nupdate personal_info set salary = 1.1 * salary;\n```\n\n#### Deleting record from view\n```sql\ndelete from personal_info where age \u003c 40;\n```\n\n#### Droping a view\n```sql\ndrop view personal_info;\n```\n\n## Joins\n#### Inner join\n```sql\nselect e.fname, p.pname from employees as e inner join project as p on e.eid = p.eid;\n\n-- or\n\nselect e.fname, p.pname from employees as e join project as p on e.eid = p.eid;\n```\n\n#### Full outer join\n```sql\nselect e.fname, p.pname from employees as e left outer join project as p on e.eid = p.eid\nunion\nselect e.fname, p.pname from employees as e right outer join project as p on e.eid = p.eid;\n```\n\n#### Left outer join\n```sql\nselect e.fname, p.pname from employees as e left outer join project as p on e.eid = p.eid;\n```\n\n#### Right outer join\n```sql\nselect e.fname, p.pname from employees as e right outer join project as p on e.eid = p.eid;\n```\n\n#### Left outer join - inner join\n```sql\nselect e.fname, p.pname from employees as e left outer join project as p on e.eid = p.eid where p.pname is null;\n```\n\n#### Right outer join - inner join\n```sql\nselect e.fname, p.pname from employees as e right outer join project as p on e.eid = p.eid where e.fname is null;\n```\n\n## Aggregation\n\n#### Sum function\n```sql\nselect sum(population) from city group by population;\n```\n\n#### Average function\n```sql\nselect avg(population) from city group by population;\n```\n\n#### Count function\n```sql\nselect district, count(district) from city group by district;\n```\n\n#### Maximum function\n```sql\nselect max(population) from city group by population;\n```\n\n#### Minimum function\n```sql\nselect min(population) from city group by population;\n```\n\n#### Standard deviation function\n```sql\nselect stddev(population) from city group by population;\n```\n\n#### Group concat function\n```sql\nselect group_concat(population) from city group by population;\n```\n\n\u003e Only COUNT function considers NULL values\n\n## Procedure\n\n#### Creating procedure\n```sql\ncreate procedure display_dbs()\nshow databases;\n```\n\n#### Calling procedure\n```sql\ncall display_dbs();\n```\n\n#### Drop procedure\n```sql\ndrop procedure display_dbs;\n```\n\n## Transaction\n\n#### Begin transaction\n```sql\nstart transaction;\n```\n\n#### Create savepoint\n```sql\nsavepoint sv_pt;\n```\n\n```sql\ndelete from city;       -- changing data in table\n```\n\n#### Rollback\n```sql\nrollback to sv_pt;\n```\n\n#### Releasing savepoint\n```sql\nrelease savepoint sv_pt;\n```\n\n#### Commiting changes\n```sql\ncommit;\n```\n\n## Constraints\n\n#### Not Null\n```sql\nalter table Employee\nchange\n    Age\n    Age int NOT NULL;\n```\n\n#### Unique\n```sql\nalter table Employee\nadd constraint u_q unique(ID);\n```\n```sql\nalter table Employee -- drop the constraint\ndrop constraint u_q;\n```\n\n#### Primary Key\n```sql\nalter table Employee\nadd constraint p_k primary key(ID);\n```\n```sql\nalter table Employee -- drop the constraint\ndrop constraint p_k;\n```\n\n#### Check\n```sql\nalter table Employee\nadd constraint Age check (age\u003e=30);\n```\n```sql\nalter table Employee -- drop the constraint\ndrop check Age;\n```\n\n#### Default\n```sql\nalter table Employee\nalter Age set default 10;\n```\n```sql\nalter table Employee -- drop the constraint\nalter Age drop default;\n```\n\n## Cloning\n\n#### Duplicate a Table Schema\n```sql\ncreate table emp_dup like employee;\n```\n\n#### Duplicate a Table\n```sql\ncreate table emp_dup select * from employee;\n```\n\n## Access Controls\n\n#### Creating New User\n```sql\nCREATE USER 'username'@'localhost' IDENTIFIED BY 'password';\n```\nthe hostname part is set to `localhost`, so the user will be able to connect to the MySQL server only from the localhost.  \nTo grant access from another host, change the hostname part with the remote machine IP.  \n```sql\nCREATE USER 'username'@'172.8.10.5' IDENTIFIED BY 'user_password';\n```\nTo create a user that can connect from any host, '%' is used in the hostname part:\n```sql\nCREATE USER 'username'@'%' IDENTIFIED BY 'user_password';\n```\n\n#### Grant All Permissions\n```sql\nGRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';\n```\nAsterisks(\\*) refers to the database and table names respectively.  \nBy using asterisks we can give access of all the databases **or** tables to the user. \n\n#### Flush Privileges\n```sql\nFLUSH PRIVILEGES\n```\nAll the changes won't be in effect unless this query is fired.\n\n#### Specific User Permissions\n```sql\nGRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';\n```\n`type_of_permission` may have one of these value: \n* **ALL PRIVILEGES** - Allows user full access to a designated database (or if no database is selected, global access across the system).\n* **CREATE** - allows them to create new tables or databases.\n* **DROP** - allows them to them to delete tables or databases.\n* **DELETE** - allows them to delete rows from tables.\n* **INSERT** - allows them to insert rows into tables.\n* **SELECT** - allows them to use the `SELECT` command to read through databases.\n* **UPDATE** - allow them to update table rows.\n* **GRANT OPTION** - allows them to grant or remove other users’ privileges.  \nMultiple permissions are given with commas.\n\n#### Revoking permissions\n```sql\nREVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';\n```\n\n#### Show User's Current Permissions\n```sql\nSHOW GRANTS FOR 'username'@'localhost';\n```\n\n#### Delete a User\n```sql\nDROP USER 'username'@'localhost';\n```\n\n#### Set new password to a user\n```sql\nuse mysql;\nupdate user set authentication_string=PASSWORD(\"\u003cnew2-password\u003e\") where User='\u003cuser\u003e';\nflush privileges;\n```\n\n## Reset Root Password\nStop MySQL service \n```\nsudo systemctl stop mysql\n```\nRestart MySQL service without loading grant tables\n```bash\nsudo mysqld_safe --skip-grant-tables \u0026\n```\nThe apersand (\u0026) will cause the program to run in the background and `--skip-grant-tables` enables everyone to to connect to the database server without a password and with all privileges granted.\nLogin to shell\n```\nmysql -u root\n```\nSet new password for root\n```sql\nALTER USER 'root'@'localhost' IDENTIFIED BY 'MY_NEW_PASSWORD';\nFLUSH PRIVILEGES;\n```\nStop and start the server once again\n```\nmysqladmin -u root -p shutdown\nsudo systemctl start mysql\n```\n## Programming\n\n#### Declare variables\n```sql\nset @num = 10;\nset @name = 'Anurag';\n```\n\n#### Print them\n```sql\nselect @name;\n```\n\n#### For loop\n```sql\nset @n = 21;\nselect repeat(\"* \", @n := @n - 1) from information_schema.tables where @n \u003e 0;\n```\n\n## Miscellaneous\n\n#### Round\n```sql\nselect round(3.141596, 3);\n```\n\n#### Repeated concatenation\n```sql\nselect repeat(\"* \", 20);\n```\n\n#### Random float\n```sql\nselect rand();\n```\n\n#### Typecast to Int\n```sql\nselect cast(23.01245 as signed);\n```\n\n#### Concatenation\n```sql\nselect concat(\"Mahesh\", \" \", \"Chandra\", \" \", \"Duddu\", \"!\");\n```\n\n#### Extract Month\n```sql\nselect month(\"1998-12-30\");\n```\n\n#### Extract Year\n```sql\nselect year(\"1998-12-30\");\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheatsheet-lang%2Fmysql-cheatsheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcheatsheet-lang%2Fmysql-cheatsheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheatsheet-lang%2Fmysql-cheatsheet/lists"}