MySQL 基礎命令

 

SQL語句

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

 

1.1 經常使用命令

# 查看數據庫
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;

 

1.2 登陸mysql

常見的特定於客戶機的鏈接選項
-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>

 

1.2.1 修改密碼

 
[root@db02 ~]# mysqladmin -uroot -p123 password 123456
[root@db02 ~]# mysql -uroot -p123456
mysql>

 

1.2.2 忘記密碼-怎麼辦

#開啓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;

 

1.3 受權grant

1.3.1 grant

格式
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.4 好用功能、快捷鍵

1.4.1 mysql客戶端接口自帶功能

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   清屏

 

1.5 增刪改查-數據庫SQL命令詳解

1.5.1 數據庫

#建立庫
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;

 

1.5.2 表-table

1.5.2.1 查看錶

# 幫助:
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    |       |
+-------+----------+------+-----+---------+-------+

1.5.2.2 操做表

# 建立表
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) ;

 

 

1.5.3 插入、更新數據

 

#  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;

 

1.5.4 查看數據-select

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;

 

 

1.6 複雜查詢

1.6.1 ORDER BY子句

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;

 

1.6.2 LIMIT子句

LIMIT子句是SELECT語句中的最後一個子句(在order by後面)。
它用來表示從結果集中選取最前面或最後面的幾行。
語法:
limit <獲取的行數> [OFFSET <跳過的行數>]
或者limit [<跳過的行數>,] <獲取的行數> SELECT * FROM city ORDER BY 5 DEsc LIMIT 4;

1.6.3 子查詢

獲取和100號球員性別相同而且居住在同一城市的球員號碼。
select playerno   
from players   
where (sex, town) = (  
    select sex, town   
    from players   
    where playerno = 100);

 

1.6.4 鏈接查詢

#基礎用法
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);
相關文章
相關標籤/搜索