Ravindra BagaleCourses & study guides English

MariaDB मध्ये Database आणि Table कसं बनवायचं

तुम्ही वापरता ते प्रत्येक app, Instagram सुद्धा, आपले users, posts आणि messages एका database मध्ये ठेवतं. या पहिल्या SQL chapter मध्ये आपण Amazon Linux वर MariaDB install करू, त्यात login करू, आणि स्वतः एक छोटा Instagram सारखा database बनवू: database आणि users table बनवू, प्रत्येक column साठी data type निवडू, INSERT ने rows जोडू आणि SELECT ने परत वाचू.

या class मध्ये काय शिकणार

  • Amazon Linux वर MariaDB install आणि start करणं, sudo mysql ने login, आणि ALTER USER ने root password सेट करणं
  • MariaDB prompt कसा चालतो: semicolons, अनेक lines च्या queries, ->, Ctrl+C, आणि socket error
  • Database, table, row आणि column, आणि SHOW DATABASES, CREATE DATABASE, USE
  • Data types: INT, VARCHAR, DATE, TIME, FLOAT, BOOLEAN, आणि phone number VARCHAR का
  • CREATE TABLE users, SHOW TABLES आणि DESC
  • CRUD: INSERT, SELECT, UPDATE, DELETE
  • सगळे columns किंवा नाव दिलेले columns सह INSERT, NULL, दोन नेहमीचे errors, आणि एकदम अनेक rows
  • SELECT * विरुद्ध नाव दिलेले columns

1. MariaDB install, start आणि login

का: Database server हा Apache किंवा Nginx सारखाच एक program आहे. काही साठवण्याआधी तो install होऊन चालू असला पाहिजे.

काय: Amazon Linux वर package mariadb105-server आणि service mariadb. MariaDB हा MySQL चा drop-in replacement आहे, म्हणून तेच SQL आणि तीच mysql command चालते.

कसं:

  1. SSH ने तुमच्या Amazon Linux EC2 instance ला connect व्हा.
  2. sudo yum install mariadb105-server -y server install करतो.
  3. sudo service mariadb start तो start करतो.
  4. sudo service mariadb status ने active (running) दिसलं पाहिजे.
  5. sudo mysql तुम्हाला database च्या root user म्हणून login करतो. पहिल्यांदा password लागत नाही, कारण तुम्ही sudo वापरलं.
  6. Prompt MariaDB [(none)]> होतो. आता तुम्ही Linux शी नाही, database शी बोलत आहात.
  7. root ला password द्या (quotes अगदी असेच ठेवा):

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD';
    
  8. बाहेर पडायला exit; type करा.

  9. आता पासून mysql -u root -p (किंवा sudo mariadb -u root -p) ने login करा. -u म्हणजे user, आणि -p password विचारतो.
  10. Password type करून Enter दाबा. Type करताना screen वर काहीच दिसत नाही; ते normal आहे.

Password सेट झाल्यावर नुसता sudo mysql ERROR 1045 ... Access denied देतो: त्याऐवजी -u root -p वापरा.

Amazon Linux वर MariaDB: install, start, पहिलंlogin $ sudo yum install mariadb105-server -y 1. MariaDB server install करा. $ sudo service mariadb start 2. Database service start करा. $ sudo mysql 3. पहिलं login: root, अजून password नाही. MariaDB> ALTER USER 'root'@'localhost' IDENTIFIED BY'YOUR_STRONG_PASSWORD'; 4. root ला password द्या. MariaDB> exit; 5. MariaDB shell मधून बाहेर. $ mysql -u root -p 6. आता पासून: user root, password विचार.

Figure 1. Animation: install, start, sudo mysql ने पहिलं login, ALTER USER ने root password, exit, आणि मग नेहमी mysql -u root -p.

Classroom line

Whenever an error mentions .sock, remember: your database service isn't running.

Can't connect to local server through socket '/var/lib/mysql/mysql.sock' दिसलं तर MariaDB service बंद आहे. sudo service mariadb start चालवा आणि परत login करा.

2. MariaDB शी बोलणं: semicolons आणि arrow prompt

काय:

  1. प्रत्येक SQL statement semicolon ; ने संपतो. MariaDB ; दिसल्यावरच तो चालवतो.
  2. ; शिवाय Enter दाबलं तर prompt -> होतो. MariaDB statement च्या उरलेल्या भागाची वाट बघतो.
  3. एक statement अनेक lines मध्ये जाऊ शकतो. पण keyword (DATABASE, CREATE) कधी दोन lines मध्ये तोडू नका.
  4. Ctrl+C तुम्ही type करत असलेला statement cancel करतो. Ctrl+L screen साफ करतो.
  5. SQL keywords case-sensitive नाहीत: show databases; आणि SHOW DATABASES; एकच. Keywords उठून दिसावेत म्हणून आपण capital मध्ये लिहितो.
  6. Names वेगळी: Linux वर database आणि table names default ने case-sensitive असतात, म्हणून users आणि Users हे दोन वेगळे tables. Lowercase नावं निवडा आणि तीच वापरा.

Classroom line

(Forgetting the semicolon) It happens in a hurry, when you're not used to it yet.

कसं:

  1. SHOW DATABASES type करून Enter दाबा. -> येतो.
  2. ; type करून Enter दाबा. List दिसते.
  3. SHOW DAT type करून Ctrl+C दाबा. अर्धवट statement cancel होतो.
Query semicolon आल्यावरच चालते MariaDB [(none)]> SHOW DATABASES -> ; +--------------------+ | information_schema | | ... | Arrow prompt MariaDB उरलेल्याची वाट बघतो. ; type करून Enter दाबा. विचार बदलला? Ctrl+C query cancel करतो. Ctrl+L screen साफ करतो. एक query अनेक lines मध्ये चालते; पण keywordकधी दोन lines मध्ये तोडू नका.

Figure 2. Statement semicolon ला चालतो. Arrow prompt म्हणजे MariaDB उरलेल्याची वाट बघतो; Ctrl+C cancel, Ctrl+L screen साफ.

3. Database, table, row आणि column

का: App वेगवेगळ्या प्रकारचा data ठेवतं: users, posts, reels, chats. प्रत्येक प्रकाराला स्वतःचा table, आणि एका app चे सगळे tables एका database मध्ये.

Classroom line

What data does Instagram have? Users, reels, posts, chats...

काय:

  1. Database म्हणजे व्यवस्थित ठेवलेला data चा संग्रह. एका MariaDB server मध्ये अनेक databases असू शकतात.
  2. Table एका प्रकारचा data ठेवतो, spreadsheet सारखा.
  3. Column (field) म्हणजे माहितीचा एक भाग, जसं name किंवा city.
  4. Row (record) म्हणजे एक entry, जसं एक user.
  5. Interview मध्ये database म्हणजे database server manage करतो असा tables चा container, असं सांगा. Disk वर MariaDB प्रत्येक database /var/lib/mysql खाली एका folder मध्ये ठेवतो, पण त्या files तुम्ही कधीच direct edit करत नाही; data सोबत नेहमी SQL मधूनच काम करायचं.

Classroom line

If an interview asks what a database is, don't answer "just a folder".

Database server, database, tables, rows आणिcolumns MariaDB server instagram database users posts reels chats database मधले tables users एक table id name city age 1 ravi solapur 30 2 siya pune 27 3 maya mumbai 25 Column = एक field (name). Row = एक record (एक user). Database म्हणजे tables मध्ये साठवलेला, व्यवस्थितठेवलेला data.

Figure 3. MariaDB server मध्ये databases, database मध्ये tables, आणि table म्हणजे columns (fields) आणि rows (records).

4. SHOW DATABASES, CREATE DATABASE आणि USE

का: App तिचे tables स्वतःच्या database मध्ये ठेवते. कोणताही table बनवण्याआधी तो database बनवून select करावा लागतो.

कसं:

  1. SHOW DATABASES; databases ची list देतो. information_schema, mysql आणि performance_schema हे MariaDB चे स्वतःचे; त्यांना हात लावू नका.
  2. CREATE DATABASE instagram; नवीन database बनवतो.
  3. CREATE DATABASE instagram; परत चालवा: ERROR 1007 ... database exists. दुसरं नाव निवडा, किंवा असलेलाच वापरा.
  4. परत SHOW DATABASES;: list मध्ये instagram आहे.
  5. USE instagram; Database changed म्हणतो, आणि prompt MariaDB [(none)]> वरून MariaDB [instagram]> होतो. आता बनवलेला प्रत्येक table instagram मध्ये जातो.

Classroom line

To create it's CREATE DATABASE, but to see them it's SHOW DATABASES.

5. Data types: प्रत्येक column मध्ये काय ठेवता येतं

का: प्रत्येक column साठी तुम्ही database ला सांगता की त्यात कोणत्या प्रकारची value असेल. मग तो value बरोबर साठवतो आणि चुकीच्या values नाकारतो.

काय:

  1. INT: पूर्ण संख्या, जसं id किंवा age. सगळ्यात मोठा INT 2,147,483,647.
  2. VARCHAR(n): n characters पर्यंत text: अक्षरं, अंक, symbols, emoji सुद्धा. योग्य n निवडा, उदा. नावासाठी VARCHAR(100).
  3. DATE: तारीख, 'YYYY-MM-DD' अशी.
  4. TIME: दिवसाची वेळ, 'HH:MM:SS' अशी.
  5. FLOAT: दशांश असलेल्या संख्या, जसं वजन. पैशासाठी DECIMAL वापरा, तो नेमक्या values ठेवतो.
  6. BOOLEAN: true किंवा false (MariaDB तो 1 किंवा 0 म्हणून ठेवतो).

Classroom line

For the phone number column, will you use integer or varchar?

Phone number VARCHAR मध्ये:

  1. 10 अंकी mobile number 2,147,483,647 पेक्षा मोठा, म्हणून INT तो Out of range error देऊन नाकारतो.
  2. Phone numbers मध्ये +91, spaces किंवा सुरुवातीचा 0 असू शकतो, जो number type मध्ये हरवतो.
  3. Phone numbers ची बेरीज किंवा गुणाकार कधी करत नाही. ज्यावर गणित करत नाही, ते text म्हणून ठेवा.
नेहमीचे data types: प्रत्येक column साठी एकनिवडा INT पूर्ण संख्या 30, -5, 1000 जास्तीत जास्त 2,147,483,647 VARCHAR(n) n characters पर्यंत text 'ravi', 'Pune411001' अक्षरं, अंक, symbols DATE तारीख '1998-07-15' YYYY-MM-DD TIME दिवसाची वेळ '14:30:00' HH:MM:SS FLOAT दशांश असलेल्या संख्या 72.5 पैशासाठी नेमकं DECIMAL BOOLEAN True किंवा false TRUE, FALSE 1 आणि 0 म्हणून साठवतो Phone number? INT नाही, VARCHAR. 10 अंकी number INT साठी खूप मोठा, आणि phones मध्ये +91, spacesकिंवा सुरुवातीचा 0 असतो. त्यावर गणित कधी करत नाही.

Figure 4. नेहमीचे data types उदाहरणांसह. Phone number VARCHAR मध्ये: INT साठी खूप मोठा, त्यात +91 किंवा spaces असू शकतात, आणि त्यावर गणित करत नाही.

6. CREATE TABLE, SHOW TABLES आणि DESC

का: Table म्हणजे तुमच्या data चा वर्षानुवर्षं राहणारा आकार. बनवल्यानंतर लगेच DESC ने तपासलं की data जाण्याआधीच चुकीचा type पकडला जातो.

कसं:

  1. Prompt मध्ये [instagram] आहे ना ते बघा (नसेल तर USE instagram;).
  2. Table बनवा:

    CREATE TABLE users (id INT, name VARCHAR(100), city VARCHAR(50), age INT);
    
  3. Query OK, 0 rows affected म्हणजे table तयार, अजून रिकामा.

  4. SHOW TABLES; database मधले tables दाखवतो: users.
  5. DESC users; (किंवा DESCRIBE users;) प्रत्येक column, त्याचा type, तो रिकामा राहू शकतो का (Null) आणि त्याची default value दाखवतो.

Classroom line

Name the table users, not user. USER is a keyword in SQL.

आपण table ला users म्हणतो कारण USER हा SQL keyword आहे, आणि built-in mysql database मध्ये आधीच user नावाचा table आहे. अनेकवचनी नावाने तो गोंधळ टळतो.

MariaDB terminal: use instagram; answers Database changed; create table users( id int , name varchar(50), city varchar(50), age int); answers Query OK, 0 rows affected; show tables; prints a table with the heading Tables_in_instagram and one row, users.

Whiteboard: USE instagram, चार columns सह CREATE TABLE users, आणि SHOW TABLES मध्ये users.

DESC मध्ये int(11) दिसू शकतं. 11 हा जुन्या MySQL versions मधला फक्त display width आहे; INT किती ठेवू शकतो ते त्याने बदलत नाही.

MariaDB terminal: describe users; prints a table with columns Field, Type, Null, Key, Default and Extra, and four rows: id int(11), name varchar(50), city varchar(50), age int(11), each with Null YES and Default NULL.

Whiteboard: DESC users: प्रत्येक column त्याच्या type, Null, Key आणि Default सह.

ERROR 1064 (syntax error) देणाऱ्या नेहमीच्या चुका:

  1. दोन columns मध्ये comma नाही.
  2. Size शिवाय VARCHAR.
  3. शेवटी ) नाही.
CREATE TABLE statement वाचा CREATE TABLE users ( Table चं नाव: users, user नाही. id INT, आधी column चं नाव, मग type. name VARCHAR(100), VARCHAR ला नेहमी size लागते. city VARCHAR(50), प्रत्येक column नंतर comma ... age INT ... शेवटच्या सोडून. ); Bracket बंद करा, ; ने संपवा मग तपासा: SHOW TABLES; tables दाखवतो, DESC users; प्रत्येकcolumn आणि त्याचा type दाखवतो.

Figure 5. CREATE TABLE users वाचा: आधी column चं नाव मग type, VARCHAR ला size लागते, columns मध्ये commas, bracket बंद करून semicolon ने संपवा.

Ravindra Bagale's Tip

Table आणि column ची नावं lowercase, spaces शिवाय ठेवा (users, city, created_at). Linux वर नावं case-sensitive असतात, आणि एकच पद्धत ठेवली की पुढे "table doesn't exist" errors टळतात.

7. CRUD: data बरोबर करायच्या चार गोष्टी

का: App मधली जवळजवळ प्रत्येक screen या चारपैकी एक कृती असते. ही चार नावं माहीत असली की कोणत्याही app चं SQL वाचता येतं.

काय: App आपल्या rows बरोबर जे करतं ते जवळजवळ सगळं या चार कामांपैकी एक, त्यांना मिळून CRUD म्हणतात:

  1. Create = INSERT: नवीन rows जोडा.
  2. Read = SELECT: rows वाचा. तो कधी काही बदलत नाही.
  3. Update = UPDATE: असलेल्या rows बदला, उदा. UPDATE users SET age = 31 WHERE id = 1;
  4. Delete = DELETE: rows काढा, उदा. DELETE FROM users WHERE id = 3;

CREATE DATABASE, CREATE TABLE आणि ALTER TABLE हे CRUD नाहीत. ते structure बदलतात; CRUD tables मधल्या rows वर काम करतो. या chapter मध्ये आपण INSERT आणि SELECT practice करतो.

CRUD: data बरोबर करायच्या चार गोष्टी C Create INSERT नवीन rows जोडा R Read SELECT rows वाचा; काही बदलत नाही U Update UPDATE असलेल्या rows बदला D Delete DELETE rows काढा CRUD नाही: structure commands CREATE DATABASE, CREATE TABLE आणि ALTERstructure बदलतात. CRUD आतल्या rows वर काम करतो.

Figure 6. CRUD: Create = INSERT, Read = SELECT, Update = UPDATE, Delete = DELETE. CREATE TABLE आणि ALTER structure commands, CRUD नाहीत.

8. INSERT: rows जोडा

का: रिकामा table निरुपयोगी. App मधलं प्रत्येक sign-up, post किंवा order शेवटी एक INSERT होतं.

8.1 सगळे columns, table च्या क्रमाने

  1. DESC users; columns चा क्रम दाखवतो: id, name, city, age.
  2. त्याच क्रमाने प्रत्येक column साठी एक value द्या:

    INSERT INTO users VALUES (1, 'ravi', 'solapur', 30);
    
  3. Text single quotes मध्ये ('ravi'); numbers quotes शिवाय (30).

  4. Query OK, 1 row affected म्हणजे row save झाली.
  5. SELECT * FROM users; ती दाखवतो.

8.2 नाव दिलेले columns, कोणत्याही क्रमाने

  1. भरायचे columns list करा, मग values त्याच क्रमाने:

    INSERT INTO users (name, id, city) VALUES ('zoya', 2, 'pune');
    
  2. सोडलेल्या column ला, age ला, NULL मिळतो.

  3. हा मार्ग जास्त safe: महिन्यांनंतर table कोणत्या क्रमाने बनवला होता ते आठवणार नाही, आणि आठवायची गरजही नाही.

Classroom line

If you come to insert values four or five months later, how will you know the column order the table was created with?

8.3 NULL

  1. NULL म्हणजे कोणतीच value नाही. ते रिकामा text '' नाही, आणि 0 पण नाही.
  2. INSERT INTO users (name, id) VALUES ('siya', 3); city आणि age NULL ठेवतो.

Classroom line

In any column where we don't put a value, NULL will appear.

Classroom line

NULL means nothing at all; the value doesn't exist.

8.4 तुम्हाला भेटणारे दोन errors

  1. Values ची संख्या चुकली: INSERT INTO users VALUES (4, 'amit', 'nashik'); चार columns साठी तीन values देतो: ERROR 1136 ... Column count doesn't match value count at row 1. चारही values द्या, किंवा columns ची नावं द्या.
  2. Values चुकीच्या क्रमाने: INSERT INTO users (name, id, city) VALUES ('zoya', 'pune', 2); 'pune' ला id मध्ये टाकतो: ERROR 1366 ... Incorrect integer value: 'pune' for column ... id. Values तुमच्या column list च्या क्रमाने द्या.
MariaDB terminal: insert into users values(1,'ravi','solapur',30); Query OK; select * from users; shows one row. insert into users(name,id,city) values('zoya', 2,'pune'); Query OK. insert into users(name,id,city) values('zoya', 'pune',2); answers ERROR 1366 (22007): Incorrect integer value: 'pune' for column instagram.users.id at row 1. select * from users; shows 1 ravi solapur 30 and 2 zoya pune NULL.

Whiteboard: सगळ्या columns सह INSERT, नाव दिलेल्या columns सह INSERT (age NULL होतो), आणि value चुकीच्या column मध्ये गेल्यावरचा error.

INSERT: table च्या क्रमाने सगळेcolumns, किंवा तुम्ही सांगितलेले 1. सगळे columns, table चा क्रम INSERT INTO users VALUES (1, 'ravi', 'solapur', 30); प्रत्येक column साठी एक value, DESC दाखवतो त्या क्रमाने. Text quotes मध्ये, numbers शिवाय. 2. नाव दिलेले columns, कोणताही क्रम INSERT INTO users (name, id, city) VALUES ('zoya', 2, 'pune'); Values तुमच्या column list प्रमाणे. सोडलेला age column NULL होतो. जास्त safe: क्रम लक्षात ठेवायची गरज नाही. तुम्हाला दिसणारे दोन errors ERROR 1136: Column count doesn't match valuecount at row 1 ERROR 1366: Incorrect integer value: 'pune'for column ...id एका INSERT मध्ये अनेक rows: VALUES (...), (...),(...); Query OK, 3 rows affected देतो.

Figure 7. Table च्या क्रमाने सगळ्या columns सह INSERT, किंवा कोणत्याही क्रमाने नाव दिलेल्या columns सह (सोडलेले columns NULL), आणि भेटणारे दोन errors.

8.5 एका INSERT मध्ये अनेक rows

नवीन app मध्ये test data भरताना प्रत्येक row साठी एक INSERT type करणं slow आहे. अनेक rows एकाच statement मध्ये, comma ने वेगळ्या करून द्या:

INSERT INTO users VALUES (1, 'ravi', 'solapur', 30), (2, 'siya', 'pune', 27), (3, 'maya', 'mumbai', 25);
  1. MariaDB Query OK, 3 rows affected म्हणतो.
  2. Table मध्ये अजून duplicates विरुद्ध नियम नाही, म्हणून तोच id दोनदा येऊ शकतो. हे थांबवणाऱ्या keys नंतर येतात.
MariaDB terminal: insert into users values(1,'ravi','solapur',30),(2,'siya','pune',27),(3,'maya','mumbai',25); answers Query OK, 3 rows affected and Records: 3 Duplicates: 0 Warnings: 0.

Whiteboard: तीन rows असलेला एक INSERT: Query OK, 3 rows affected.

9. SELECT: rows वाचा

का: Data वाचण्यासाठीच साठवतात. प्रत्येक feed, profile आणि search result म्हणजे SELECT, आणि तो काहीच बदलत नाही, म्हणून practise करायला सुरक्षित.

काय: SELECT rows वाचतो आणि दाखवतो. तो data कधी बदलत नाही.

Classroom line

Only the SELECT query is a read query. It doesn't change the data.

कसं:

  1. SELECT * FROM users; प्रत्येक row चे सगळे columns दाखवतो.
  2. SELECT name FROM users; फक्त name column दाखवतो.
  3. SELECT id, name FROM users; दोन columns दाखवतो.
  4. SELECT city, name FROM users; तुम्ही मागितलेल्या क्रमाने दाखवतो: आधी city.
  5. SELECT city FROM users; तेच city अनेकदा दाखवू शकतो, प्रत्येक row साठी एकदा.
  6. SELECT DISTINCT city FROM users; प्रत्येक city एकदाच दाखवतो. DISTINCT पुढच्या SQL chapter मध्ये नीट बघू.

Classroom line

Everyone thinks star means all records. That's wrong: star means the data of all columns.

SELECT: star म्हणजे सगळे columns, सगळ्या rowsनाही SELECT * FROM users; id | name | city | age 1 | ravi | solapur | 30 2 | zoya | pune | NULL 3 | maya | mumbai | 25 1. Star: प्रत्येक row चे सगळे columns. SELECT name, city FROM users; name | city ravi | solapur zoya | pune maya | mumbai 2. नाव दिलेले columns: फक्त तेच columns, rows सगळ्या. SELECT city, name FROM users; city | name solapur | ravi pune | zoya mumbai | maya 3. Columns तुम्ही मागितलेल्या क्रमाने येतात. SELECT फक्त वाचतो.

Figure 8. Animation: SELECT * सगळे columns देतो, SELECT name, city फक्त ते columns देतो, आणि columns तुम्ही मागितलेल्या क्रमाने येतात.

Practice झाल्यावर exit; type करा आणि EC2 instance stop करा.

10. पूर्ण flow एका page वर

  1. sudo yum install mariadb105-server -y, sudo service mariadb start.
  2. sudo mysql, मग ALTER USER 'root'@'localhost' IDENTIFIED BY '...';, exit;, मग mysql -u root -p.
  3. प्रत्येक statement ; ने संपवा. -> म्हणजे "उरलेल्याची वाट"; Ctrl+C cancel. .sock error म्हणजे service बंद.
  4. SHOW DATABASES;, CREATE DATABASE instagram;, USE instagram;.
  5. प्रत्येक column साठी type: INT, VARCHAR(n), DATE, TIME, FLOAT, BOOLEAN; phone numbers VARCHAR मध्ये.
  6. CREATE TABLE users (...);, SHOW TABLES;, DESC users;.
  7. CRUD = INSERT, SELECT, UPDATE, DELETE.
  8. INSERT INTO users VALUES (...); किंवा INSERT INTO users (cols) VALUES (...);; सोडलेले columns NULL; (...), (...) ने अनेक rows.
  9. SELECT * FROM users; = सगळे columns; SELECT name, city FROM users; = निवडलेले columns.

11. Hands-on lab: तुमचा पहिला database, table आणि rows

हा lab का. हा lab रिकाम्या server पासून परत वाचता येणाऱ्या data असलेल्या table पर्यंत जातो, app ला लागतं त्याच क्रमाने: server, database, table, rows, query.

  1. MariaDB install आणि start करा
    • Command: sudo yum install mariadb105-server -y && sudo service mariadb start
    • काय दिसेल: Complete!, मग Redirecting to /bin/systemctl start mariadb.service.
    • Check करा: sudo service mariadb status मध्ये active (running).
    • का: Database server Apache सारखाच program: install, मग चालू. तो बंद असेल तर mysql.sock बद्दलच्या error ने login fail होतं.
  2. Login करा
    • Command: sudo mysql
    • काय दिसेल: MariaDB [(none)]> prompt.
    • Check करा: तुम्ही आधीच root password set केला असेल तर त्याऐवजी mysql -u root -p वापरा.
    • का: Prompt मधलं (none) म्हणजे अजून कोणताही database select नाही. इथून पुढे Linux commands नाही, SQL type करायचं.
  3. Database बनवा आणि select करा
    • Command: CREATE DATABASE instagram; USE instagram;
    • काय दिसेल: Query OK, 1 row affected, मग Database changed.
    • Check करा: Prompt MariaDB [instagram]> होतो.
    • का: प्रत्येक statement ; ने संपतं. USE शिवाय पुढचा CREATE TABLE No database selected ने fail होतो.
  4. Table बनवा
    • Command: CREATE TABLE users (id INT, name VARCHAR(50), city VARCHAR(50), age INT);
    • काय दिसेल: Query OK, 0 rows affected
    • Check करा: DESC users; चार fields दाखवतो: id int(11), name varchar(50), city varchar(50), age int(11).
    • का: प्रत्येक column ला type मिळतो, म्हणून database चुकीच्या values नाकारतो. VARCHAR(50) 50 अक्षरांपर्यंत text ठेवतो.
  5. तीन rows insert करा
    • Command: INSERT INTO users VALUES (1, 'ravi', 'solapur', 30), (2, 'siya', 'pune', 27), (3, 'maya', 'mumbai', 25);
    • काय दिसेल: Query OK, 3 rows affected आणि Records: 3 Duplicates: 0 Warnings: 0.
    • Check करा: Error नाही.
    • का: Values table च्या क्रमाने जातात. Text ला quotes लागतात; numbers ना नाही. एक INSERT अनेक rows टाकू शकतो.
  6. Column नावं देऊन insert करा
    • Command: INSERT INTO users (name, id, city) VALUES ('zoya', 4, 'pune');
    • काय दिसेल: Query OK, 1 row affected
    • Check करा: age सोडलं तरी error नाही.
    • का: Columns ची नावं दिली की table चा क्रम लक्षात ठेवायची गरज राहत नाही. सोडलेला column NULL होतो.
  7. सगळं वाचा
    • Command: SELECT * FROM users;
    • काय दिसेल: 4 rows चं table, आणि 4 rows in set. Zoya चं age NULL दाखवतं.
    • Check करा: Rows तुम्ही insert केल्याशी जुळतात.
    • का: * म्हणजे प्रत्येक column, प्रत्येक row नाही. परत वाचणं म्हणजे inserts चालले हे सिद्ध करणं.
  8. फक्त काही columns वाचा
    • Command: SELECT name, city FROM users;
    • काय दिसेल: दोन columns, 4 rows.
    • Check करा: age आणि id दिसत नाहीत.
    • का: Apps screen वर दाखवायचं तेवढंच मागतात. कमी columns म्हणजे network वरून कमी data.
  9. बाहेर पडा
    • Command: exit;
    • काय दिसेल: Bye
    • Check करा: तुम्ही परत Linux prompt वर. पुढच्या SQL chapters साठी instagram database ठेवा, आणि instance stop करा.
    • का: Instance terminate करत नाही तोपर्यंत, बाहेर पडल्यावर आणि stop नंतरही data disk वर राहतो.

12. Try at home

Try at home

Task 1: set up

  1. MariaDB install आणि start करा, sudo mysql ने login करा, आणि ALTER USER ने root password सेट करा.
  2. exit; करून mysql -u root -p ने परत login करा.
  3. sudo service mariadb stop ने service बंद करा, login करून बघा, आणि socket error वाचा. परत start करा.

Task 2: database आणि table

  1. school database बनवा आणि USE करा.
  2. id INT, name VARCHAR(100), phone VARCHAR(15), marks FLOAT आणि joined DATE सह students table बनवा.
  3. SHOW TABLES; आणि DESC students; ने तपासा.

Task 3: INSERT आणि SELECT

  1. एक student सगळ्या columns सह, आणि एक फक्त id आणि name सह insert करा. कोणत्या values NULL झाल्या?
  2. एकाच statement मध्ये तीन students insert करा.
  3. Column-count error आणि wrong-order error मुद्दाम करा, आणि दोन्ही messages वाचा.
  4. SELECT *, मग SELECT name, marks, मग SELECT marks, name चालवा.

Recap

थोडक्यात

  1. Amazon Linux वर MariaDB: mariadb105-server, service mariadb; पहिलं login sudo mysql, मग ALTER USER 'root'@'localhost' IDENTIFIED BY '...'; आणि mysql -u root -p.
  2. Statements ; ने संपतात; -> उरलेल्याची वाट बघतो; Ctrl+C cancel; .sock error म्हणजे service बंद.
  3. Keywords case-sensitive नाहीत; database आणि table names Linux वर case-sensitive.
  4. Database मध्ये tables; table मध्ये columns (fields) आणि rows (records).
  5. SHOW DATABASES, CREATE DATABASE, USE, CREATE TABLE, SHOW TABLES, DESC.
  6. Types: INT (max 2,147,483,647; int(11) फक्त display width), VARCHAR(n), DATE, TIME, FLOAT, BOOLEAN; phone numbers VARCHAR मध्ये.
  7. CRUD = INSERT, SELECT, UPDATE, DELETE.
  8. INSERT सगळे columns क्रमाने, किंवा नाव दिलेले columns कोणत्याही क्रमाने; सोडलेले columns NULL; एका statement मध्ये अनेक rows.
  9. SELECT * = प्रत्येक column; हवे ते columns, हव्या त्या क्रमाने नावाने मागा.

सराव Tasks

या scenario बद्दल

Solapur Chaddar House हा सोलापूर मधला गृह वस्त्र व्यवसाय आहे. Vikas Kamble त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 10

सोपं मोठ्या orders आधी

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: Order id व amount, मोठी amount आधी.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

सोपं City नुसार customers

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: Pune मधल्या customers ची नावं.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

सोपं MariaDB मध्ये login करा

का: mysql client ने database server वर SQL चालवता येतं.

काय करायचं: MariaDB client root user म्हणून उघडा व password विचारू द्या.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम एकूण sales

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: सगळ्या order amounts ची बेरीज.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

मध्यम Customer नावांसह orders

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: प्रत्येक customer नाव व order amount.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

मध्यम लहान orders काढा

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: 200 पेक्षा कमी amount चे orders delete.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

मध्यम City दुरुस्त करा

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: Customer 5 Rome ला गेले. Record update करा.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

अवघड Customer नुसार sales

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: Customer नुसार total, फक्त 1000 पेक्षा जास्त.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

अवघड Orders नसलेले customers

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: कधीच order न केलेल्या customers ची नावं.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

अवघड Database चा file मध्ये backup घ्या

का: mysqldump पूर्ण database SQL म्हणून लिहितो. मोठ्या बदलांआधी save करा.

काय करायचं: solapurchaddar_wp database root user ने (password विचारून) solapurchaddar_wp.sql मध्ये dump करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: Database, table, row, column. Apps ना data स्पष्ट, शोधता येईल अशा रूपात हवा. Database मध्ये tables. Table मध्ये columns (fields) आणि rows (records). CREATE DATABASE, USE, मग CREATE TABLE. सुरुवात:
उजळणी card: Database, table, row, column · PNG download करा
उजळणी card: SQL data types. चुकीचा type data घालवतो, उदा. phone number चा पुढचा 0. INT पूर्ण numbers, VARCHAR text, DATE, TIME, FLOAT decimals, BOOLEAN true/false. Value कशी वापरली जाते त्यावरून निवडा, कशी दिसते त्यावरून नाही. Phone म्हणजे text:
उजळणी card: SQL data types · PNG download करा
उजळणी card: CREATE TABLE आणि DESC. Data साठी आधी नाव आणि type असलेल्या columns चा table हवा. CREATE TABLE columns define करतो. DESC structure दाखवतो. ; ने संपवा. Multi-line चालतं; -> म्हणजे पुढे चालू. Table:
उजळणी card: CREATE TABLE आणि DESC · PNG download करा
उजळणी card: SQL मध्ये CRUD. प्रत्येक app data सोबत चार गोष्टी करतं. Create = INSERT, Read = SELECT, Update = UPDATE, Delete = DELETE. UPDATE आणि DELETE सोबत नेहमी WHERE. अनेक insert:
उजळणी card: SQL मध्ये CRUD · PNG download करा
तुलना: INT vs VARCHAR. INT: गणित करता येईल असा पूर्ण number. VARCHAR: ठरलेल्या length पर्यंत text.
तुलना: INT vs VARCHAR · PNG download करा
मुलाखत card: CRUD म्हणजे काय?. Create, Read, Update, Delete: INSERT, SELECT, UPDATE, DELETE. प्रत्येक data app या चारांवर बनतं. Sign-up = INSERT; profile = SELECT; edit = UPDATE; close = DELETE.
मुलाखत card: CRUD म्हणजे काय? · PNG download करा
मुलाखत card: Apps मध्ये SELECT * का टाळायचं?. तो प्रत्येक column आणतो, मोठे किंवा secret सुद्धा. Columns ची नावं देणं fast आणि table बदलला तरी सुरक्षित. चांगलं:
मुलाखत card: Apps मध्ये SELECT * का टाळायचं? · PNG download करा
मुलाखत card: MariaDB "Can't connect through socket" म्हणतो. म्हणजे काय?. MariaDB server चालू नाही. Client server ची socket file शोधतो, सापडत नाही. Fix:
मुलाखत card: MariaDB "Can't connect through socket" म्हणतो. म्हणजे काय? · PNG download करा

अजून cards: Ravi Sir's Cards.