Stilly

Stilly

بېكەت باشلىقى

يازمىلىرى
ئەگەشكۈچىلىرى
ئەگەشكەنلىرى
74
32
0

MySql ئۆگىنىش 2 - MySql دىكى DDL جۈملىلىرى بىلەن تونۇشۇش

DDL جۈملىسى ئاساسلىقى ساندان قۇرۇلمىلىرى (جەدۋەل،قۇر،ئىستون،ئامبار...) نى قۇرۇشتا ئىشلىتىلىدۇ.مەسىلەن create,drop,alter قاتارلىق بۇيرۇقلار DDL جۈملىسىگە تەۋە.

تۆۋەندە كۆپ ئىشلىتىلدىغان DDL جۈملىلىرى بىلەن تونۇشۇپ چىقىمىز.(بۇ يەردە مەشىۇلات سىستېمىمىزغا mysql نورمال قاچىلىنىپ بولغاندىن كىيىنكى ئەھۋال كۆزدە تۇتۇلىدۇ).


(0) ساندانغا ئۇلاش

تېرمىنالدا mysql -uroot -p بىسىپ Enter نى بىسىپ سانداننىڭ پارولىنى كىرگۈزۈپ mysql غا ئۇلاش مەشخۇلاتى قىلىمىز.بۇ بۇيرۇقتىكى mysql  بولسا ھازىر ئىشلەتمەكچى بولغان مۇلازىمەت(服务)نىڭ ئىسمىنى،-u بولسا مۇلازىمەت(服务) ئىشلەتمەكچى بولغان ئەزا نامىنى،-p بولسا پارولنى كۆرسىتىدۇ.مەسىلەن mysql  ئىشلەتكۈچى نامى root،پارولى 123456 بولسا يۇقارقى بۇيرۇقنى تۆۋەندىكىدەك يازساق بولىدۇ.

mysql -uroot -p123456

تولۇقلىما : mysql غا ئۇلىنىپ بولغاندىن كىيىن mysql بۇيرۇقلىرى ؛ بىلەن ئاخىرلىشىدىغان بولۇپ بۇ نۇقتىغا دىققەت قىلىشىمىز كىرەك.ئاندىن باشقا mysql بۇيرۇقلىرى چوڭ ھەرىپ بويىچە يېزىشنى تەۋسىيە قىلىدۇ.كىچىك ھەرىپ بويىچە يازساقمۇ بولىدۇ.


1.ئامبار قۇرۇش

CREATE DATABASE dbname

بۇ بۇيرۇقتىكى CREATE DATABASE مۇقىم بۇيرۇق،كەينىگە قۇرماقچى بولغان ئامبار نامىنى يازىمىز.مەسىلەن oyghan ناملىق يېڭى ئامبار قۇرماقچى بولساق تۆۋەندىكىدەك يازساق بولىدۇ.

mysql> CREATE DATABASE oyghan;
Query OK, 1 row affected (0.00 sec)

mysql>


1.(1) ئامبارلارنى تەكشۈرۈش.

SHOW DATABASES

بۇ بۇيرۇق ئارقىلىق ھازىرقى MYSQL مۇلازىمىتىدىكى بارلىق ئامبارلارنى كۆرۈشكە بولىدۇ.مەسىلەن يۇقارقى بۇيرۇق ئارقىلىق تەكشۈرسەك،ئالدىنقى مەشخۇلاتىىمىزدىكى oyghan ناملىق ئامباردىن باشقا ئامبارلارنىمۇ كۆرەلەيمىز.مەسىلەن تۆۋەندىكىدەك.

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| laravel            |
| learn              |
| mysql              |
| oyghan             |
| performance_schema |
| phpmyadmin         |
| sys                |
+--------------------+
8 rows in set (0.03 sec)

mysql>

بۇنىڭدىكى oyghanدىن باشقا ھەر قايسى ئامبارلار MYSQL مۇلازىمىتىدىكى ئىچكى ئامبارلار بولۇپ ،بۇ ئامبارلار ئاساسلىقى MYSQL مۇلازىمىتىگە ئائىت ئۇچۇرلارنى ساقلايدۇ،شۇڭا بۇ بىز ئامبارلار بىلەن كارىمىز بولمىسىمۇ بولىۋىردۇ.


1.(2) ئامبار تاللاش

USE dbname

بۇ يەردە USE جۈملىسى ئارقىلىق بىر قانچە ئامبارلار ئىچىدىىن ھازىر مەشخۇلات قىلماقچى بولغان ئامبارنى تاللىۋالىمىز. USE نىڭ كەينىىگە ئىشلەتمەكچى بولغان ئامبار نامىنى يازىمىز.مەسىلەن ھازىر بىز ئالدىنقى مەشخۇلاتىمىزدا قۇرىۋالغان oyghan ناملىق ئامبارنى تاللىماقچى بولساق تۆۋەندىكىدەك يازساق بولىدۇ.

mysql> use oyghan;
Database changed
mysql>


1.(3)ئامباردىكى جەدىۋەللەر (表) نى كۆرۈش

SHOW TABLES

 بۇ بۇيرۇق ھازىر ئىشلىتىلىۋاتقان ئامباردىكى بارلىق جەدۋەللەرنى كۆرسىتىپ بىرىدۇ.مەسىلەن.

mysql> SHOW TABLES;
Empty set (0.00 sec)

mysql>

چۈنكى بىز oyghan ناملىق ئامبارنى قۇرۇپلا قويۇپ باشقا مەشخۇلات قىلمىغاچ بولغاچ ئىچىدە جەدۋەل يوق.


2.ئامبار ئۆچۈرۈش 

DROP  DATABASE dbname

ئارقىلىق ئالدىنقى مەشخۇلاتىمىزدىكى oyghan ناملىق ئامبارنى ئۆچۈرۋەتسەك بولىدۇ.

mysql> DROP DATABASE oyghan;
Query OK, 0 rows affected (0.01 sec)

mysql>


3.جەدۋەل قۇرۇش

CREATE TABLE tablename

mysql> CREATE TABLE user (uid int(3) unsigned primary key auto_increment,username char(20));
Query OK, 0 rows affected (0.02 sec)

mysql>


3.(1) جەدۋەل ئۇچۇرنى كۆرۈش

DESC tablename

mysql> DESC user;
+----------+-----------------+------+-----+---------+----------------+
| Field    | Type            | Null | Key | Default | Extra          |
+----------+-----------------+------+-----+---------+----------------+
| uid      | int(3) unsigned | NO   | PRI | NULL    | auto_increment |
| username | char(20)        | YES  |     | NULL    |                |
+----------+-----------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql>



3.(2) تەپسىلىي جەدۋەل ئۇچۇرى 

 SHOW CREATE TABLE table\G

*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `uid` int(3) unsigned NOT NULL AUTO_INCREMENT,
  `username` char(20) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.01 sec)

ERROR: 
No query specified

mysql>


4.جەدۋەل ئۆچۈرۈش

DROP TABLE tablename

mysql> DROP TABLE user;
Query OK, 0 rows affected (0.02 sec)

mysql>


 5.جەدۋەل ئۆزگەرتىش

5.(1) جەدۋەل  سۆز بۆلىكى(column) سانلىق مەلۇمات تېپىنى  ئۆزگەرتىش

ALTER TABLE tablename MODIFY column_definition

مەسىلەن ھازىرقى ئەزا جەدۋىلى مۇنداق.

mysql> DESC user;
+----------+-----------------+------+-----+---------+----------------+
| Field    | Type            | Null | Key | Default | Extra          |
+----------+-----------------+------+-----+---------+----------------+
| uid      | int(3) unsigned | NO   | PRI | NULL    | auto_increment |
| username | char(20)        | YES  |     | NULL    |                |
+----------+-----------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql>

مەسىلەن : username  دىگەن column نىڭ سانلىق مەلۇمات تىپىنى (20)char دىن (10)varchar گە ئۆزگەرتمەكچى بولساق،تۆۋەندىكىدەك يازىمىز.

mysql> ALTER TABLE user MODIFY username varchar(10);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

ئاندىن قاراپ باقساق username  دىگەن column نىڭ سانلىق مەلۇمات تىپىنى (20)char دىن (10)varchar گە ئۆزگەرگەنلىكىنى كۆرىمىز.

mysql> DESC user;
+----------+-----------------+------+-----+---------+----------------+
| Field    | Type            | Null | Key | Default | Extra          |
+----------+-----------------+------+-----+---------+----------------+
| uid      | int(3) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(10)     | YES  |     | NULL    |                |
+----------+-----------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql>


5.(2)يېڭىدىن سۆز بۆلىكى قوشۇش

ALTER TABLE tablename ADD COLUMN column_name column_type

مەسىلەن : user  جەدۋىلىگە age سۆز بۆلىكى قوشماقچى بولساق مۇنداق يازساق بولىدۇ.

mysql> ALTER TABLE user ADD COLUMN age int(3);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql>


5.(3) سۆز بۆلىكىنى ئۆچۈرۈش

ALTER TABLE tablename DROP COLUMN column_name

mysql> ALTER TABLE user DROP COLUMN age;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql>


5.(4) سۆز بۆلىكى نامىنى ئۆزگەرتىش

ALTER TABLE tablename CHAGE column_name new_column_name column_type

مەسىلەن username  نى name  غا ئۆزگەرتمەكچى بولساق تۆۋەندىكىدەك يازساق بولىدۇ.

mysql> ALTER TABLE user CHANGE username name char(20);
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql>


5.(5) سۆز بۆلىكى تەرتىپىنى ئۆزگەرتىش

ADD|CHANGE|MODIFY قاتارلىق بۇيرۇقلار ھەممىسى first|after  پاراممىتىرى ئارقىلىق سۆز بۆلىكىنىڭ جەدۋەلدىكى تەرتىپىنى ئۆزگەرتەلەيدۇ.ADD جۈملىسى سۈكۈتتىكى ھالدا سۆز بۆلىكىنى جەدۋەلنىڭ ئەڭ ئاخىرىغا قوشىدۇ.CHANGE|MODIFY جۈملىسى بولسا سۈكۈتتىكى ھالدا سۆز بۆلىكىنىڭ تەرتىپگە تەسىر قىلمايدۇ.

مەسىلەن:

يېڭى سۆز بۆلىكى قوشقاندا تەرتىپىنى ئۆزگەرتىش

ALTER TABLE tablename ADD COLUMN AFTER some_cloumn

مەسىلەن بۇ جەدۋەلگە uid دىن كىيىن بىر تال age سۆز بۆلىكى قاتايلى.

ئەسىلىدىكى جەدۋەل :

mysql> desc user;
+-------+-----------------+------+-----+---------+----------------+
| Field | Type            | Null | Key | Default | Extra          |
+-------+-----------------+------+-----+---------+----------------+
| uid   | int(3) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | char(20)        | YES  |     | NULL    |                |
+-------+-----------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

تەرتىپلىگەندىن كىيىنكى :

mysql> ALTER TABLE user ADD COLUMN age int(3) after uid;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC user;
+-------+-----------------+------+-----+---------+----------------+
| Field | Type            | Null | Key | Default | Extra          |
+-------+-----------------+------+-----+---------+----------------+
| uid   | int(3) unsigned | NO   | PRI | NULL    | auto_increment |
| age   | int(3)          | YES  |     | NULL    |                |
| name  | char(20)        | YES  |     | NULL    |                |
+-------+-----------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql>



سۆز بۆلىكى تەھرىرلىگەندە تەرتىپىنى ئۆزگەرتىش

ALTER TABLE tablename MODIFY column_name column_type FIRST|AFTRE


5.(5) جەدۋەل نامىنى ئۆزگەرتىش

ALTER TABLE table_name RENAME new_table_name

مەسىلەن بىز user  دىگەن جەدۋەلنى member غا ئۆزگەرتەيلى.

mysql> ALTER TABLE user RENAME member;
Query OK, 0 rows affected (0.01 sec)

mysql>

بۇ چاغدا  user  دىگەن جەدۋەلنى تەكشۈۈرۈپ باقساق خاتالىق چىقىدۇ،چۈنكى ئىسمى ئۆزگەرتىلدى ئەمەسمۇ.

mysql> DESC USER;
ERROR 1146 (42S02): Table 'oyghan.USER' doesn't exist
mysql>



1ئەزا بۇ تېمىنى ياقتۇردى
A13L1M17