Mysql常用武功招式
数据库常用招式
1. 查看当前使用的数据库
select database(); -- 返回当前使用的数据库名
2. 查看数据库
show databases; -- 查看所有数据库
show databases like "数据库名"; -- 查看匹配模式的数据库(支持%通配符)
3. 清空屏幕(命令行客户端)
system cls; -- Windows 系统
system clear; -- Linux/macOS 系统
4. 创建数据库
create database 数据库名; -- 直接创建数据库(存在则报错)
create database [if not exists] 数据库名 [character set 字符集]; -- 安全创建并可选指定字符集
5. 查看数据库创建语句
show create database 数据库名; -- 显示数据库的完整创建语句
6. 修改数据库
alter database 数据库名 [character set 字符集]; -- 可选修改字符集
7. 删除数据库
drop database 数据库名; -- 直接删除(不存在则报错)
drop database [if exists] 数据库名; -- 安全删除(不存在不报错)
8. 数据库备份与恢复
mysqldump -u用户名 -p密码 数据库名 > 备份文件路径; -- 备份数据库到SQL文件
mysql -u用户名 -p密码 数据库名 < 备份文件路径; -- 从SQL文件恢复数据库
关键点说明:
-
中文替换:直接使用
数据库名
、用户名
、密码
等中文描述 -
可选参数:用
[]
标注可省略的参数,如[if not exists]
-
字符集建议:优先使用
utf8mb4
(支持 emoji 等特殊字符) -
备份命令:
- 执行时
-p
后不直接写密码(更安全),会提示输入 - 示例:
mysqldump -uroot -p 数据库名 > /data/backup.sql
- 执行时
-
需要示例时,可以将
数据库名
替换为testdb
、mydata
等实际名称演示。
数据类型大杂烩
数据表是数据库的重要组成部分,每一个数据库都是由若干个数据表组成的。比如,在电脑中一个文件夹有若干excel文件。这里的文件夹就相当于数据库,excel文件就相当于数据表。
MySQL 的数据类型有大概可以分为 5 种,分别是整数类型
、浮点数类型
、日期和时间类型
、字符串类型
、二进制类型
等。
字符串和整数类型
在 MySQL 中,布尔类型被称为 BOOLEAN
或 BOOL
类型。BOOLEAN
类型用于存储布尔值,即 TRUE
(真)或 FALSE
(假)。
MySQL 中的布尔类型可以有以下几种表示方式:
- 整数类型:布尔类型可以表示为整数类型,其中
0
表示FALSE
,非零整数表示TRUE
。常见的表示TRUE
的整数值为1
。 - 字符串类型:布尔类型也可以表示为字符串类型,其中
'0'
表示FALSE
,而'1'
表示TRUE
。这种表示方式更贴近人类可读的布尔值。
需要注意的是,尽管 MySQL 支持布尔类型的不同表示方式,但它并没有专门的存储布尔值的数据类型。在实际使用中,你可以选择使用 TINYINT(1)
或 VARCHAR(1)
等其他数据类型来存储布尔值,但约定使用 0
和 1
或 '0'
和 '1'
来表示布尔值。
小数和日期类型
二进制类型
BIT数据类型可以用来存储布尔值。
CREATE TABLE my_table (is_active BIT(1)
);
INSERT INTO my_table (is_active) VALUES (1); -- 存储真值
INSERT INTO my_table (is_active) VALUES (0); -- 存储假值
数据表常用招式
创建数据表
-- 语法
CREATE TABLE tab_name(field1 type [约束条件],field2 type,...fieldn type -- 一定不要加逗号,否则报错!
)[character set utf8];
创建一个学生表
-- 创建一个 student的表
create table student(name varchar(32), -- 姓名 32个字符gender bit, -- 性别 1bit 0/1age int, -- 年龄birth date, -- 日期 默认是 YYYY-MM-DDgpa decimal(4,2) -- 绩点 xx.xx 总共四位 最大 99.99 小数点占后两位 (位数,小数点位数)
);
-- 如果不设定 character set 默认和数据库的 character set 一样
语法注意
- 必须在使用
USE 数据库名;
切换到目标数据库后执行,否则会显示默认数据库(如mysql
)的表。 - 正确语法:
SHOW TABLES; -- 查看当前数据库的表
- 若要查看指定数据库的表,需显式指定:
SHOW TABLES FROM 数据库名; -- 例如:SHOW TABLES FROM student_db;
约束
约束是一种限制,它通过限制表中的数据,来确保数据的完整性和唯一性。使用约束来限定表中的数据很多情况下是很有必要的。在 MySQL 中,约束是指对表中数据的一种约束,能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的正确性和有效性。例如,在数据表中存放年龄的值时,如果存入 200、300 这些无效的值就毫无意义了。因此,使用约束来限定表中的数据范围是很有必要的。
添加记录:
INSERT <表名> 字段1,...字段n VALUES (值1,...值n) ;
非空约束
非空约束用来约束表中的字段不能为空。比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约束。
创建表时可以使用NOT NULL
关键字设置非空约束
CREATE TABLE user(name VARCHAR(22),age int
);
insert user (name) values ("宇宙第一小趴菜");
CREATE TABLE user(name VARCHAR(22),age int NOT NULL
);insert user (name) values ("宇宙第一小趴菜");
Field ‘age’ doesn’t have a default value:age这个字段缺少默认值
insert user (name,age) values ("宇宙第一小趴菜",18);
唯一约束
唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为name字段加上唯一性约束后,每条记录的name值都是唯一的,不能出现重复的情况。
创建表时可以使用UNIQUE
关键字设置非空约束
例如,在用户信息表中,要避免表中的用户名重名,就可以把用户名列设置为唯一约束。
CREATE TABLE user(name VARCHAR(22),age int
);
insert user (name) values ("宇宙第一小趴菜");
insert user (name) values ("宇宙第一小趴菜");
select * from user;
删除数据表
drop table if exists user; -- 如果存在这个user表就删除
CREATE TABLE user(name VARCHAR(22) UNIQUE,age int
);
insert user (name) values ("宇宙第一小趴菜");
insert user (name) values ("宇宙第一小趴菜");
select * from user;
默认值约束
默认值约束用来约束当数据表中某个字段不输入值时,自动为其添加一个已经设置好的值。
创建表时可以使用DEFAULT
关键字设置默认值约束
CREATE TABLE user(name VARCHAR(22),gender bit
);
insert user (name) values ("宇宙第一小趴菜");
select * from user;
CREATE TABLE user(name VARCHAR(22),gender varchar(2) default "保密"
);
insert user (name) values ("宇宙第一小趴菜");
select * from user;
主键约束
主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。
CREATE TABLE user(name VARCHAR(22),age int,gender varchar(1) default "男"
);
insert user (name,age) values ("李飞",18);
insert user (name,age) values ("李白",28);
insert user (name,age) values ("杜甫",23);
insert user (name,age) values ("李飞",18);
select * from user;
-- 没有唯一能标识该表中的每条记录的字段值
CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20)
);
insert user (name) values ("宇宙第一小趴菜");
select * from user;
- 一张表中最多只能有一个主键
- 主键类型不一定必须是整型
- 表中如果没有设置主键,默认设置NOT NULL和UNIQUE的字段为主键;此外,表中如果有多个NOT NULL和UNIQUE的字段,则按顺序将第一个设置NOT NULL和UNIQUE的字段设为主键。所以主键一定是非空且唯一,但非空且唯一的字段不一定是主键。
最终学生表
create table student
(sid int PRIMARY KEY auto_increment, -- 主键约束name varchar(32) not null, -- 非空约束gender bit default 1, -- 默认约束age int not null, -- 非空约束birth date not null, -- 非空约束gpa decimal(4, 2) not null -- 非空约束
)character set utf8mb4;
查看表
show tables -- 查看当前数据库中的所有的表
查看表结构
desc 表名; -- 查看表结构,等同于show columns from tab_name
查看创建数据表的语句
show create table tab_name -- 查看当前数据库表建表语句
删除表
DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
修该表所用的字符集
ALTER TABLE 表名 [DEFAULT] CHARACTER SET <字符集名>
增加列(字段)
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件][first|after 字段名];
增加多个字段
alter table studentadd age int not null,add gender varchar(2) not null default 1,add birth date not null;
删除某字段
ALTER TABLE <表名> DROP <字段名>;
修改某字段类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型> [完整性约束条件][first|after 字段名];
修改某字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型> [完整性约束条件][first|after 字段名];
调整添加字段位置
ALTER TABLE <表名> MODIFY <字段名> <数据类型> [完整性约束条件][first|after 字段名];