mysql版本:針對mysql-5.6.36 版本 mysql
目錄 1.1 經常使用命令-查看 2 1.2 登陸mysql 2 1.2.1 修改密碼 2 1.2.2 忘記密碼-怎麼辦 3 1.3 受權grant 3 1.3.1 grant 3 1.4 好用功能、快捷鍵 4 1.4.1 mysql客戶端接口自帶功能 4 1.5 增刪改查-數據庫SQL命令詳解 5 1.5.1 數據庫 5 1.5.2 表-table 5 1.5.3 插入、更新數據 7 1.5.4 查看數據-select 8 1.6 複雜查詢 8 1.6.1 ORDER BY子句 8 1.6.2 LIMIT子句 8 1.6.3 子查詢 9 1.6.4 鏈接查詢 9
# 查看數據庫 mysql> show databases; show databases like '%pres%'; #模糊查詢 # 查看錶 mysql> use xzy mysql> show tables; #查看權限 show grants for oldboy@'10.0.0.%'; # 查看列 mysql> use xzy mysql> desc test;
常見的特定於客戶機的鏈接選項
-u <user_name>或--host=<user_name>
-p <password>
-h <host_name>或--host=<host_name>
--protocol=<protocol_name>
-P <port_number> 或--port=<port_number>
-S <socket_name> 或--socket=<socket_name>
[root@db02 ~]# mysqladmin -uroot -p123 password 123456 [root@db02 ~]# mysql -uroot -p123456 mysql>
#開啓mysql (跳過受權表) #--skip-grant-tables 跳過受權表 --skip-networking禁止網絡登陸-即本地登陸 /application/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking & #進入MySQL修改mysql.user表的內容 mysql #直接登陸(無需密碼) #修改mysql.user表內容 mysql> update mysql.user set password=PASSWORD('666666') where user='root' and host='localhost'; mysql> flush privileges; #quit 退出便可用新密碼666666登陸 注意:5.7版本的不一樣 update mysql.user set authentication_string=PASSWORD('123456') where user='sys' and host='localhost' flush privileges;
格式 grant 權限 on 權限範圍(對象) to 用戶 identified by ''; 權限(角色): select、update、delete、insert、drop、create ALL 權限範圍: *.* 全部數據庫對象 oldboy.* oldboy單庫下全部對象 oldboy.test 單表級別 用戶: repl@localhost repl@'10.0.0.53' repl@'10.0.0.%' repl@'10.0.0.5%' ----- 要求: 1、用戶只能經過10網段訪問,用戶名爲oldboy,密碼爲123 2、只能對oldboy數據庫下的對象進行增insert create、改update、查select #建立 grant select,insert,update,create on oldboy.* to oldboy@'10.0.0.%' identified by '123'; #查看權限 show grants for oldboy@'10.0.0.%'; #收回權限 revoke drop on oldboy.* from 'oldboy'@'10.0.0.%'; #刪除用戶 drop user oldboy@'10.0.0.%' 注意: 建立的權限信息,不在/data/下的數據庫名目錄下
1、\h 或 help 或 ? 獲取幫助 2、\G 格式化輸出(行轉列) 三、\T 或 tee 記錄操做日誌 tee /tmp/mysql.log 四、\c 或 CTRL+c 退出mysql 5、\s 或 status 查看數據庫狀態信息 六、\. 或 source mysql> source /tmp/world.sql 7、\u 或use use world show databases 看當前全部數據庫的名字 show tables 查看當前use到的數據庫全部的表 show tables from world 查看目標數據庫下的表 八、 ctrl +L 清屏
#建立庫 mysql> create database xzy character set utf8; #或縮寫 charset utf8 (推薦) mysql> show create database xzy; +----------+--------------------------------------------------------------+ | Database | Create Database | +----------+--------------------------------------------------------------+ | xzy | CREATE DATABASE `xzy` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+--------------------------------------------------------------+ #修改庫 mysql> alter database xzy charset gbk; #刪除庫 mysql> drop database xzy;
# 幫助: mysql> help create table; # 查看列 mysql> use xzy mysql> desc test; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | char(30) | YES | | NULL | | +-------+----------+------+-----+---------+-------+
# 建立表 mysql> use xzy mysql> create table test(id int,name char(30)); # 完整: CREATE TABLE `test` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=UTF8; # 修改表名(兩種方法) mysql> rename table test to test1; 或 mysql> alter table test1 rename to test; # 添加列結構 mysql> alter table people add addr char(40) NOT NULL; #默認添加到最後 # 指定添加年齡列到name列後面的位置,示例以下: alter table people add age int(4) after name; # 經過下面的命令在第一列添加qq字段。 alter table test add telnum int first; # 同時添加多個列定義: alter table people add id int first ,add sex char(4) after name ; # 刪除表結構: alter table people drop sex; # 修改表定義 alter table people modify name char(20); # 修改列名: alter table people change name people_name char(30) ;
# insert語句: create table test (id int,name varchar(20)); #建立表 test insert into test values(1,'test'); #插入單個 insert into test values(2,'yougboy'),(3,'youggilr'); #插入多個 insert into test(name) values('xiaoming'); #插入指定列 select * from test; #查看 # 建立如出一轍的表 ------------------------------------ create table test like oldboy; insert into oldboy select * from oldboy; ------------------------------------ # 修改(更新)數據 update update(必定要有where條件) update test set name='oldboy1' WHERE id = 1; # 刪除數據 delete delete(必定要有where條件) delete from oldboy where id=1;
select user,password ,host from mysql.user where user='sys'; select user,password ,host from mysql.user where user like 'sy%'; select * from oldboy.test; select id,name from test where id=2; select id,name from test where id>2 and id<4;
ORDER BY子句用來排序行 語法: SELECT expr FROM table [WHERE condition(s)] [ORDER BY {column, expr, numeric_position} [Asc|DEsc]]; 其中: Asc:執行升序排序。默認值 DEsc:執行降序排序 ORDER BY子句通常在SELECT語句的最後面 #兩個排序條件 SELECT * FROM city ORDER BY population,countrycode;
LIMIT子句是SELECT語句中的最後一個子句(在order by後面)。 它用來表示從結果集中選取最前面或最後面的幾行。 語法: limit <獲取的行數> [OFFSET <跳過的行數>] 或者limit [<跳過的行數>,] <獲取的行數> SELECT * FROM city ORDER BY 5 DEsc LIMIT 4;
獲取和100號球員性別相同而且居住在同一城市的球員號碼。 select playerno from players where (sex, town) = ( select sex, town from players where playerno = 100);
#基礎用法 SELECT * FROM Student,Grade WHERE Student.sID = Grade.gID; #AS 別名 SELECT ci.name AS city_name ,co.name AS country_name,co.`SurfaceArea` AS mianji FROM city AS ci ,country AS co WHERE ci.name='qingdao' AND ci.`CountryCode`= co.`CountryCode`; # NATURAL JOIN子句 自動到兩張表中查找全部同名同類型的列拿來作鏈接列,進行相等鏈接 SELECT NAME,countrycode,LANGUAGE ,population FROM city NATURAL JOIN countrylanguage WHERE population > 1000000 ORDER BY population; # 使用using子句 (指定列鏈接) SELECT NAME,countrycode,LANGUAGE ,population FROM city JOIN countrylanguage USING(countrycode);