首頁  >  文章  >  資料庫  >  mysql資料表操作實例詳解

mysql資料表操作實例詳解

小云云
小云云原創
2018-03-15 10:49:261728瀏覽

本文主要和大家分享mysql資料表操作實例詳解,希望能幫助大家,首先我們先來看看如何建立資料表。

建立表格

  • 基本語法形式:

create table 【if not exists】 表名(字段列表【,索引或約束列表】) 【表選項列表】;

  • 字段設定形式:

欄位名稱  類型  【字段屬性1  字段屬性2  …..】

說明:
1. 字段名稱可以自行取;
2.類型是前面所學的資料型態:int,  tinyint,  float,  double,  char(6),  varchar(25),  text,  datetime。
3. 欄位屬性可以有多個(依照特定的需要),彼此之間直接空格隔開;主要如下幾個:

##屬性名稱意義auto_increment:只用於整數類型,讓該欄位的值自動獲得一個成長值。通常用於做一個表格的第一個欄位的設定,通常也當做主鍵(primary key)#primary  key:用於設定該欄位為主鍵,此時該欄位的值就可以「唯一確定」一行資料#unique  key:設定該欄位是「唯一的」,也就是不重複的。 not  null:用於設定該欄位不能為空(null),如果沒有設定,則預設是可為空的。 comment :欄位說明文字
#索引

  • 索引是系統內部自動維護的隱藏的“資料表”,它的作用是,可以大大加快資料的查找速度!

  • 這個隱藏的資料表,其中的資料是自動排好序的,其查找速度就是建立在這個基礎上。

形式為:

索引类型(要建立索引的字段名)

#索引類型形式意思普通索引key(欄位名稱)就是一個索引而已,沒有其他作用,只能加快尋找速度唯一索引unique  key(欄位名稱)是索引,而且還可以設定其欄位的值不能重複(唯一性)主鍵索引primary  key (欄位名稱)是索引,而且,還具有區分該表中的任何一行資料的功能(其實也是唯一性),它其實比唯一性索引多一點功能:唯一性可以為空null,而主鍵不能為空全文索引fulltext (欄位名稱)外鍵索引foreign  key(欄位名稱)references  其他資料表(對應其他表格中的欄位名稱)

索引创建语法:

mysql資料表操作實例詳解

外键索引:

foreign  key (字段名) references  其他表(对应其他表中的字段名);

外键:表中的一个字段不是本表的主键或候选键,而是另一个表的主键或候选键。
 候选键或候选键:如果一个表中具有能够唯一标识的一个行的属性,则称为候选键,候选键中任选一个为主键。

mysql資料表操作實例詳解

示例:
mysql資料表操作實例詳解

注意: 插入xuesheng表中的数据时,banji_id字段的值,就不可以随便插入了,而是必须是banji表中的id字段所已经有的数据值,才可以插入。

全文索引:仅做了解,因为对中文还不够友好

一、概述
       MySQL中的全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。
 二、语法
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION }
       例如:SELECT * FROM tab_name WHERE MATCH (col1,col2) AGAINST (search_word);
       这里的table需要是MyISAM类型的表,col1、col2需要是char、varchar或text类型,在查询之前需要在col1和col2上建立一个全文索引。


约束

约束,就是要求数据需要满足什么条件的一种“规定”。


约束类型 形式 含义
主键约束 primary key ( 字段名) 使该设定字段的值可以用于“唯一确定一行数据”,其实就是“主键”的意思。
唯一约束 unique   key ( 字段名) 使该设定字段的值具有“唯一性”,自然也是可区分的。
外键约束 foreign key ( 字段名) references  其他表名(对应其他表中的字段名) 使该设定字段的值,必须在其谁定的对应表中的对应字段中已经有该值了。
非空约束 not  null 其实就是设定一个字段时写的那个“not null”属性。这个约束只能写在字段属性上
默认约束 default  XX值 其实就是设定一个字段时写的那个“default  默认值”属性,这个约束只能写在字段属性上。
检查约束 check(某种判断语句)

比如:

create  table  tab1 (
age  tinyint,check  (age>=0 and age <100)    /*这就是检查约束*/ 
)#目前相关版本还不支持,就是说只分析,但会被忽略。

其实,主键约束,唯一约束,外键约束,只是“同一件事情的2个不同角度的说法”,他们同时也称为“主键索引”,“唯一索引”,“外键索引”。


表选项列表

表选项就是,创建一个表的时候,对该表的整体设定,主要有如下几个:
 1、 charset = 要使用的字符编码,
 2、 engine = 要使用的存储引擎(也叫表类型),
 3、auto_increment = 设定当前表的自增长字段的初始值,默认是1
  4、comment =‘该表的一些说明文字’


说明:
  1,设定的字符编码是为了跟数据库设定的不一样。如果一样,就不需要设定了:因为其会自动使用数据库级别的设定;
 2,engine(存储引擎)在代码层面,就是一个名词:InnoDB, MyIsam, BDB, archive, Memory。默认是InnoDB。


存储引擎

存储引擎是将数据存储到硬盘的“机制”。

不同的存储引擎,其实主要是从2个大的层面来设计存储机制:

  • 尽可能快的速度;

  • 尽可能多的功能;

选择不同的存储引擎,就是上述性能和功能的“权衡”。

大体如下:
mysql資料表操作實例詳解

演示:
mysql資料表操作實例詳解


修改表

几点说明:

  • 修改表,是指修改表的结构——正如创建表也是设定表的结构。

  • 创建表能做的事,修改表几乎都能做——但很不推荐去修改表,而是应该在创建表的时候就基本确定表的结构。

  • 大体来说:
    1:可以对字段进行:添加,删除,修改;
    2:可以对索引进行:添加,删除

  • 表的选项,通常“都是修改”,即使不写任何表选项,他们都有其默认值。

常见几个:

操作类型 表达式
添加字段 alter  table 表名 add  [column] 新字段名 字段类型  [字段属性列表]
修改字段(并可改名) alter  table 表名 change [column] 旧字段名 新字段名 新字段类型 [新字段属性列表]
删除字段 alter  table  表名 drop  [column] 字段名
添加普通索引 alter  table 表名 add  key  [索引名]  (字段名1[,字段名2,…])
添加唯一索引(约束) alter table 表名 add unique key (字段名1[,字段名2,…])
添加主键索引(约束) alter table 表名 add primary key (字段名1[,字段名2,…])
修改表名 alter  table  旧表名   rename  [to] 新表名
删除表 drop  table  【if  exists】 表名

其他表的相关语句:

操作类型 表达式
显示当前数据库中的所有表 show tables
显示某表的结构 desc 表名; 或:describe 表名
显示某表的创建语句 show create table 表名
重命名表 rename table 旧表名 to 新表名
从已有表复制表结构 create table [if not exists] 新表名 like 原表名

演示复制表结构:

  • 创建表tab_int,显示表创建语句

mysql資料表操作實例詳解

  • 将tab_int复制给tab_int_bak,显示tab_int_bak表创建语句,与tab_int一致
    mysql資料表操作實例詳解

相关推荐:

查看MySQL数据表的索引方法

MySQL数据表的创建、查看、插入实例详解

关于MySQL数据表操作的详解

以上是mysql資料表操作實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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