最近更新时间:2023.6.15
最早更新时间:2023.6.5
- 大多命令需以
;
作为结尾 - (以下
'localhost'
都可以替换成实际IP地址) - (``和’'的区别应该不大)
- 用户管理
- 修改密码:
ALTER USER 'user_name'@'localhost' IDENTIFIED BY 'New-Password';
- 创建新用户:
create user 'New-Username'@'localhost' identified by 'New-Password';
@后面的参数是指可以登录的IP地址:如果是"%",则表示可以在任意IP登录。(注意MySQL很狗的一点是接不同的@就算是不同的用户,所以需要不同的授权才行,所以别用*
了没用的) - 将某一数据库的所有权力赋给某一用户:
grant all privileges on database_name.* to 'user_name'@'localhost';
flush privileges;
- 查看指定用户的权限:
SHOW GRANTS FOR 'user_name'@'localhost';
- 修改密码:
- 查看数据库:
show databases;
- 创建新数据库:
create DATABASE New-DatabaseName;
- 转换数据库环境:
use database_name
(也可以在进入MySQL命令行环境时用-p
指定) - 查看数据库中所有表:
show tables;
- 创建表:(我后来发现如果用Flask的话直接用Python语言创建也挺好的,这个可以查看我写的另一篇博文:在云服务器上安装MySQL (MariaDB) 数据库并与Python连接和互动)
- 示例
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `phone_number` varchar(255) COLLATE utf8_bin NOT NULL, `password` varchar(255) COLLATE utf8_bin NOT NULL, `email` varchar(255) COLLATE utf8_bin, `memo` varchar(255) COLLATE utf8_bin, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1 ;
- 约束
not null
:不能为空auto_increment
:会在插入对应样本时自动递增对应的值,1,2,3,…这样下去default
:对每个样本,给该列一个默认值- (
timestamp
)default current_timestamp
- (
- 属性
int()
varchar()
text
timestamp
- 布尔类型:MySQL没有官方的布尔类型,用
TINYINT(1)
就行。举例:
alter table
Papersadd column
is_legalAITINYINT(1) default 0;
1
- 修改表
- 增加列
alter table `users` add column `nickname` varchar(20) ;
- 查询表
- 查询全部内容:
select * from 表名
limit
限制返回行数:SELECT * FROM table_name LIMIT 10;
(返回表中前10行:基于表中数据的物理存储顺序的)- 查询最后10条数据:
SELECT * FROM table_name ORDER BY id DESC LIMIT 10;
(id
是一个自增的主键,也可以替换成其他顺序递增的列) where
条件查询
SELECT * FROM Papers WHERE LOWER(title) = LOWER('这是一个示例标题')
- 查询一个表中的记录数:
SELECT COUNT(*) FROM table_name;
请注意,COUNT(*)
函数会计算表中的所有记录,包括那些值为NULL的记录。如果你只想要计算某个特定列的非NULL值的数量,你可以使用COUNT(column_name)
,其中column_name
是你想要计算的列的名称。 distinct
去重
SELECT DISTINCT 列名 FROM your_table;
- 将查询内容创建新表:
create table new_table as 查询语句
- 查询全部内容:
delete
(不可逆)
删除表中的所有数据(但不删除表本身):DELETE FROM table_name;
truncate
(不可逆):你想要删除表中的所有数据,并且重置所有的自增字段
TRUNCATE TABLE table_name;
- SQL函数
lower()
REGEXP
replace(列名,被替换的字符串,替换后的字符串)
- 常见报错信息
ERROR 1054 (42S22): Unknown column '列名' in 'field list'
:在尝试更新一个表中不存在的列
- 本文撰写过程中使用的其他参考资料
- MySQL创建数据库_mysql创建root_Oliver9887的博客-CSDN博客
- MySQL长文本存储类型 - 简书
- MySQL :: MySQL 8.0 Reference Manual :: 11.2.5 Automatic Initialization and Updating for TIMESTAMP and DATETIME
- Mysql default CURRENT_TIMESTAMP & on update CURRENT_TIMESTAMP区别_走向自由的博客-CSDN博客
- MySQL插入数据自动生成时间 - 简书
- mysql table 中增加列的SQL语句_sql新增一列_猎人在吃肉的博客-CSDN博客
- 在MySQL中用root用户创建新的用户并为之授予权限_mysql root_微步_ym的博客-CSDN博客
- MYSQL中的COLLATE_collate mysql_言慢行善的博客-CSDN博客
- 【MySQL】命令行遇到 ‘> 而无法结束语句编辑的解决方案_mysql怎么结束语句_星拱北辰的博客-CSDN博客:解决方案是
'\c
- mysql基础 create table 在指定数据库创建表 - 墨天轮