MySql常用命令

之前都是用微软的SQL Server,有图形界面SSMS,第一次接触MySql命令行,所以进行学习记录。版本为MySQL Community Server 8.0.12。所有在mysql环境中的命令,都要以分号结束。
cd命令:切换文件目录;

>cd d:\Tools\mysql-8.0.12-winx64\bin
MySql服务相关

将mysql注册为系统服务,好处是每次重启电脑自动启动:

D:\Tools\mysql-8.0.12-winx64\bin>mysqld -install

卸载服务:

D:\Tools\mysql-8.0.12-winx64\bin>mysqld -remove

启动MySql服务:

D:\Tools\mysql-8.0.12-winx64\bin>net start mysql

关闭MySql服务:

D:\Tools\mysql-8.0.12-winx64\bin>net stop mysql
连接MySql

连接本机,回车后输入密码:

D:\Tools\mysql-8.0.12-winx64\bin>mysql -u root -p
Enter password:******

连接到远程主机的MySql,需要通过-h命令确定要远程主机的IP:

D:\Tools\mysql-8.0.12-winx64\bin>mysql -h 192.168.1.51 -u root -p
Enter password:******

退出MySql:

mysql> quit;
修改密码

方式一:
命令格式:mysqladmin -u用户名 -p旧密码 password 新密码
注意:-u和用户名之间可以有一个空格,但-p和旧密码之间必须没有空格(我的环境下,有空格会出现mysqladmin: Unknown command: '111111'错误),而且mysqladmin命令需在mysql\bin目录执行。

D:\Tools\mysql-8.0.12-winx64\bin>mysqladmin -uroot -p222222 password 111111

方法二:
这种方法需要先登陆到MySql:

mysql> alter user root@localhost identified by '111111';

权限相关

在本版本中,直接通过grant创建用户并授权会失败:

mysql> grant select on testdb.* to 'aa'@'localhost';
ERROR 1410 (42000): You are not allowed to create a user with GRANT

但可以先创建用户,然后再授予权限:
创建新用户:
命令:create user 用户名@‘访问主机’ identified by ‘密码’;
访问主机的引号可以去掉,用户名不能加引号(否则出错:ERROR 1396 (HY000): Operation CREATE USER failed for 'test'@'localhost')。

mysql> create user test@'localhost' identified by '111111';

授权命令:grant 权限 on 数据库名.表名 to 用户名@服务名;
授予test用户在localhost服务器上操作的权限,用逗号分隔:

mysql> grant select,insert,update,delete,create,drop,alter on testdb.* to test@localhost;

testdb.*中*代表testdb数据库中所有的表,同样可以把testdb换为*,则表示所有数据库。如果要授予所有权限可以这样:

mysql> grant all privileges on testdb.* to test@localhost;

查看拥有的权限:

mysql> show grants for test@localhost;

如果至少要查看自己拥有的权限,直接show grants;
撤销权限命令:revoke 权限 on 数据库名.表名 from 用户名@服务名;

mysql> revoke all privileges on testdb.* from test@localhost;

数据库操作

创建数据库,命令:create database 数据库名;

mysql> create database testdb;

显示数据库

mysql> show databases;

删除数据库

mysql> drop database testdb;

当直接删除一个不存在的数据库会发生错误,可以通过判断是否存在再进行删除:

mysql> drop database if exists testdb;

选择连接数据库
mysql登陆后默认选择的是mysql数据库,可以通过use命令切换:

mysql> use testdb;

显示当前选择的数据库

mysql> select database();

select version();显示MySql的版本、select now();显示当前时间、select current_date;当前日期、select year(current_date);当前年、select month(current_date);当前月、select day(current_date);当前日,不同数据库T-Sql大同小异。

拼接字符串
mysql> select concat('a',' ','bbbb');

数据表操作

create table
mysql>  create table Teachers(
    -> Id int not null auto_increment primary key,
    -> Name nvarchar(64) not null default '',
    -> Sex int not null default 0,
    -> CreateTime datetime not null default now());
mysql>  create table Students(
    -> Id int not null auto_increment,
    -> Name nvarchar(64) not null default '',
    -> Sex int not null default 0,
    -> CreateTime datetime not null default now(),
    -> TeacherId int not null,
    -> primary key(Id),  # 创建主键
    -> foreign key(TeacherId) references Teachers(Id) on delete cascade);
    # 创建外键,把外键TeacherId关联到Teachers表的Id字段,并进行级联删除
insert

mysql中获取当前时间的函数now(),不是getdate()。

mysql> insert into students(id,name,sex,grade,createtime) values(1,'李斯',1,3,now());
select

查询所有数据:

mysql> select id,name,sex,grade,createtime from students;

mysql中没有top()函数,但可以通过limit确定要查询的数据范围:

mysql> select id,name,sex,grade,createtime from students order by id limit 0,2;

limit 0,2意思是从第0条开始,查询2条记录,一般用于分页查询。

update

修改数据同样使用update关键字:

mysql> update students set name='吕不韦' where id>1 order by id limit 1;

修改id大于1并且按id升序排序的第一行记录的name为’吕不韦’。

delete
mysql> delete from students where id=1 order by createtime desc limit 1;
alter table

增加字段score,并指定类型为int默认值为0:

mysql> alter table students add score int default '0';

删除字段score:

mysql> alter table students drop score;

增加索引:

mysql> alter table students  add index idx_name(Id);

可以创建多个属性的联合索引,用逗号分隔。
删除索引:

mysql> alter table students drop index idx_name;

加主键约束:

mysql> alter table students add primary key(id);

给主键增加自增属性(必须是主键):

mysql> alter table students modify id int unsigned auto_increment;

删除自增属性:

mysql> alter table students modify id int;

删除主键约束(必须先删除自增属性):

mysql> alter table students drop primary key;

加唯一性约束:

mysql> alter table students add unique uk_name(name);
修改表名
mysql> rename table students to student;

备份数据库

备份数据库需要执行mysqldump.exe程序,所以需要再bin目录下执行,而不是再mysql服务中执行。

导出数据库脚本

命令:mysqldump -u 用户名 -p 数据库名 > 导出文件名

D:\Tools\mysql-8.0.12-winx64\bin>mysqldump -u root -p testdb > testdb.sql
导出表

命令:mysqldump -u 用户名 -p 数据库名 表名 > 导出文件名

D:\Tools\mysql-8.0.12-winx64\bin>mysqldump -u root -p testdb students > student.sql
导出数据库结构

命名:mysqldump -u 用户名 -p -d 数据库名 > 导出文件名
-d表示不包含数据

D:\Tools\mysql-8.0.12-winx64\bin>mysqldump -u root -p -d testdb > testdb.sql
备份数据库

命令:mysqldump -u 用户名 -p --opt 数据库名 > 备份文件名

D:\Tools\mysql-8.0.12-winx64\bin>mysqldump -u root -p --opt testdb > testdb_back
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值