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 create和grant配合法
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基础命令入门的主要内容,如果未能解决你的问题,请参考以下文章