MySQL学习之路_数据的组织方式-表

数据库组织数据的方式

前面已经讲过了创建数据库相关的(没看的,可以点此链接 跳过去),既然数据库已经创建好了,那么我们就要开始往里面装数据了,要怎么装呢?MySQL(不止MySQL是这样,Oracle等其它也是一样)组织数据是像excel表格一样。首先创建一张表,设置表的列的保存的内容是什么,插入进表的一行数据称为一个记录。
在具体到代码创建表之前,我们先来看看MySQL的数据类型,毕竟,知道了数据类型,我们才能为每个表列保存的值设置合适的类型。

MySQL三大数据类型

MySQL数据类型具体可以分为三大类:数值、文本、日期。

数值
数值 占用字节 说明
BIT 1/8 位类型,默认值1范围(1-64)
TINYINT[UNSIGNED][ZEROFILL] 1 带符号的范围是-128到127。无符号0-255。相当于java的byte
BOOL, BOOLEAN 1 范围跟BIT一样,用0、1分别代表false、true。存储时,true和false会被转换为1和0存储
SAMLLINT[UNSIGNED][ZEROFILL] 2 (相当于java的short)
MEDIUMINT[UNSIGNED][ZEROFILL] 3 范围为2的24次方
INT[UNSIGNED][ZEROFILL] 4 范围2的32次方(相当于java的int)
BIGINT[UNSIGNED][ZEROFILL] 8 范围2的64次方(相当于java的long类型)
FLOAT[(M,D)][UNSIGNED][ZEROFILL] 4 范围2的32次方,M指定显示数字的个数,D指定小数位数
DOUBLE[(M,D)][UNSIGNED][ZEROFILL] 8 范围2的64次方。M指定显示数字的个数,D指定小数位数
文本、二进制
字符串类型 占用字节范围 说明
CHAR(size) 0-255 定长字符串
VARCHAR(size) 0-65535 变长字符串
TYINTBLOB,MEDIUMBLOB,LONGBLOB 0-255, 0-65535, 0-16777215, 0-4294 967295 占用字节不同的二进制数据(音乐,图片,视频)
TINYTEXT, MEDIUMTEXT,LONGTEXT 0-255, 0-65535, 0-16777215, 0-4294 967295 占用字节数不同的文本类型(字符串)
VARBINARY(M) 允许长度0-M个字节的定长字节符串,值的长度+1个字节
BINARY(M) M 允许长度0-M个字节的定长字节符串

需要注意的是 :CHARVARCHAR 类型定长和可变的意思是,一旦CHAR类型确定了长度,譬如CHAR(10),表示10个字节的字符,那么它所占的字节就总是10个字节,即使存放的数据没有10个字节,它所占空间也是10个字节,VARCHAR和它正好正好相反,譬如VARCHAR(10) 能保存10个字符,但是如果你的数据小于10,那么实际长度取决于实际保存的数据长度。但是如果要保存的数据超过了所声明的大小,SQL语句会报错

日期
类型 占用字节 范围 格式 用途
DATE 4 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/’838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

MySQL三大数据类型上面都已经列出来了,数据类型不止说明了要保存的值是什么类型,还说明了保存值得范围是多少。现在我们就可以开始就创建表来存储数据。

创建表

在创建表之前,应该登入DBMS,然后USE 所创建的数据库,才能创建表。创建表的语法如下:

CREATE TABLE 数据表名
    (列声明);

其中列声明之间用逗号隔开。看例子:

CREATE TABLE example
    (id TYINT(2) NOT NULL PRIMARY KEY,
    name VARCHAR(10) NOT NULL,
    );

上面语句在当前使用的数据库创建了一个名为example的表,这个表包括两个字段—idname,类型分别是TYINTVARCHARNOT NULL 表示数据的值不能是NULL,字段id 后面的PRIMARY KEY 表示字段id 是主键。
主键的意思是一个表里面独一无二的一个值,靠主键能唯一索引一个表内的一个记录。因为一个表内的数据你不能保证数据值的唯一性,那么当你要查询某条记录时,就比较麻烦。设定主键就便于查询想查询的记录。

查询数据库的表

在你创建一个表后,想要查看是否已经创建成功,或者想查看当前操作的数据库所包含的表可以使用一下语句:

SHOW TABLES;

下面语句可以查询创建详情

SHOW CREATE TABLE 表名;

更改表的列类型

在创建表后,可以通过一下语句查看表字段的详情

SHOW COLUMNS FROM 表名;

或者

DESC 表名;

上述两条语句都可以实现对表字段情况的查询,且结果是一样的,DESCDESCRIBE 是一样的, 可以互换,为了方便才那样写。
此时如果此时发现需要更改字段的类型和名字,如下语句可以做到:

-- 更改列类型
ALTER TABLE 表名 MODIFY 列名 类型;

上面的-- 是MySQL的注释。
更改上述创建的表example 的列id 的类型为INT

ALTER TABLE example id INT;
-- 更改列名和类型
ALTER TABLE CHANGE COLUMN 列名 新列名 类型;

更改上述创建的表example 的列id 的名字和类型为useridSAMLLINT

-- 更改列名和类型
ALTER TABLE CHANGE COLUMN  id userid SMALLINT;

添加/删除列

添加列的语句也是ALTER TABLE

-- 默认在添加在列的最后
ALTER TABLE 表名 ADD 列名 类型;
-- 添加到列的最前面
ALTER TABLE 表名 ADD 列名 类型 frist;
-- 添加到指定列之后
ALTER TABLE 表名 ADD 列名 类型 after 表中已存在的列名

上面语句都很简单,就不在做示例了。
有添加就有删除,现在来看看删除列:

ALTER TABLE 表名 drop 指定的列名

删除列很简单,同样,也不做示例了。

修改表相关

修改表相关这里,我们就只讲下如何修改表的字符集和表名。
修改表的字符集:

ALTER TABLE 表名 CHARACTER SET 字符集;

修改表名:

RENAME TABLE 表名 TO 新表名;

上面都非常简单,就不多说了。


这次内容比较多,写博客也挺费时间的,打字慢,花了将近三小时才弄完,不敢相信!w(゚Д゚)w,看来还要多多加油了。

我自己也能力有限,如果有错的地方,敬请指正。

你可能感兴趣的:(MySQL)