MySQL基础命令入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL基础命令入门相关的知识,希望对你有一定的参考价值。


1 启动停止命令

1.1启动命令

1.1.1 单实例启动命令

/etc/init.d/mysqld start
mysqld_safe --defaults-file=/etc/my.cnf 2>&1 > /dev/null &

1.1.2 多实例启动命令

/data/3306/mysql start
mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &

1.2 停止命令

1.2.1 单实例停止命令

/etc/init.d/mysqld stop

1.2.2 多实例停止命令

/data/3306/mysql stop
mysqladmin -uroot -p123456 -S /data/3306/mysql.sock shutdown

1.2.3 强制停止的命令

killall mysqld
pkill mysqld
killall -9 mysqld
kill -9 PIDNUMBER

q  【注意】

1.        killall关闭,要直到出现mysqld: no process killd 表示操作完成

2.        强制关闭命令在生产情况下一般不使用

3.        尽量不要采用粗鲁野蛮的方式杀死数据库,生产高并发的环境可能会引起数据丢失

2 登入登出mysql命令

2.1登入命令

2.1.1 单实例登入命令


mysql   ==》刚装完数据库时,无需密码的登入命令
mysql -uroot    ==》刚装完数据库,无需密码的登入命令
mysql -uroot -p  ==》标准的命令行登入命令
mysql -uroot -p123456   ==》这种方法一般不使用,密码明文会泄漏密码


2.1.2 多实例的登入命令


mysql -S /data/3306/mysql.sock  ==》无密码的登入命令
mysql -uroot -p123456 -S /data/3306/mysql.sock  ==》带密码的登入命令


2.1.3 强制linux不记录敏感历史命令

[[email protected] ~]# HISTCONTROL=ignorespace

q  【注意】

若想永久生效只需加入/etc/profile中即可

2.2 登出命令

quit
exit
Ctrl+c

3 设置及修改root用户密码

3.1 设置密码方法

3.1.1 单实例设置密码的方式


mysqladmin -uroot password "123456"  ==》命令行操作
mysql> set password=password('123456');  ==》进入mysql操作


3.1.2 多实例设置密码的方式


mysqladmin -uroot -S /data/3306/mysql.sock password "123456" ==》命令行操作
mysql> set password=password("123456");  ==》进入mysql操作


3.2 修改密码的方式

3.2.1 单实例修改密码的方式


mysqladmin -uroot -p123456 password "3306"  ==》命令行操作
mysql> update mysql.user set password=password("123456") where user='root' and host="localhost";   ==》进入mysql操作

3.2.2 多实例修改密码的方式


mysqladmin -uroot -p123456 -S /data/3306/mysql.sock password "3306"  ==》命令行操作
mysql> update mysql.user set password=password("123456") where user='root' and host='localhost';   ==》进入mysql操作


3.3 找回丢失的数据库密码

3.3.1 单实例找回密码的方式

/etc/init.d/mysqld stop  ==》停止数据库
mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-table 2>&1 >/dev/null &  ==》绕过授权表
mysql   ==》登录mysql不需要密码
mysql> update mysql.user set password=password("123456") where user='root' and host='localhost';  ==》设置新的密码
mysql> flush privileges;  ==》刷新数据库的权限
mysql> quit  ==》退出数据库
/etc/init.d/mysqld start  ==》启动数据库
mysql -uroot -p123456  ==》重新登录即可


3.3.2 多实例找回密码的方式

/data/3306/mysql stop  ==》停止数据库
mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table 2>&1 >/dev/null &  ==》绕过授权表
mysql -S /data/3306/mysql.sock  ==》登入mysql
mysql> update mysql.user set password=password("3306") where user='root' and host='localhost';  ==》设置新的密码
mysql> flush privileges;  ==》刷新数据库的权限
mysql> quit   ==》退出数据库
/data/3306/mysql start  ==》启动数据库
mysql -uroot -p3306 -S /data/3306/mysql.sock  ==》重新登录即可


4 mysql库操作

4.1 显示数据库

mysql> show databases;   ==》显示所有数据库
mysql> help show;   ==》查看帮助方法


4.2 进入数据库

mysql> use mysql;
mysql> help use;

4.3 创建数据库

mysql> create database LZH;
mysql> help create database;  ==》查看帮助
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...
 
create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

4.4 删除数据库

mysql> drop database LZH;
mysql> help drop database;  ==》查看帮助
Syntax:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

4.5 查看当前连接的数据库

mysql> select database();

4.6 查看连接数据库包含的表信息

mysql> show tables;

4.7 查看建库的完整语句

mysql> show create database lzhG

4.8 删除系统多余账号

技术分享图片


mysql> drop user "root"@"::1";
mysql> drop user ""@"db02";
mysql> drop user "root"@"db02";
mysql> drop user ""@"localhost";

4.9 建立用户并赋予权限

4.9.1 creategrant配合法

mysql> create user 'lzh'@'localhost' identified by '123456';
mysql> grant all on oldboy.* to 'lzh'@’localhost’;

4.9.2 直接grant

mysql> grant all on oldboy.* to 'lzh'@'localhost' identified by '123456';

4.10 查看mysql的用户

mysql> select user from mysql.user;
mysql> select user,host from mysql.user;

5 mysql表操作

5.1 建表

 

mysql> create table test(
    -> id int(4) primary key AUTO_INCREMENT,
-> name char(20) NOT NULL   
-> )ENGINE=innodb default charset=gbk;
mysql> help create table;

5.2  mysql表的常用字段类型

5.2.1 数字类型

列类型

需要的存储量

TINYINT

1字节

INT

4字节

BIGINT

8字节

SMALLINT

2字节

MEDIUMINT

3字节

INTEGER

4字节

FLOAT

4字节

5.2.2 日期和时间类型

列类型

需要的存储量

DATE

3字节

TIMESTAMP

4字节

DATETINE

8字节

TINE

3字节

YEAR

1字节

5.2.3 字符串类型

列类型

需要的存储量

CHAR(M)

1=<M<=255字节

VARCHAR


BLOG,TEXT


5.2.4 总结

q  INT型:正常大小整数类型

q  CHAR型:定长字符串类型,当存储时,总是用空格填满右边到指定的长度

q  VARCHAR型:变长字符串类型

5.3 查表及建表

5.3.1 查看表结构

mysql> desc test;
+-------+----------+------+-----+---------+----------------+
| Field | Type     | Null | Key | Default | Extra          |
+-------+----------+------+-----+---------+----------------+
| id    | int(4)   | NO   | PRI | NULL    | auto_increment |
| name  | char(20) | NO   |     | NULL    |                |
+-------+----------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

5.3.2 给表增加字段

mysql> alter table test add dept char(20) after id; ==
》在某个字段之后加入


默认是在最后插入字段

5.3.3 查看建表语句

mysql> show create table testG
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.00 sec)
5.4 插入数据
mysql> insert into test values(1,'oldboy');
mysql> insert into test(name) values('oldgirl');
mysql> insert into test values(3,'zuma'),(4,'keke'),(5,'icna');

5.5 清空表

mysql> truncate table test;
mysql> delete from test;

5.6 为字段创建索引

5.6.1 创建普通索引

mysql> create index index_name on test(name);
mysql> alter table test add index index_name(name);

5.6.2 创建联合索引

mysql> alter table test add index index_name_dept(name,dept);

5.6.3 创建及删除主键索引

mysql> alter table test change id id int primary key auto_increment;  ==》创建
mysql> alter table test drop primary key;

5.6.4 根据前n个字符创建索引

mysql> alter table test add index index_name(name(8));

5.6.5 创建唯一索引

mysql> alter table test add unique index_name(name);

5.6.6 删除索引

mysql> alter table test drop index index_name;

5.6.7 查看索引

mysql> show index from testG

5.6.8 索引列的创建及生效条件

5.6.8.1 为什么不给所有的列都创建索引

  因为索引不但占用系统空间,而且在更新数据时还需要维护索引数据的,因此索引是把双刃剑,并不是越多越好,譬如数十到几百行的数据就不需要建立索引,插入更新频繁,读取比较少的索引需要建立索引。

5.6.8.2 在哪些列上创建索引,可以加快查询速度?

select user,host from mysql.usre where password=  索引一定要建在where后的条件列上,并且要尽量选择在唯一值多的大表上的列建立索引。

5.6.9 索引知识小结

q  索引类似书籍的目录,会加快查询的速度

q  要在表的列上创建索引

q  索引会加快查询速度,但是也会影响更新的速度,因为更新要维护索引数据

q  索引列并不是越多越好,要在频繁查询的表语句where后的条件列上创建索引

q  小表或重复值很多的列上可以不建立索引,要在大表以及重复值少的条件列上创建索引

q  多个联合索引有前缀生效特性

q  当字段前N个字符已经接近唯一时,可以对字段前N个字符创建索引

q  索引从工作方式区分,有主键、唯一、普通索引

q  索引类型会有BTREE(默认)和hash(适合做缓存(内存数据库))等

5.7 查询操作

5.7.1 查询表的所有内容

mysql> select * from test;
mysql> select * from oldboy.test;

5.7.2 查询前两行数据

mysql> select * from test limit 2;

5.7.3 从第N行开始查询,查询M

mysql> select * from test limit 1,2;
mysql> select * from test limit N,M;

5.7.4 按照固定条件查询

mysql> select * from test where id=1;
mysql> select * from test where name='kaka';

5.7.5 按照固定范围查找

mysql> select * from test where id=5 and name='kaka';
mysql> select * from test where id=1 or name='kaka';
mysql> select * from test where id>2 and id<5;

5.7.6 按照排序查找

mysql> select * from test order by id desc;  ==》按照逆序排序
mysql> select * from test order by id asc;  ==》按照正序排序  默认是正序


5.7.7 查询mysql版本、当前用户等

mysql> select version();
mysql> select user();
mysql> select now();  ==》查询时间
mysql> select curdate();  ==》查询时间
mysql> select curtime();  ==》获取当前的时间





以上是关于MySQL基础命令入门的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础入门学习13存储过程

通过命令连接 MySQL 服务器的基础方式(入门必看!!!)

全网最详细的新手入门Mysql命令和基础,小白必看!

linux中怎么查看mysql数据库版本

mysql的命令入门

MySQL基础入门学习14存储引擎