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 表名
 
