MySQL在创建表,创建.frm文件保存表和列定义。索引存储在一个.MYI(MYindex)且数据存储在有.MYD(MYData)扩展名的文件里。

  一、用SHOW/ DESCRIBE语句显示数据表的信息

语法:

    SHOW TABLES [FROM db_name] [LIKE wild]

or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]

or SHOW INDEX FROM tbl_name [FROM db_name]

or SHOW TABLE STATUS [FROM db_name] [LIKE wild]

{DESCRIBE | DESC} tbl_name {col_name | wild}

SHOW TABLES列出在一个给定的数据库中的表。你也能够用mysqlshow db_name命令得到这张表。当然使用mysqlshow时,须要接參数-u username -p xx;

SHOW COLUMNS列出在一个给定表中的列。

假设列类型不同于你期望的是基于CREATE TABLE语句的那样,注意,MySQL有时改变列类型。

  DESCRIBE语句提供了类似SHOW COLUMNS的信息。

DESCRIBE提供关于一张表的列的信息。col_name能够是一个列名字或包括SQL的“%”和“_”通配符的一个字符串。这个语句为了与Oracle 兼容而提供的。

  SHOW TABLE STATUS(在版本号3.23引入)执行类似SHOW STATUS,可是提供每一个表的很多其它信息。你也能够使用mysqlshow --status db_name命令得到这张表。

  SHOW FIELDS是SHOW COLUMNS一个同义词。SHOW KEYS是SHOW INDEX一个同义词。

  你也能够用mysqlshow db_name tbl_name或mysqlshow -k db_name tbl_name 列出一张表的列或索引。

  SHOW INDEX以很相似于ODBC的SQLStatistics调用的格式返回索引信息。

二、使用mysqlshow 工具得到信息

以下简介一下mysqlshow有用程序的使用方法。在得到数据库和表的信息上,使用起来很方便。

当然使用mysqlshow时,须要接參数-u username -p xx;

得到已有数据库的列表:

shell> mysqlshow

列出某数据库db_name中已有的表:

shell> mysqlshow db_name

列出某数据库表db_name.tbl_name的结构信息:

shell>mysqlshow db_name tbl_name

列出一张表的索引:

shell> mysqlshow –k db_name tbl_name

三、用CREATE TABLE 语句创建数据表

1、CREATE TABLE 语句的基本的语法

CREATE TABLE tbl_name(create_definition,...) [TYPE =table_type]

create_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT][PRIMARY KEY]

在MySQL3.22或以后版本号中,表名能够被指定为db_name.tbl_name,无论有没有当前的数据库都能够。

比如,创建一个訪问者留言表:

shell> mysql –u root –p

mysql> create database mytest;

mysql> CREATE TABLE guestbook

    -> (

    -> visitor VARCHAR(40),

    -> comments TEXT,

    -> entrydate DATETIME

    ->);

假设一切正常,祝贺你,你已经建立了你的第一个表。

你所创建的表名为guestbook,你能够使用这个表来存储来字你网站訪问者的信息。你是用REEATE TABLE语句创建的这个表,这个语句有两部分:第一部份指定表的名子。

第二部份是括在括号里的各字段的名称和属性,相互之间用逗号隔开。

表guestbook有三个字段:visitor,comments 和entrydate。visitor字段存储訪问者的名字,comments字段存储訪问者对你网站的意见,entrydate字段存储訪问者訪问你

网站的日期和时间。

注意每一个字段名后面都跟有一个专门的表达式。比如。字段名comments后面跟有表达式TEXT。

这个表达式指定了字段的数据类型。数据类型决定了一个字段能够存储什么样

的数据。由于字段comments包括文本信息,其数据类型定义为文本型。

2、怎样指定表的类型

你也能够在创建表时指定表的类型。假设不指定表的类型。在3.22及曾经版本号中缺省为ISAM表,在3.23版本号中缺省为MyISAM表。

你应该尽量使用MyISAM表。指定表的类型经

经常使用于创建一个HEAP表:

mysql> CREATE TABLE fast(id int,articles TEXT) TYPE=HEAP;

3、隐含的列说明的改变

在某些情况下,MySQL隐含地改变在一个CREATE TABLE语句给出的一个列说明。(这也可能在ALTER TABLE)

  长度小于4的VARCHAR被改变为CHAR。

  假设在一个表中的不论什么列有可变长度,结果是整个行是变长的。因此, 假设一张表包括不论什么变长的列(VARCHAR、TEXT或BLOB),全部大于3个字符的CHAR列被改变为VARCHAR

列。

这在不论什么方面都不影响你怎样使用列。在MySQL中。VARCHAR仅仅是存储字符的一个不同方法。MySQL实施这样的改变。是由于它节省空间而且使表操作更快捷。

  TIMESTAMP的显示尺寸必须是偶数且在2 ~ 14的范围内。假设你指定0显示尺寸或比14大。尺寸被强制为14。从1~13范围内的奇数值尺寸被强制为下一个更大的偶数。

  你不能在一个TIMESTAMP列里面存储一个文字NULL。将它设为NULL将设置为当前的日期和时间。由于TIMESTAMP列表现就是这样,NULL和NOT NULL属性不以一般的方式运用并

且假设你指定他们,将被忽略。DESCRIBE tbl_name总是报告该TIMESTAMP列可能赋予了NULL值。

假设你想要知道MySQL是否使用了除你指定的以外的一种列类型,在创建或改变你的表之后。发出一个DESCRIBE tbl_name语句就可以。

4、利用SELECT 的结果创建表

关系数据库的一个重要概念是,不论什么数据都表示为行和列组成的表,而每条SELECT 语句的结果也都是一个行和列组成的表。在很多情况下,来自SELECT 的“表”仅是一个

随着您的工作在显示屏上滚动的行和列的图像。在MySQL 3.23 曾经,假设想将SELECT 的结果保存在一个表中以便以后的查询使用,必须进行特殊的安排:

1) 执行DESCRIBE 或SHOW COLUMNS 查询以确定想从中获取信息的表中的列类型。

2) 创建一个表,明白地指定刚才查看到的列的名称和类型。

3) 在创建了该表后。公布一条INSERT ... SELECT 查询。检索出结果并将它们插入所创建的表中。

在 MySQL 3.23 中。全都作了修改。CREATE TABLE ... SELECT 语句消除了这些浪费时间的东西,使得能利用SELECT 查询的结果直接得出一个新表。

仅仅需一步就能够完毕

任务,不必知道或指定所检索的列的数据类型。这使得非常easy创建一个全然用所喜欢的数据填充的表。而且为进一步查询作了准备。

  假设你在CREATE语句后指定一个SELECT,MySQL将为在SELECT中全部的单元创键新字段。

比如:

mysql> CREATE TABLE test

-> (a int not null auto_increment,primary key (a), key(b))

-> SELECT b,c from test2;

这将创建一个有3个列(a,b。c)的表,当中b,c列的数据来自表test2。

注意假设在拷贝数据进表时发生不论什么错误,表将自己主动被删除

  能够通过选择一个表的所有内容(无WHERE 子句)来拷贝一个表。或利用一个总是失败的WHERE 子句来创建一个空表,如:

mysql> CREATE TABLE test SELECT * from test2;

mysql> CREATE TABLE test SELECT * from test2 where 0;

假设希望利用LOAD DATA 将一个数据文件装入原来的文件里,而不敢肯定是否具有指定的正确数据格式时,创建空拷贝非常实用。您并不希望在第一次未得到正确的选项时以

原来表中畸形的记录而告终。利用原表的空拷贝同意对特定的列和行分隔符用LOAD DATA 的选项进行试验,直到对输入数据的解释惬意时为止。在惬意之后,就能够将数据装入

原表了。

可结合使用 CREATE TEMPORARY TABLE 与SELECT 来创建一个暂时表作为它自身的拷贝,如:

这同意改动my_tbl 的内容而不影响原来的内容。

在希望试验对某些改动表内容的查询。而又不想更改原表内容时。这样做非常实用。

为了使用利用原表名的预先编写的脚本。不

须要为引用不同的表而编辑这些脚本;仅仅需在脚本的起始处添加CREATE TEMPORARY TABLE 语句就可以。

对应的脚本将创建一个暂时拷贝。并对此拷贝进行操作。当脚本结束时服

务器会自己主动删除这个拷贝。

要创建一个作为自身的空拷贝的表,能够与CREATE TEMPORARY ... SELECT 一起使用WHERE 0 子句。比如:

但创建空表时有几点要注意。在创建一个通过选择数据填充的表时,其列名来自所选择的列名。假设某个列作为表达式的结果计算,则该列的“名称”为表达式的文本。

表达式

不是合法的列名,可在mysql 中执行下列查询了解这一点:

为了正常工作,可为该列提供一个合法的别称:

假设选择了来自不同表的具有同样名称的列。将会出现一定的困难。假定表t1 和t2 两者都具有列c,而您希望创建一个来自两个表中行的全部组合的表。那么能够提供别

名指 定新表中惟一性的列名,如:

通过选择数据进行填充来创建一个表并会自己主动拷贝原表的索引。

    五、用ALTER TABLE语句改动表的结构

有时你可能须要改变一下现有表的结构,那么Alter Table语句将是你的合适选择。

  添加列

alter table tbl_name add col_name type

比如,给表添加一列weight

mysql>alter table pet add weight int;

  删除列

alter table tbl_name drop col_name

比如,删除列weight:

mysql>alter table pet drop weight;

  改变列

alter table tbl_name modify col_name type

比如。改变weight的类型:

mysql> alter table pet modify weight samllint;

还有一种方法是:

alter table tbl_name change old_col_name col_name type

比如:

mysql> alter table pet change weight weight samllint;

  给列更名

mysql>alter table pet change weight wei;

  给表更名

mysql>alter table tbl_name rename new_tbl

比如,把pet表更名为animal

mysql>alter table pet rename animal;

六、用DROP TABLE 语句删除数据表

DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...]

DROP TABLE删除一个或多个数据库表。

全部表中的数据和表定义均被删除,故小心使用这个命令!

在MySQL 3.22或以后版本号,你能够使用关键词IF EXISTS类避免不存在表的一个发生错误。

比如:

mysql>USE mytest;

mysql>DROP TABLE guestbook;

或,同时也能够指定数据库和表:

mysql>DROP TABLE mytest.guestbook;

MySQL第五个学习笔记 该数据表的操作的更多相关文章

  1. MySql cmd下的学习笔记 —— 有关建立表的操作(有关于数据类型)

    (01)建表的过程实际上是 声明字段 的过程 一. 列类型(字段): 存储同样的数据时,不同的列类型,所占据的空间和效率是不一样的,这就是建表时要考虑的意义. 二.MySQL三大列类型     数值型 ...

  2. MySQL 5.6学习笔记(数据表基本操作)

    1. 创建数据表 1.1 最基本的语法 CREATE TABLE tbl_name (col_name column_definition,...) [table_options] -column_d ...

  3. 吴裕雄--天生自然ORACLE数据库学习笔记:数据表对象

    create table students( stuno ) not null, --学号 stuname ), --姓名 sex ), --性别 age int, --年龄 departno ) n ...

  4. MySql cmd下的学习笔记 —— 有关多表查询的操作(多表查询练习题及union操作)

    先建立一张 m 表 mysql> create table m ( -> mid int, -> hid int, -> gid int, ), -> matime da ...

  5. MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)

    先找到goods表 查询goods_id最大的商品 where型的子查询 查询goods_id最大的商品(不能用排序) 把两步写成一步,就是子查询 from型子查询 查找出每种cat_id下goods ...

  6. MySql cmd下的学习笔记 —— 有关建立数据库的操作(连接Mysql,建立数据库,删除数据库等等)

    (01) 连接数据库 mysql -uroot -p 之后输入密码 ******.(由于我的密码设置的是111,所以输入的是111) (02) 退出数据库 exit (03) 查看数据库 show d ...

  7. MySQL实战45讲学习笔记:第三十九讲

    一.本节概况 MySQL实战45讲学习笔记:自增主键为什么不是连续的?(第39讲) 在第 4 篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧 ...

  8. 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳

    <Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...

  9. Windows phone 8 学习笔记(2) 数据文件操作

    原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...

随机推荐

  1. [Angular] Show a loading indicator in Angular using *ngIf/else, the as keyword and the async pipe

    The network may be unreliable and loading data may take time. Thus it is important to give the user ...

  2. C語言 rand函数 进阶探讨与实现

    C语言中随机函数应用        可能大家都知道C语言中的随机函数random,但是random函数并非ANSI C标准,所以说.random函数不能在gcc,vc等编译器下编译通过. 那么怎么实现 ...

  3. ios开发核心动画五:转场动画

    #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...

  4. python implementation for Qt's QDataStream(看一下QDataStream的结构)

    #!/usr/bin/env python # -*- coding: utf- -*- from __future__ import print_function from __future__ i ...

  5. mysql 序列号生成器 (自定义函数)

    https://yq.aliyun.com/articles/42600 http://bbs.csdn.net/topics/360203885 http://www.tuicool.com/art ...

  6. [NPM] Add comments to your npm scripts

    The need for comments in your package.json file becomes desirable the more and more npm scripts you ...

  7. hdu 4865 dp

    Peter's Hobby Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  8. UE4.5.0的Kinect插件(Plugin)<一>

    声明:所有权利保留. 转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/43193431 UE4 Plugin,在UE4的官网,放出了有个 ...

  9. 善用Linux与Windows中的筛选功能及其他有用功能

    cmd中的检索目录结构是用 tree命令,检索本目录中这一级别的所有文件是dir,要是文件很多时需要用到检索功能 dir | find "abc" #####主要find之后要加双 ...

  10. POJ 2104 - 主席树 / 询问莫队+权值分块

    传送门 题目大意应该都清楚. 今天看到一篇博客用分块+莫对做了这道题,直接惊呆了. 首先常规地离散化后将询问分块,对于某一询问,将莫队指针移动到指定区间,移动的同时处理权值分块的数字出现次数(单独.整 ...