MySQL ट्यूटोरियल
MySQL के साथ शुरुआत करना
खोज…
टिप्पणियों
MySQL एक ओपन-सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है जो Oracle Corporation द्वारा विकसित और समर्थित है।
MySQL को बड़ी संख्या में प्लेटफ़ॉर्म पर समर्थित किया गया है, जिसमें Linux वेरिएंट, OS X और Windows शामिल हैं। इसमें C, C ++, Java, Lua .Net, Perl, PHP, Python, और Ruby सहित बड़ी संख्या में भाषाओं के लिए API हैं ।
MariaDB MySQL का एक कांटा है जिसमें थोड़ा अलग फीचर सेट है । यह ज्यादातर अनुप्रयोगों के लिए MySQL के साथ पूरी तरह से संगत है।
संस्करण
संस्करण | रिलीज़ की तारीख |
---|---|
1.0 | 1995/05/23 |
3.19 | 1996/12/01 |
3.20 | 1997/01/01 |
3.21 | 1998/10/01 |
3.22 | 1999-10-01 |
3.23 | 2001/01/22 |
4.0 | 2003/03/01 |
4.1 | 2004/10/01 |
5.0 | 2005/10/01 |
5.1 | 2008/11/27 |
5.5 | 2010-11-01 |
5.6 | 2013-02-01 |
5.7 | 2015/10/01 |
शुरू करना
MySQL में डेटाबेस बनाना
CREATE DATABASE mydb;
प्रतिलाभ की मात्रा:
क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.05 सेकंड)
निर्मित डेटाबेस mydb
का उपयोग करना
USE mydb;
प्रतिलाभ की मात्रा:
डेटाबेस बदल दिया गया
MySQL में एक टेबल बनाना
CREATE TABLE mytable
(
id int unsigned NOT NULL auto_increment,
username varchar(100) NOT NULL,
email varchar(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE mytable
एक नई तालिका बनाएगी जिसे mytable
कहा जाता mytable
।
id int unsigned NOT NULL auto_increment
id
कॉलम बनाता है, इस प्रकार का फ़ील्ड तालिका में प्रत्येक रिकॉर्ड के लिए एक अद्वितीय संख्यात्मक आईडी प्रदान करेगा (जिसका अर्थ है कि इस मामले में कोई भी दो पंक्तियों में एक ही id
नहीं हो सकती है), MySQL स्वचालित रूप से एक नया असाइन करेगा रिकॉर्ड id
फ़ील्ड (1 से शुरू) के लिए अद्वितीय मूल्य।
प्रतिलाभ की मात्रा:
क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.10 सेकंड)
किसी पंक्ति को MySQL तालिका में सम्मिलित करना
INSERT INTO mytable ( username, email )
VALUES ( "myuser", "[email protected]" );
उदाहरण वापसी मूल्य:
क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.06 सेकंड)
varchar
उर्फ strings
एकल उद्धरण का उपयोग करके भी डाला जा सकता है:
INSERT INTO mytable ( username, email )
VALUES ( 'username', '[email protected]' );
किसी पंक्ति को MySQL तालिका में अद्यतन करना
UPDATE mytable SET username="myuser" WHERE id=8
उदाहरण वापसी मूल्य:
क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.06 सेकंड)
int
वैल्यू को बिना उद्धरण के एक क्वेरी में डाला जा सकता है। तार और तिथियां एकल उद्धरण में सीमित होने चाहिए '
या डबल कोट्स "
।
किसी पंक्ति को MySQL तालिका में हटाना
DELETE FROM mytable WHERE id=8
उदाहरण वापसी मूल्य:
क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.06 सेकंड)
यह नष्ट करेगा पंक्ति होने id
8 है।
MySQL में शर्तों के आधार पर पंक्तियों का चयन करना
SELECT * FROM mytable WHERE username = "myuser";
प्रतिलाभ की मात्रा:
+----+----------+---------------------+
| id | username | email |
+----+----------+---------------------+
| 1 | myuser | [email protected] |
+----+----------+---------------------+
1 पंक्ति में सेट (0.00 सेकंड)
मौजूदा डेटाबेस की सूची दिखाएं
SHOW databases;
प्रतिलाभ की मात्रा:
+-------------------+
| Databases |
+-------------------+
| information_schema|
| mydb |
+-------------------+
सेट में 2 पंक्तियाँ (0.00 सेकंड)
आप "information_schema" को "मास्टर डेटाबेस" के रूप में सोच सकते हैं जो डेटाबेस मेटाडेटा तक पहुंच प्रदान करता है।
किसी मौजूदा डेटाबेस में तालिकाएँ दिखाएं
SHOW tables;
प्रतिलाभ की मात्रा:
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
+----------------+
1 पंक्ति में सेट (0.00 सेकंड)
एक तालिका के सभी क्षेत्रों को दिखाएं
DESCRIBE databaseName.tableName;
या, यदि पहले से ही एक डेटाबेस का उपयोग कर:
DESCRIBE tableName;
प्रतिलाभ की मात्रा:
+-----------+----------------+--------+---------+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------+--------+---------+-------------------+-------+
| fieldname | fieldvaluetype | NO/YES | keytype | defaultfieldvalue | |
+-----------+----------------+--------+---------+-------------------+-------+
उदाहरण के लिए Extra
में auto_increment
हो सकता है।
Key
उस प्रकार के कुंजी को संदर्भित करती है जो फ़ील्ड को प्रभावित कर सकती है। प्राथमिक (PRI), अद्वितीय (UNI) ...
n पंक्ति में सेट (0.00 सेकंड)
जहां तालिका में n फ़ील्ड की संख्या है।
उपयोगकर्ता बनाना
सबसे पहले, आपको एक उपयोगकर्ता बनाने की आवश्यकता है और फिर कुछ डेटाबेस / तालिकाओं पर उपयोगकर्ता की अनुमति दें। उपयोगकर्ता बनाते समय, आपको यह भी निर्दिष्ट करना होगा कि यह उपयोगकर्ता कहाँ से कनेक्ट कर सकता है।
CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_password';
एक उपयोगकर्ता बनाएगा जो केवल स्थानीय मशीन पर कनेक्ट हो सकता है जहां डेटाबेस होस्ट किया गया है।
CREATE USER 'user'@'%' IDENTIFIED BY 'some_password';
एक उपयोगकर्ता बनाएगा जो कहीं से भी जुड़ सकता है (स्थानीय मशीन को छोड़कर)।
उदाहरण वापसी मूल्य:
क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)
विशेषाधिकार जोड़ना
निर्दिष्ट डेटाबेस के सभी तालिकाओं के लिए उपयोगकर्ता के लिए सामान्य, बुनियादी विशेषाधिकार प्रदान करें:
GRANT SELECT, INSERT, UPDATE ON databaseName.* TO 'userName'@'localhost';
सभी डेटाबेस पर सभी तालिकाओं के लिए उपयोगकर्ता को सभी विशेषाधिकार प्रदान करें (इसके साथ ध्यान दें):
GRANT ALL ON *.* TO 'userName'@'localhost' WITH GRANT OPTION;
जैसा कि ऊपर दिखाया गया है, *.*
सभी डेटाबेस और तालिकाओं को लक्षित करता है, databaseName.*
विशिष्ट डेटाबेस के सभी तालिकाओं को लक्षित करता है। डेटाबेस और तालिका को भी निर्दिष्ट करना संभव है, जैसे databaseName.tableName
।
यदि उपयोगकर्ता को अन्य उपयोगकर्ता विशेषाधिकार प्रदान करने की आवश्यकता नहीं है, तो WITH GRANT OPTION
छोड़ दिया जाना चाहिए।
विशेषाधिकार या तो हो सकते हैं
ALL
या निम्नलिखित के संयोजन, प्रत्येक अल्पविराम (गैर-निकास सूची) द्वारा अलग किया गया।
SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
ध्यान दें
आम तौर पर, आपको कॉलम या टेबल नामों के रिक्त स्थान का उपयोग करने या SQL में आरक्षित शब्दों का उपयोग करने से बचने की कोशिश करनी चाहिए। उदाहरण के लिए, table
या first name
जैसे नामों से बचना सबसे अच्छा है।
यदि आपको ऐसे नामों का उपयोग करना है, तो उन्हें बैक-टिक ``
सीमांकक के बीच रखें। उदाहरण के लिए:
CREATE TABLE `table`
(
`first name` VARCHAR(30)
);
इस तालिका में बैक-टिक डेलिमीटर युक्त एक क्वेरी हो सकती है:
SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';
सूचना स्कीमा उदाहरण
प्रक्रिया सूची
यह उस समय तक उस क्रम में सभी सक्रिय और सो रहे प्रश्नों को दिखाएगा।SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
यह समय-फ़्रेम पर थोड़ा अधिक विस्तार है क्योंकि यह डिफ़ॉल्ट रूप से सेकंड में है
SELECT ID, USER, HOST, DB, COMMAND,
TIME as time_seconds,
ROUND(TIME / 60, 2) as time_minutes,
ROUND(TIME / 60 / 60, 2) as time_hours,
STATE, INFO
FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
संग्रहीत कार्यविधि खोज
आसानी से शब्दों और वाइल्डकार्ड के लिए सभी Stored Procedures
।
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%word%';