0


零基础学MySQL(二)-- 表的创建,修改,删除

在这里插入图片描述


文章目录


在这里插入图片描述


🎈一、创建表

1️⃣基本语法

CREATETABLE表名(
    列名 列类型, 
    列名 列类型, 
    列名 列类型, 
    列名 列类型)CHARACTERSET 字符集
    COLLATE 校对规则 
    ENGINE 存储引擎;

注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。

2️⃣入门案例

建立一个名为 nba_player 的球员信息表,包括姓名,出生日期,打球位置,身高,臂展,工资,所在球队,字符集为utf8,校对规则区分大小写,存储引擎为INNODB。
在这里插入图片描述

CREATETABLEnba_player(`name`VARCHAR(255),
    birthday DATE,`position`VARCHAR(255),
    height INT,
    arm_span INT,
    sal DOUBLE,
    team VARCHAR(255))CHARACTERSET utf8 
    COLLATE utf8_bin 
    ENGINEINNODB;

🎆二、MySQL常用数据类型

1️⃣数值型(整型)默认有符号

类型大小有符号范围无符号范围TINTINT(UNSIGNED)占1个字节有符号:-128 ~ 127无符号:0 ~ 255SMALLINT(UNSIGNED)占2个字节有符号:-2^15 ~ 2^15 - 1无符号:0 ~ 2^16 - 1MEDIUMINT(UNSIGNED)占3个字节有符号:-2^23 ~ 2^23 - 1无符号:0 ~ 2^24 - 1INT(UNSIGNED)占4个字节有符号:-2^31~ 2^31 - 1无符号:0 ~ 2^32 - 1BIGINT(UNSIGNED)占8个字节有符号:-2^63~ 2^63 - 1无符号:0 ~ 2^64 - 1

-- 如果没有指定 UNSIGNED, 就是有符号
CREATETABLEt3(
    id TINYINT);-- 如果指定 UNSIGNED, 就是无符号
CREATETABLEt4(
    id TINYINTUNSIGNED);

2️⃣数值型(bit)

--BIT(m) m 在 1-64CREATETABLEt05(num BIT(8));-- 添加数据 范围 按照你给的位数来确定,比如 m =8 表示一个字节 0~255INSERTINTO t05 VALUES(255);-- 显示按照 bit
SELECT*FROM t05;-- 查询时,仍然可以按照数来查询
SELECT*FROM t05 WHERE num =1;

3️⃣数值型(浮点型)默认有符号

类型大小FLOAT(UNSIGNED)占4个字节DOUBLE(UNSIGNED)占8个字节DECIMAL【M,D】(UNSIGNED)可变
DECIMAL【M,D】(UNSIGNED)可以支持更加精确的小数位,M是小数位数(精度)的总数,D是小数点(标度)后面的位数。
如果D是0,则值没有小数点部分。M最大为65,D最大为30,如果D省略,默认是0,如果M省略,默认是10。

#演示 decimal 类型、float、double 使用
#创建表
CREATETABLEt06(
    num1 FLOAT, 
    num2 DOUBLE, 
    num3 DECIMAL(30,20));
    
#添加数据
INSERTINTO t06 VALUES(88.12345678912345,88.12345678912345,88.12345678912345);SELECT*FROM t06;

4️⃣字符串的基本使用

类型大小CHAR(size) 固定长度字符串最大 255 字符VARCHAR(size) 可变长度字符串0 ~ 65535 字节TEXT0 ~ 2^16 - 1 字节MEDIUMTEXT0 ~ 2^24 - 1 字节LONGTEXT0 ~ 2^32 - 1 字节BLOB0 ~ 2^16 - 1 字节MEDIUMBLOB0 ~ 2^24 - 1 字节LONGBLOB0 ~ 2^32 - 1 字节
VARCHAR(size),最大可以存放 65532 字节 【1-3 个字节用于记录大小】
如果表的编码是

utf8

,那么最大可以存 (65535-3) / 3 = 21844字符
如果表的编码是

gbk

,那么最大可以存 (65535-3) / 2 = 32766字符

#演示字符串类型使用 char varchar
CREATETABLEt09(`name`CHAR(255));CREATETABLEt10(`name`VARCHAR(32766))CHARSET gbk;

在存放文本时,也可以使用 TEXT 数据类型,可以将 TEXT 列视为 VARCHAR 列,注意 TEXT 没有默认值,如果不够用可以使用 MEDIUMTEXT 或 LONGTEXT。
BLOB,MEDIUMBLOB,LONGBLOB是二进制文本数据类型,使用较少。

#如果 varchar 不够用,可以考试使用 mediumtext 或者 longtext
#如果想简单点,可以使用直接使用 text
CREATETABLEt13( 
    content TEXT, 
    content2 MEDIUMTEXT, 
    content3 LONGTEXT);

5️⃣字符串使用细节

细节1:

CHAR(4),这个4表示字符数(最大255),不是字节数,不管是中文还是字母都是放4个按字符计算。
VARCHAR(4),这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据。
不管是中文还是英文字母,都是最多存放4个,是按照字符来存放的。
对于占多少字节取决于编码。
编码类型大小GBK字母1字节,汉字2字节UTF-8字母1字节,汉字3字节Unicode字母2字节,汉字2字节
细节2:

CHAR(4)是定长(固定的大小),就是说,即使你插入’aa’ ,也会占用分配的4个字符的空间。
VARCHAR(4)是变长(变化的大小),就是说,如果你插入了’aa’,实际占用空间大小是2个字符空间再加上1-3个字节,因为VARCHAR本身还需要占用1-3个字节来记录存放内容长度

细节3:

什么时候使用char,什么时候使用varchar
1.如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等。
2.如果一个字段的长度是不确定,我们使用varchar ,比如留言,文章。
3.查询速度:char > varchar

6️⃣时间类型

类型格式描述DATEYYYY-MM-DD年-月-日TIMEHH:MM:SS时:分:秒YEARYYYY年DATETIMEYYYY-MM-DD HH:MM:SS年-月-日 时:分:秒TIMESTAMPYYYY-MM-DD HH:MM:SS年-月-日 时:分:秒

#演示时间相关的类型
#创建一张表, date , datetime , timestamp
CREATETABLEt14(
    birthday DATE,-- 生日
    job_time DATETIME,-- 记录年月日 时分秒
    login_time TIMESTAMPNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP);-- 登录时间, 如果希望 login_time 列自动更新, 需要配置
        
SELECT*FROM t14;INSERTINTOt14(birthday, job_time)VALUES('2022-11-11','2022-11-11 10:10:10');-- 如果我们更新 t14 表的某条记录,login_time 列会自动的以当前时间进行更新

TIMESTAMP 在 INSERT 和 UPDATE 时,自动更新。

🎇三、修改与删除表

1️⃣添加列

基本语法:

ALTERTABLE 表名
    ADD 列名 列类型

练习:球员表 nba_player 上面添加一个 enter_nba_time 列,INT类型(要求在team后面)

ALTERTABLE nba_player
    ADD enter_nba_time INTNOTNULLDEFAULT0AFTER team;

2️⃣修改列

基本语法:

ALTERTABLE 表名
    MODIFY 列名 列类型

练习:修改球员表的name列,使其长度为60。

ALTERTABLE nba_player
    MODIFY`name`VARCHAR(60)NOTNULLDEFAULT''

3️⃣删除列

基本语法:

ALTERTABLE 表名
    DROP 列名 

练习:删除球员表 nba_player 上面的 enter_nba_time 列

ALTERTABLE nba_player 
    DROP enter_nba_time 

4️⃣修改表名

基本语法:

RENAMETABLE 表名 TO 新表名 

练习:球员表名改为 nba_players

RENAMETABLE nba_player TO nba_players

5️⃣修改表的字符集

基本语法:

ALTERTABLE 表名 CHARACTERSET 字符集名

练习:球员表的字符集改为utf8

ALTERTABLE nba_player CHARACTERSET utf8

6️⃣修改列名

基本语法:

ALTERTABLE 表名 
    CHANGE 原列名 列名

练习:将列名name修改为player_name

ALTERTABLE nba_player 
    CHANGE`name` player_name VARCHAR(64)NOTNULLDEFAUIT''

7️⃣查看表的结构

基本语法:

DESC 表名 

8️⃣删除表

基本语法:

DROPTABLE[IFEXISTS] 表名;

可选项 IF EXISTS 代表只有表存在才会删除该表,表名不存在,则不执行删除操作(如果不
加该项,删除一张不存在的表,执行将会报错)。

标签: mysql 数据库 java

本文转载自: https://blog.csdn.net/programmerchiu/article/details/128679192
版权归原作者 邱崇源 所有, 如有侵权,请联系我们删除。

“零基础学MySQL(二)-- 表的创建,修改,删除”的评论:

还没有评论