MySQL学习记录(2)

1.25日学习内容:

数据表的创建与操作

一、数据类型

大致分为三类:
数值类型、日期和时间类型、字符串(字符)类型

1.数值类型

(1)整数类型

类型名称说明存储字节
TINYINT很小的整数1
SMALLINT小的整数2
MEDIUMINT中等大小的整数3
INT普通大小的整数4
BIGINT大整数8

可在关键字后面的括号内指定整数值的显示宽度,如 INT(4) 最大显示宽度是4。

(2)浮点数类型

类型名称存储字节
FLOAT4
DOUBLE8

浮点数类型可以用(M,D)来表示
M:精度,表示总共的位数
D:标度,表示小数的位数

(3)定点数类型
MySQL中,表示小数除了用浮点数类型,还可以使用定点数。
定点数类型只有一种:DECIMAL。定点数也可用(M,D)来表示,其默认D值为0,M值为10。
DECIMAL实际是以字符串存储的,存储空间并不是固定的,而是由精度值M决定,占用M+2个字节。
若进行数值比较,最好使用DECIMAL类型,而非浮点数。

2.日期和时间类型

类型名称日期格式日期范围存储字节
YEARYYYY1901~21551
TIMEHH:MM:SS-838:59:59~838:59:593
DATEYYYY-MM-DD1000-01-01~9999-12-313
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00~9999-12-31 23:59:598
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:001~2038-01-19 03:14:074

DATETIME与TIMESTAMP区别
DATETIME
与时区无关,存入的是什么值就是什么值,不会根据当前时区进行转换。
datetime(n),n不是存储长度,而是显示的小数位数,即使小数位数是0,存储是也是存储的6位小数,仅仅显示0位而已;要想显示小数,设置datetime(n),n=3显示小数点后3位,毫秒,n=6显示小数点后6位,微秒。
TIMESTAMP
存入的是自1970-01-01午夜(格林尼治标准时间)以来的秒数,它和unix时间戳相同。所以它与时区有关,查询时转为相应的时区时间。比如,存储的是1970-01-01 00:00:00,客户端是北京,那么就加8个时区的小时1970-01-01 08:00:00。
当插入一条记录并没有指定TIMESTAMP这个列值时,MySQL会把TIMESTAMP列设为当前的时间。

3.字符串类型
MySQL支持两类字符串数据:文本字符串和二进制字符串。

类型名称说明存储需求
CHAR(M)固定长度非二进制字符串M字节,1<=M<=255
VARCHAR(M)变长非二进制字符串L+1字节,其中L<=M,1<=M<=255
TINYTEXT非常小的非二进制字符串L+1字节,其中L<28
TEXT小的非二进制字符串L+2字节,其中L<216
MEDIUMTEXT中等大小的非二进制字符串L+3字节,其中L<224
LONGTEXT大的非二进制字符串L+4字节,其中L<232
ENUM枚举类型,只能有一个枚举字符串值1或2字节,取决于枚举值的数目(最大值65535)
SET一个集合,字符串对象可以有零个或多个SET成员1,2,3,4,或8字节,取决于集合成员的数量(最多64个成员)

:VARCHAR和TEXT是变长类型,存储需求取决于值的实际长度,而不是取决于类型的最大可能长度。

二、创建数据表

数据表属于数据库,在创建数据表之前,应使用语句“USE <数据库名>”指定操作是在哪个数据库进行。若未选择数据库,系统会显示No database selected的错误。
创建数据表 CREATE TABLE

CREAT TABLE<表名>
(
字段名1 数据类型[完整性约束条件],
字段名2 数据类型[完整性约束条件],
字段名3 数据类型
···
);

字段名:规定数据表中列的名称。
若创建多个列,需要用逗号隔开。

三、查看数据表结构

1.查看表基本结构
包括字段名、字段数据类型、是否为主键、是否有默认值等。

语法格式

describe 表名;    
或简写为 desc 表名;

  • Null: 表示该列是否可以存储NULL值。

  • Key: 表示该列是否已编制索引。
    PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。

  • Default: 表示该列是否有默认值,如果有的话值是多少。

  • Extra: 表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

2.查看表详细结构

语法格式

show create table <表名>\G

执行结果
在这里插入图片描述

四、修改数据表

1.修改名称
数据库系统通过表名来区分不同的表。

修改表名 语法结构

alter table <旧表名> rename [to] <新表名>;
  • to: 可选参数,其是否在语句中出现,不会影响执行结果。

2.修改字段数据类型
语法结构

alter table <表名> modify <字段名> <新数据类型>;

3.修改数据表的字段名
语法结构

alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
  • 若不需要修改数据类型,可以设置为与原来一样,但数据类型不能为空。
  • 不同类型数据在机器中存储方式及长度不同,修改数据类型可能破坏原有数据。因此,数据库中已有数据时,不要轻易修改数据类型。

4.在数据表中添加字段
语法结构

alter table <表名> add <新字段名> <数据类型> [约束条件][first|after 已经存在的字段名];
  • first: 可选参数,作用是将新添加的字段设置为表的第一个字段。
  • after:可选参数,作用是将新添加字段添加到指定的“已存在字段名”的后面。

5.修改字段排序方式
语法格式

alter table <表名> modify <字段1> <数据类型> first|after <字段2>;
  • 字段1:要修改位置的字段。
  • first: 可选参数,将"字段1"修改为表的第一个字段。
  • after 字段2: 将“字段1”插入到“字段2”后面。

6.删除字段
语法结构

alter table <表名> drop <字段名>;

五、删除数据表

1.删除没有被关联的表
语法结构

drop table [if exists]1,表2,···,表n;

2.删除被其他表关联的主表
若数据表之间存在外键关联,不能直接删除父表,因为会破坏表的参照完整性。可以先删除与它关联的子表,再删除父表。如果想单独删除父表,只需将关联的表的外键约束条件取消,然后再删除父表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值