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