DDL建库建表(操作数据库/表)⭐️⭐️⭐️
数据库
创建库
//create database 库名
create database xiaozhao2;
查看库
//查看所有的库
show databases;
删除库(危险操作)
//drop database 库名
drop database xiaozhao2;
使用库\切换库
//use 库名
use xiaozhao2;
查看库数据
//查看库中所有表数据
show tables;
数据表⭐️⭐️⭐️
创建表
//创建表
create table 表名(字段名 属性 类型,...字段名 属性 类型);-- `反引号 -- 取消关键性
-- DEFAULT NULL 表示该字段的值可以为空
-- DEFAULT CHARSET=utf8mb4 字符集
-- COLLATE=utf8mb4_0900_ai_ci 字符排序
-- ENGINE=InnoDB (重要) 存储 引擎 规则CREATE TABLE `student` (`stu_name` varchar(10) DEFAULT NULL,`stu_age` tinyint DEFAULT NULL,`stu_birthday` datetime DEFAULT NULL,`stu_id` char(18) DEFAULT NULL,`stu_score` decimal(4,1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
数据表的字段类型
- 字符串类型
- char(字符串长度) 固定长度字符串(0~255)
- varchar(字符串长度) 可变长度字符串(0~65535)
- tinytext(微型文本串) 167777215长度+3个字节
- **text(**文本串 4个G左右大小) 4294967295长度+4个字节
⭐️⭐️⭐️char和varchar的比较
-
char 特点固定长度,浪费存储空间,在时间上效率高,适用于存储不大但速度要求高的场景。
-
varchar 特点可变长度,节省存储空间,在时间上效率低,适用于非CHAR的情况
char(5) : ‘abcdef’ ❌存不下(因为数量不够) ‘abcd ‘✔ 可以存储,并且占了5个字符,不够的用空格补齐!
varchar(5) ‘abcdef’❌存不下(因为不够) ‘abcd‘ ✔可以存储,并且只占了4个字符空间!
-
数值类型
-
tinyint 非常小的数据 存储需求1字节 有符值-27~27-1,无符值0~2^8-1
-
smallint 较小的数据 2字节 有符值-215~215-1,无符值0~2^16-1
-
mediumint 中等大小的数据 3字节 有符值-223~223-1,无符值0~2^24-1
-
int 标准整数 4字节 有符值-231~231-1,无符值0~2^32-1
⭐️int(2)和int(1) 的区别,int(1)中1的含义?
1,2跟位数有关,至少显示1位,跟数字长度无关,例如int(2)输进去9输出09;输进去10输出10;int(1)输进去6输出6,输进去10输出10;区别是位数左边0的个数。1代表至少要显示1位。2代表至少显示2位。存储大于显示位数的直接输出,小于显示位数的左边用0补。
而varchar(20)代表最多可以存储20
-
bigint 较大的整数 8字节 有符值-264~263-1,无符值0~2^64-1
-
float 单精度浮点数 4字节 ±1.1754351e-38
-
double 双精度浮点数
⭐ decima(m,n) m:总长度 n:小数位数
例子:要求值的范围 0~100,小数位之后一位,?
decima(4,1) 999.9 -
-
日期和时间类型
-
date YYYY-MM-DD日期格式
-
time Hh:mm:ss 时间格式
-
datetime YY-MM–DD hh:mm:ss
-
timestamp YYYYMMDDhhmmss格式表示的时间戳
-
year YYYY格式的年份值
DEFAULT CURRENT_TIMESTAMP 添加当前默认时间
-
-
NULL类型
- 理解为"没有值"、“未知值”
- 0和Null都表示假,1为真
- 不要用Null进行算术运算,结果仍为NULL
查看表
查看表的字段(2个方式)
//查看表结构//方式1
desc 表名;//方式2(拿到数据库真正建表的语句)
show create table 表名;// `反引号 -- 取消关键性
-- DEFAULT NULL 表示该字段的值可以为空
-- DEFAULT CHARSET=utf8mb4 字符集
-- COLLATE=utf8mb4_0900_ai_ci 字符排序
-- ENGINE=InnoDB (重要) 存储 引擎 规则CREATE TABLE `student` (`stu_name` varchar(10) DEFAULT NULL,`stu_age` tinyint DEFAULT NULL,`stu_birthday` datetime DEFAULT NULL,`stu_id` char(18) DEFAULT NULL,`stu_score` decimal(4,1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
🌟🌟 🌟修改表
表名修改
alter table 旧表名 rename as 新表名;
添加表字段⭐️⭐️⭐️
alter table 表名 add 新字段名 类型 属性;
//给xuesheng表添加字段和备注alter table xuesheng add stu_qq varchar(20) comment '这是学生的qq号';
删除表字段
alter table 表名 drop 字段名;
修改表字段(2个方式)
// 方式1
alter table 表名 modify 字段名 要修改的类型 要修改的属性
// 方式二 changealter table 表名 change 旧字段名 新字段名 要修改的类型 要修改的属性
覆盖式,
-- 1.一定的默认值
-- 2.如果已经存在具体数据--数据是可以做隐式转换
// 方式1
alter table 表名 modify 字段名 要修改的类型 要修改的属性e.g:将stu_name 类型从 varchar(10) 改为varchar(100)
alter table xuesheng modify stu_name varchar(100); -- 方式二 change
-- alter table 表名 change 旧字段名 新字段名 要修改的类型 要修改的属性
alter table xuesheng change stu_qq qq varchar(20) comment '学生qq号';
删除表
drop table 表名