mysql - mysql 命令行的使用

1. Mysql 管理

  • 连接数据库
-- 连接本地数据库
mysql -u root -p
-- 连接远程数据库
mysql -h 192.168.0.105 -u root -p
-- 连接远程指定数据库并设置字符集
mysql -h 192.168.0.105 -u root -p --default-character-set=utf8 test

  • 修改root密码, 直接修改配置文件
[mysql]
root=root
password=root
  • 修改配置使数据库可以远程进行访问
# mysql 配置文件
/etc/mysql/my.cnf
# mariadb 配置文件地址
/etc/mysql/mariadb.conf.d/50-server.cnf
# 修改文件内容 bind-address 127.0.0.1
bind-address 0.0.0.0

2. 用户管理

  • 创建用户并授权在本地访问指定的数据库
-- 创建用户
create user 'gogs'@'localhost' identified by '123456';
-- 用户授权
grant all privileges on gogs.* to 'gogs'@'localhost';
-- 刷新授权
flush privileges;
  • 创建用户并授权可以远程访问任何数据库
-- 新增用户并授权可以通过远程访问任何数据库
grant all privileges on *.* to 'leon'@'%' identified by 'leon' with grant option;
-- 刷新授权
flush privileges;
  • 查看当前用户
    select user();

3. 操作数据库

  • 查看数据库
    show databases;
  • 查看当前数据库
    select database();
  • 切换数据库
    use dbname;
  • 创建数据库
    create database dbname charset utf8;
  • 删除数据库
    drop database dbname;

4. 操作数据表

  • 查看当前数据库的数据表
    show tables;
  • 查看指定数据库的数据表
    show tables from dbname
  • 创建数据表
CREATE TABLE table_name (
  column_name column_attribute
) table_options;

CREATE TABLE IF NOT EXISTS table_name (
  column_name column_attribute
) table_options;
CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` char(32) NOT  NULL,
  `sex` tinyint(3) unsigned NOT NULL DEFAULT '1',
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `uq_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 删除数据表
    DROP TABLE table_name;

  • 添加字段
    ALTER TABLE table_name ADD COLUMN column_name column_attribute [FIRST | AFTER column_name];

-- 在user表中created_at后面添加update_at字段
ALTER TABLE `user` ADD COLUMN updated_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP AFTER created_at;
-- 在user表的最前面添加user_id字段
ALTER TABLE `user` ADD COLUMN user_id int unsigned NOT NULL FIRST;
  • 删除字段
    ALTER TABLE table_name DROP COLUMN column_name;
-- 删除user表中的updated_at字段 
ALTER TABLE `user` DROP COLUMN `updated_at`;
  • 修改字段
    ALTER TABLE table_name MODIFY COLUMN column_name column_attribute;
-- 修改user表中的created_at字段
ALTER TABLE `user` MODIFY COLUMN `created_at` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP(0);

5. 操作数据

  • 插入数据
INSERT INTO table_name (field1, field2, ... fieldN) VALUES (value1, value2, ...valueN), 
  (value1, value2, ...valueN)
-- 批量插入两条数据
INSERT INTO `user` (username, password, created_at) VALUES ('leon', 'secret', '2019-11-10 23:00:00'), ('leon1', 'secret1', '2019-11-10 23:00:00');
  • 查询数据
    SELECT column1, column2, ...columnN FROM table table_name [WHERE] [LIMIT] [ORDER BY]
-- 查询user表中的所有数据
SELECT * FROM `user`;
-- 查询user表中所有的username字段
SELECT username FROM `user`;
-- 查询user表中满足sex为1 且 age > 30, 按照ID降序排序的最前面10条记录
SELECT * FROM `user` WHERE sex=1 AND age>30 ORDER BY `id` DESC LIMIT 10;
-- 查询user表中 "username 为leon 且status为1" 或者 "usename 为demo且status为0" 的记录。
SELECT * FROM `user` WHERE (username='leon' AND status=1) OR (username='demo' AND status=0);
  • 修改数据
    UPDATE table_name SET field1=value1, field2=value2, fieldN=valueN [WHERE][LIMIT]
-- 将user表中username为demo的记录,将status更新为1
UPDATE `user` SET status=1 WHERE username='demo';
-- 将user表中所有stauts为1的前10条记录更新为0
UPDATE `user` SET status=0 WHERE status=1 LIMIT 10;
  • 删除数据
    DELETE FROM table_name [WHERE] [LIMIT]
-- 删除user表中status为0的记录`
DELETE FROM `user` WHERE status=0;
-- 删除user表中status为0的前10条记录
DELETE FROM `user` WHERE status=0 LIMIT 10;

6. 事务操作

事务是由一组sql语句组成的逻辑处理单元,要么全部执行成功,要么全部执行不成功。

  • BEGIN: 开启一个事务
  • COMMIT: 提交一个事务
  • ROLLBACK: 回滚一个事务
  • SET TRANSACTION: 设置事务隔离级别
BEGIN; # 开启事务
UPDATE `account` SET balance=balance-100 WHERE name='转出方';
UPDATE `account` SET balance=balance+100 WHERE name='转入方';
COMMIT; # 提交事务

7. mysqladmin 管理数据库

  • 创建数据库
    mysqladmin -u root -p create testdatabase
  • 删除数据库
    mysqladmin -u root -p drop testdatabase
  • 修改密码
    mysqladmin -u root -p password 'new password'

8. mysqldump 备份数据库

  • 备份数据库
-- 备份数据库test到文件backupfile.sql中
mysqldump -u root -p test > backupfile.sql
  • 恢复数据库
-- 创建数据库test
mysqladmin -u root -p create test
-- 读入数据库备份
mysql -u root -p test < backupfile.sql

9. 常用mysql 命令

  • help 获取帮助信息
  • status 获取服务器信息
  • use dbname 切换数据库
  • source file.sql 读取sql命令文件
  • system command 执行shell命令
  • exit 退出msyql命令行
posted @ 2024-05-09 17:03  箫笛  阅读(8)  评论(0编辑  收藏  举报