mysql數據庫之管理表和索引

show  engines;   --->能夠顯示當前數據庫 所支持的全部存儲引擎mysql

   名稱             是否支持   簡要描述                                                     是否支持事務   是否支持分佈式事務   是否支持保存點sql

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+數據庫

| Engine             | Support | Comment                                                        | Transactions | XA                 | Savepoints |分佈式

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ui

| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys                  | YES      | YES                 | YES         |spa

                       (默認排序

show table status like '表名' \G --->查看一個表的屬性信息索引

建立表:事務

一、直接定義一張空表ci

   create   table   [if not extsts]  表名 (表屬性) ,(表選項:字段名稱,字段屬性,約束/索引)

  設置主鍵方法:

     create table sun1 (id int not  null auto_increment primary key ,name char(20)not null ,age tinyint  not null );

     create table sun2 (id int not  null auto_increment ,name char(20)not null ,age tinyint  not null,primary key(id,name));  :id和name聯合起來成爲主鍵 

  設置惟一鍵(名稱字段中不容許出現重複)

     create table sun2 (id int not  null auto_increment ,name char(20)not null ,age tinyint  not null,primary key(id,name)  ,unique key (name));  :name這個字段中的數據不容許出現重複

     create table sun2 (id int not  null auto_increment ,name char(20)not null ,age tinyint  not null,primary key(id,name)  unique key (name)index(age)); :設置age 爲索引

 設置表的存儲引擎

     create  table  表名  (一系列屬性 )engine = 存儲引擎名

 設置最多存儲多少行

     create  table  表名  (一系列屬性 ) max-rows=多少行

當使用AUTOINCREMENT列建立序列時,INSERT語句中不使用字段名將致使MySQL自動產生序列的下一個序號。這個序號做爲表的主鍵。

     insert into   kk     (ke)  values   ('huama'),('pixie'),('kuihua');

        關鍵字   表    字段  關鍵字    添加內容

 

鍵也稱做約束,可用於索引,屬於特殊索引(有特殊限定);B+tree

show  indexes   from  表名 ;    --->查看指定表的索引

那個表上  是否是               第幾個    索引在哪       排序                                      索引

的索引    非惟一鍵   鍵名稱     索引     個字段上       規則                                      類型

+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |

+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

| kk    |        0 | PRIMARY  |   1        |   name     |    A   |       9  |   NULL | NULL  |    | BTREE      |         |               |

+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

二、從其餘表中查詢出數據並以之建立新表

仿照一張表建立一張新表(有數據)

create  table  xinwen  select  *  from  kk     where  name >= 2;

    建立表     表名      查看 舊錶   表名    關鍵字  條件

三、以其餘表爲模板,建立一個新表

仿照一張表建立一張新表(空表)

create  table  新建表名  like  仿照代表;

四、直接修改表引擎

alter   table   表名   engine=存儲引擎名(MyIASM|lnnoDB

修改表:

  alter  table 

     添加、修改、刪除字段    修改表屬性

     添加、刪除、修改索引    改表名

給表中一個字段添加一個惟一鍵(前提是表中沒有重複的數據)

alter  table  表名  add  unique  key   (字段名);

給庫中的表更名字

alter  table  舊名字  rename  to  新名字;

或者:rename  table  舊名字 to  新名字;

 

多表查詢(將兩張表聯合起來查詢相同的結果):

 

select  name   ,    keming   from  xuehao,kehao  where  xuehao.cid=kehao.cid;

查詢    表A字段 表B字段         表名   表名  條件    兩張表的cid相同的數據

 

注意,外鍵約束只可以用在支持事務的存儲引擎上

建立與刪除索引

建立索引: create   index  索引名稱    on  表名  (字段) ;

刪除索引:drop  index  索引名   on  表名;

 

insert  into 

insert  into  表名  (字段,字段value  ('字符串',數字)('字符串',數字)

insert  into  表名  set  字段=數值(字符串加引號),字段=數值,字段=數值;

select  *  from  kebiao  order  by    id     desc    limit  1;

                 表名   排序       字段   倒敘   只顯示1個

當咱們在表中刪除一個數據(id 10),當咱們再建立這個數據時,id不會再是10,用一條命令查看自動生成的id,(select  last_insert_id();)mysql會接着這裏面的數字繼續排下去,除非把這裏面的數值清零。

 

在表中篩選出的數據插入到另外一張表中(兩種表的字段必須相同)

insert  into  kebiao  (name) select  name  from  xuesheng   where   id>2;

   插入到     表名   字段      在  字段        表名        篩選   條件

在表中篩選出的數據插入到另外一張表中,若這張表中數據重複則替換

replace  into  kebiao  (name) select  name  from  xuesheng   where   id>2;

 

delete

mysql內置選項:當你使用delete語句或者update語句時,沒有使用where條件(字句),它不會讓你執行!

注意:當你清空整張表時,在插入數據,數據的id號也會接着最後一個被清空數據的id號繼續往下排

      因此,想要從零開始,必須清空(select  last_insert_id();)中的數值

truncate  表名; --->清空表,而且重置計數器(select  last_insert_id();)相似於id。。。

相關文章
相關標籤/搜索