1. 程式人生 > >MySQL基礎命令入門

MySQL基礎命令入門

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不記錄敏感歷史命令

[root@db01 ~]# 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 lzh\G

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 test\G
*************************** 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 test\G

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基礎命令入門