首頁  >  文章  >  資料庫  >  Mysql相關操作有哪些

Mysql相關操作有哪些

一个新手
一个新手原創
2017-09-30 09:59:022056瀏覽

1》建立資料庫:
  語法:create database 資料庫名稱;
  語法:show databases 查看已經存在資料庫
  範例:  

 Mysql->create database zytest;    注意每一条要以;号结尾
    Mysql->show databases;查询是否创建成功
        >use zytest;
# 2》刪除資料庫:

  語法:drop database 資料庫名稱;eab583378c19b70e4d8b712b9a9906af  舉例:

    Mysql->drop database zydropzytesttest#]sql; show databases;       查詢是否刪除成功


              


#3》儲存引擎介紹:

    1>儲存引擎,inodb給mysql的表提供了交易日誌,回滾、奔潰、修復能力和多版本並發控制的事務安全。 Mysql從3.23.34a開始包含                         innoDB儲存引擎.

#           引擎一個對接 inno 〯也是其它引擎無法與之抗衡的。 ,             innodb支援自動增長列使用auto_increment,自動增長列不值不能為空

#           子鍵的鍵 innod 外表所支援的外表所支援表為父母,父錶中的被子表外檢關聯的欄位必須是主鍵,當刪除、更新父表                  的某條資訊時,子表也必須有對應的改變,

   的表格結構儲存在.frm檔案中,資料和索引儲存在innodb_data_home_dir 和innodb_data_file_path定義的資料表空間.

         
#         
」資料檔案所有的資料表的資料11 如果不定義innb_ data_home_預設在datadir下面,InnoDB每個資料表的元資料(metadata)總是保                  存在ibdata1 這個共享表空間裡,因此此檔案不可或缺

innodb_data_#_3 = ibdata1:10M:

  資料和索引檔案集合在一起:*.ibd每個表都有單獨一個元資料,  表定義檔:*.frm  所有的表總的元資料文件為ibdata1  Inoodb儲存引擎的

    優勢:在於提供了良好的事務管理、崩潰、修復能力和並發控制,

    缺點:是其讀寫效率稍差,佔用的資料空間相對差大.

 


    什麼是事務? ?我們先來看看ACID原則

      ACID是資料庫事務正常執行的四個基本要素,分別指原子性、一致性、獨立性及持久性

      性及持久性      性)




######################))#################################4瓦泰)####' ##:###事務的原子性是指一個事務要麼全部執行,要麼不執行.也就是說一個事務不可能只執行了一半就停止了.例如你從取款機取錢,                                      這個事務可以分成兩個步驟:1劃卡,2出錢.不可能劃了卡,而錢卻沒出來.這兩步必須同時完成.要么就不完成.######                一致性(Consistency)#### ##:###事務的一致性是指事務的運作並不會改變資料庫中資料的一致性.例如,完整性約束了a+b=10,一個交易改變了a,那麼b也應該隨                          之改變.######          獨立性(Isolation)######:###事務的獨立性也有稱為隔離性,是指兩個以上的事務不會出現###交錯執行####的狀態.因為這樣可能會導致資料不一致.######          持久性(Durability)######:###事務的持久性是指事務執行成功以後,該事務所對資料庫所做的更改便是持久的保存在資料庫之中,不會無緣無故的回滾.#############

     2>MyISAM引擎
      MyISAM儲存表分為3個文件,文件與表名相同,擴充包含frm,MYD和MYI,
       為副檔名的檔案儲存資料
      myi為副檔名的檔案儲存索引
    優點:佔用空間小,。處理速度快,
    缺點:不支援交易日誌的完整性和並發性     3>MEMORY 引擎     Mysql中的特殊引擎,所有的資料全部存放於記憶體當中,在企業生產環境當中。幾乎是用不到。因為資料儲存在內存,如果內存出現異常。將影響資料的完畢               整合。優點:儲存速度快

  缺點:缺乏穩定性和完整性



    MyISAM:不支援外鍵,不支援事務,索引和資料分開的,可以載入更多的索引,且索引是壓縮的,相對記憶體來說使用效率就提高不少,,他使用一                                 種中鎖定的機制,以最佳化多個並發進行最佳化操作,MYM生活讀取 與定種表格則鎖定的機制,來最佳化多個並發強調了設定操作」。場合:在承載的大部分項目是讀多寫少的項目平台中,而MyISAM的讀取性能是比Innodb強不少的

#    Innodb: 支持外鍵,支援事務、回滾,但是索引和資料是緊密捆綁的,沒有使用壓縮從而會造成INNODB比MYISAM體積龐大不小。

      使用場合:在承載的大部分項目執行insert 和update的話,應該選擇InnoDB.


#    鎖的介紹:mysql常見的三種鎖定層級-表格級鎖定、頁面鎖定、行級鎖定;其中表格層級鎖定有兩種模式— —表格共用讀取鎖定和表格獨佔寫入鎖定。

   MyISAM:     表級鎖定:對myisam表進行讀取操作的時候,它不會阻塞其他使用者對同一表的讀取請求,但會阻塞對同一表>的寫入操作;          對myisam表進行寫入操作的時候,它會阻塞其他使用者對同一表格的讀取、寫入請求.


   innodb:

#                提供行鎖定(locking on row level),另外,InnoDB表格的行鎖定也不是絕對的,如果在執行一個SQL語句時MySQL無法決定要掃描的範圍,InnoDB表同樣會                鎖定完整資料表.

    行級鎖定的優點如下:

##    行級鎖定的優點如下:



## ##    1)當許多連接分別進行不同的查詢時減少LOCK狀態。
    2)如果出現異常,可以減少資料的遺失。因為一次可以只回滾一行或幾行少量的資料。
   行級鎖定的缺點如下:
    1)比頁級鎖定和表單層級鎖定要佔用更多的記憶體。     2)進行查詢時比頁級鎖定和表格級鎖定所需的I/O要多,所以我們常常把行級鎖定用在寫操作而不是讀取操作。     3)容易出現死鎖。
   注意:inodb無法確定操作的行,這個時候就使用的意向鎖,也就是表鎖on row level);




4》察看儲存引擎:        儲存引擎是Mysql的特點,Mysql可以選擇多種儲存引擎及不同的儲存方式,是否進行事物處理等;      1>   查詢Mysql支援的引擎                 

                  

                   Mysql->show engines\G;

#########################           2>查詢Mysql引擎詳細資料:          引擎詳細資料:    #     引擎詳細資料:    #   》  ###########
 Mysql->show engine innodb status\G;

      3>查询Mysql默认存储引擎           

Mysql-> show variables like 'storage_engine';

        如果想修改存储引擎,可以在 my.ini中进行修改或者my.cnf中的Default-storage-engine=引擎类型;

                  

5》如何选择存储引擎

           在企业生产环境中,选择一个款合适的存储引擎是一个很复杂的问题。每一种存储引擎都有各自的优势,不能笼统的说,谁比谁好。通常用的比较多的     是innodb存储引擎
    以下是存储引擎的对比:

         

==========================创建,修改,删除表:

1》创建表的方法:
       语法:create table 表名(
    属性名数据类型完整约束条件,
    属性名数据类型条完整约束件,
    。。。。。。。。。
    属性名数据类型
  );

  举例:    

create table example0(
          id int,
          name varchar(20),
          sexboolean);

2》表的完整性约束:

       | 约束条件                              | 说明|

| (1)primary key      | 标识该字段为表的主键,具备唯一性|

| (2)foreign key       | 标识该字段为表的外键,与某表的主键联系|

| (3)not null             | 标识该属于的值不能为空|

| (4)unique              | 标识这个属性值是唯一|

| (5)auto_increment      | 标识该属性值的自动增加

| (6)default          | 为该属性值设置默认值|

        1>设置表的主键:
               主键是一个表的特殊字段,这个字段是唯一标识表中的每条信息,主键和记录的关系,跟人的身份证一样。名字可以一样,但是身份证号码觉得不会一样,            主键用来标识每个记录,每个记录的主键值都不同,主键可以帮助Mysql以最快的速度查找到表中的某一条信息,主键必须满足的条件那就是它的唯一性,表中的          任意两条记录的主键值,不能相同,否则就会出现主键值冲突,主键值不能为空,可以是单一的字段,也可以多个字段的组合。

    举例:   

 create table sxkj(
        User_id int primary key,
        user_name varchar(20),
        user_sexchar(7));

         2>设置多个字段做主键
   举例:   

 create table sxkj2(
        user_id int ,
        user_name float,
        grade float,
          primary key(user_id,user_name));

            3>设置表的外键:
             外键是表的一个特殊字段,如果aa是B表的一个属性且依赖于A表的主键,那么A表被称为父表。B表为被称为子表,
         举例说明:
              user_id 是A 表的主键,aa  是B表的外键,那么user_id的值为zhangsan,如果这个zhangsan离职了,需要从A表中删除,那么B表关于                               zhangsan的信息也该得到相应的删除,这样可以保证信息的完整性。
    语法:
        constraint外键别名 foreign key(外键字段1,外键字段2)
                   references 表名(关联的主键字段1,主键字段2) 

                    (1) yy1表存储了zhangsan姓名和ID号
           create table yy1(
               user_id int primary key not null,
               user_name varchar(20));

                         

                        (2) yy2表存储了ID号和zhangsan的年龄(old)              

 create table yy2(
                    user_id int primary key not null,
                    old int(5),
                    constraint y_fk foreign key(user_id)
                    references yy1(user_id)on delete cascade on update cascade);


                                 

                     (3)数据填充yy1和yy2表            

 insert into yy1 values('110','zhangsan');
              insert into yy2 values('110','30');


                               

                   (4)更新测试:

           update yy1 set user_id='120' where user_name='zhangsan';
         查询验证
           select * from yy2;


                              

                    (5)删除测试:          

delete from yy1 where user_id='120';
        查询验证
          select * from yy2;


                              

            4>设置表的非空值
             语法:属性名数据类型  NOT NULL
             举例:              

 create table C(
                  user_id int NOT NULL);

            5> 设置表的唯一性约束
              唯一性指的就是所有记录中该字段。不能重复出现。
             语法:属性名数据类型  unique
             举例:              

 root@zytest 15:43>create table D(
                                                      ->user_id int unique);
                root@zytest 15:44>show create table D;

             6>设置表的属性值自动增加
                 Auto_increment 是Mysql数据库中特殊的约束条件,它的作用是向表中插入数据时自动生成唯一的ID,一个表只能有一个字段使用                                       auto_increment 约束,必须是唯一的;
            语法:属性名数据类型 auto_increment,默认该字段的值从1开始自增。
            举例:
              

create table F( user_id int primary key auto_increment);
               root@zytest 15:56>insert into F values();插入一条空的信息
               Query OK, 1 row affected, 1 warning (0.00 sec)
               root@zytest 15:56>select * from F;值自动从1开始自增
               +---------+
               | user_id |
                +---------+
              |       1 |
              +---------+
              1 row in set (0.01 sec)

               7>、设置表的默认值
                 在创建表时,可以指定表中的字段的默认值,如果插入一条新的纪录时,没有给这个字段赋值,那么数据库会自动的给这个字段插入一个默认                      值,字段的默认值用default来设置。
               语法: 属性名数据类型 default 默认值
               举例:                 

 root@zytest 16:05>create table G(
                           user_id int primary key auto_increment,
                           user_name varchar(20) default 'zero');
                   root@zytest 16:05>insert into G values('','');

                  插入数据,应为ID为自增,值为空,user_name设置了默认值,所以也为空。

3》查看表结构的方法:
            DESCRIBE可以查看那表的基本定义,包括、字段名称,字段的数据类型,是否为主键以及默认值等。。
         (1)语法:describe 表名;可以缩写为desc
         (2)  show create table查询表详细的结构语句,
        1>修改表名
               语法:alter table 旧表名 rename 新表名;
               举例;                

 root@zytest 16:11>alter table A rename zyA;
                  Query OK, 0 rows affected (0.02 sec)

        2>修改表的数据类型
              语法:alter table 表名 modify 属性名 数据类型;
              举例;                

root@zytest 16:15>alter table A modify user_name double;
                 Query OK, 0 rows affected (0.18 sec)

       3>修改表的字段名称
             语法: alter table 表名 change 旧属性名 新属性名 新数据类型;               

  root@zytest 16:15>alter table A change user_name user_zyname float;
                 Query OK, 0 rows affected (0.10 sec)

                 4>修改增加字段                

 alter table 表名 ADD 属性名1  数据类型 [完整性约束条件] [FIRST |AFTER 属性名2]

      v      增加没有约束条件的字段:              

  root@zytest 16:18>alter table A add phone varchar(20);
                 Query OK, 0 rows affected (0.13 sec)

      v       增加有完整约束条件的字段                

root@zytest 16:42>alter table A add age int(4) not null;
                 Query OK, 0 rows affected (0.13 sec)

      v 在表的第一个位置增加字段默认情况每次增加的字段。都在表的最后。                

root@zytest 16:45>alter table tt add num int(8) primary key first;
                 Query OK, 1 row affected (0.12 sec)
                 Records: 1  Duplicates: 0  Warnings: 0

      v          执行在那个位置插入新的字段,在phone后面增加                 

 root@zytest 16:46>alter table A add address varchar(30) not null after phone;
                   Query OK, 0 rows affected (0.10 sec)
                   Records: 0  Duplicates: 0  Warnings: 0

            总结:
             (1)  默认ADD 增加字段是在最后面增加
             (2)  如果想在表的最前端增加字段用first关键字
             (3)  如果想在某一个字段后面增加的新的字段,使用after关键字
    5>删除一个字段
          alter table 表名DROP 属性名;
          举例: 删除A 表的age字段            

root@zytest 16:51>alter table A drop age;   
             Query OK, 0 rows affected (0.11 sec)
             Records: 0  Duplicates: 0  Warnings: 0  

    6>更改表的存储引擎           

  alter  table表名 engine=存储引擎
              alter table A engine=MyISAM;

    7>删除表的外键约束            

 alter table 表名drop foreign key 外键别名;
              alter table  yy2  drop foreign key  y_fk;

  4》删除表的方法

        1>删除没有被关联的普通表
               drop table 表名;
        2>删除被其它表关联的父表
               在数据库中某些表之间建立了一些关联关系。一些成为了父表,被其子表关联,要删除这些父表,就不是那么简单了。删除方法,先删除所关联的                子表的外键,在删除主表。

以上是Mysql相關操作有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn