数据库11:MySQL 库的操作、库的说明与表的操作、表的说明
数据库操作库的语句
创建库
注意:库名不要有大写字母
create database a1;
create schema a2;
创建新的数据库,并修改默认的字符集
create database a3 character set utf8mb4;
创建新的数据库,并修改默认的字符集和校对(排序)规则
create database a4 charset utf8 collate utf8_general_mysql500_ci;
查看库
查看是否已经创建好
show databases;
查看创建的库的语句信息
show create database a4;
过滤查看指定的数据库信息
show databases like '%65535%';
数据库安装完毕后,默认的数据库说明:
数据库名 | 说明 |
---|---|
mysql | 系统核心数据库,存储用户、权限、系统元数据等(权限、账户、安全) |
information_schema | 虚拟数据库,提供关于所有数据库结构的元信息(结构元数据,虚拟只读) |
performance_schema | 性能监控数据库,用于收集数据库内部运行统计 (性能监控,系统事件) |
sys | 提供易读视图和性能分析工具的辅助数据库 (简化视图,性能分析) |
mysql:系统权限控制、认证机制、插件、密码策略、账户锁定状态等都在此数据库中管理
表名 | 说明 |
---|---|
user | 存储所有 MySQL 用户的基本信息和权限 |
db | 用户对特定数据库的权限 |
tables_priv | 用户对具体表的权限 |
columns_priv | 用户对具体列的权限 |
procs_priv | 存储过程、函数权限 |
global_grants | MySQL 8 引入的全局权限管理 |
role_edges | 角色与角色之间的继承关系 |
default_roles | 用户默认角色 |
time_zone* | 与时区相关的表(如 time_zone , time_zone_name 等) |
information_schema:一个只读的虚拟数据库,不占用磁盘空间,提供关于所有数据库、表、列、索引、视图、触发器等的元信息视图
performance_schema:用于性能分析和监控,包括:SQL 执行时间,资源消耗,等待事件(如锁),内存/IO 使用情况
sys:自 MySQL 5.7 引入,提供了大量 简化的视图和分析工具,帮助 DBA 快速理解系统状态
select * from sys.memory_by_user_by_current_bytes;
select * from sys.user_summary;
删除库
注意:最好别用,也别会用
drop database a3;
drop database a4;
修改库
修改a1库的字符集为utf8mb4
alter database a1 charset utf8mb4;
修改a2库的字符集为utf8,校对(排序)规则为utf8_general_mysql500_ci
alter database a2 charset utf8 collate utf8_general_mysql500_ci;
切换库
进入a1库
use a1;
查看当前所在数据库
select database();
数据库操作表的语句
创建表
语法格式:create table <表名>(
<字段名1><类型1> 约束 属性,
.................
<字段名n><类型n> 约束 属性);
创建一个student表,字段id是主键,类型为int,不允许为空,备注为学号,字段name类型为varchar(45),最多允许输入45个字符,不允许为空,备注为姓名,字段age类型为无符号tinyint,不允许为空,备注为年龄,字段gender类型为枚举(M F N),不允许为空,默认为N,备注为性别
使用的存储引擎为InnoDB,默认字符集为utf8mb4.排序规则为utf8mb4_0900_ai_ci,对student表备注为学生表
create table `student` (
`id` int not null comment '学号',
`name` varchar(45) not null comment '姓名',
`age` tinyint unsigned not null comment '年龄',
`gender` enum('M','F','N') not null default 'N' comment '性别',
primary key (`id`)
) engine=InnoDB default charset=utf8mb4 collate=utf8mb4_0900_ai_ci comment='学生表';
注意:单引号 '...'
是用来包裹字符串常量的 , 反引号 `...`
是用来包裹表名和字段名的
修改表
修改表的名字
rename table stu to stu1;
或
alter table stu1 rename stu2;
修改数据表编码信息
alter table stu2 charset utf8mb4;
修改表结构命令语法:
在数据表中添加新的表结构字段
alter table <表名> add column <字段名称> <数据类型> <约束与属性> [comment '注释'] [选项参数];
1.追加字段列-单列操作
alter table stu2 add column telno char(11) not null unique key comment '手机号';
2.插入字段列-单列操作
alter table stu2 add column wechat varchar(64) not null unique key comment '微信号' after age;
3.插入首行列-单列操作
alter table stu2 add column sid int not null unique key comment '微信号' first;
4.查看表结构
desc stu2;
在数据表中删除已有表结构字段
alter table <表名> drop column <字段名称>;
alter table stu2 drop column sid;
在数据表中修改已有表结构字段(数据结构 约束 属性)
注意:会导致锁表
alter table <表名> change column <旧字段名称> <新字段名称> <数据类型> <约束与属性> [comment '注释'] [选项参数];
1.修改表结构数据类型(原来有的必须加上)
alter table stu2 modify name varchar(64);
2.修改已有表结构字段列,最后带有保持原有配置的属性信息,否则其他属性信息会被还原为默认
alter table stu2 modify name varchar(64) not null comment '学生名';
3.修改已有表结构字段列(修改表结构字段名称)
alter table stu2 change column name stuname varchar(64) not null comment '学生名';
在数据表中删除已有表结构字段(字段名称 数据类型 约束 属性)
4.查看表结构
alter table <表名> drop index <字段名称>
删除表
数据表删除命令语法: drop table <表名>;
删除表stu(全部删除)
drop table stu;
删除表class中的内容,但是保留定义的表结构信息
truncate table t1;
或
delete from t2;
查询表
显示当前库有哪些表
show tables;
显示表的表项
desc student;
或
describe student;
查询表创建时的语句
show create table student;