MySQL入门命令知识

简单介绍下吧,MySQL应用的场景大多数互联网公司第一次卖身是卖个了sun好像是10亿,第二次是连同sun自己,以74亿美元被卖给了Orecle~后面MySQL原作者站出来说,MySQL会存在闭源风险,整了个MariaDB~我也是醉了,也不考虑下我们的痛苦!下面简要介绍下MySQL的入门知识。

 

 一、MySQL有三种定义语言

    DDL:定义语言,比如:创建一张表,定义表的属性如索引、宽位等待

    DML:操作语言,增删查改

     DCL:控制语言,比如限定那个账户只能通过那个IP登入,又比如那个账户能访问那些资源

 二、MySQL事务:

    1、MyISAM不支持

     2、InnoDB支持

下面的图是自己捯饬捯饬整的,如有不适请发私信给Me~ ^-^

       wKioL1f3dPCgWqrmAAXd8MTVG90883.png-wh_50 

 

 三、SQL语言 

   A、DDL定义语言命令包含如下:

     1、CREATE

     2、ALTER

     3、DROP


1、CREATE

  1.1、创建数据库


mysql> SHOW DATABASES;                    #查看MySQL中的数据库
+--------------------+
| Database     |
+--------------------+
| information_schema|
| mysql       |
| test       |
+--------------------+
3 rows in set (0.00 sec)
 
mysql> CREATE DATABASE Oracle;            #创建数据库Oracle        
Query OK, 1 row affected (0.00 sec)
 
mysql> SHOW DATABASES;                    #查看是否创建成功
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Oracle             |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

  1.2、创建表

mysql> SELECT DATABASE();                  #查看当前所在数据库位置DATABASE()为MySQL内置函数
+------------+
| DATABASE() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)
     
mysql> USE Oracle                           #切换到我们之前创建的Oracle数据库中
Database changed    
mysql> SELECT DATABASE();                   #查看是否切换到Oracle
+------------+
| DATABASE() |
+------------+
| Oracle     |
+------------+
1 row in set (0.00 sec)
mysql> CREATE table BranchTab(              #创建表
    -> Id INT,
    -> Name CHAR(30)
    -> );
Query OK, 0 rows affected (0.09 sec)
 
mysql> SHOW TABLES;                         #查看BranchTab表是否创建成功
+------------------+
| Tables_in_Oracle|
+------------------+
| BranchTab    |
+------------------+
1 row in set (0.00 sec)

2、ALTER 修改表

mysql> SELECT DATABASE();                   #查看当前所在数据库为准
+------------+
| DATABASE() |
+------------+
| Oracle     |
+------------+
1 row in set (0.00 sec)
 
mysql> SHOW TABLES;                          #查看当前所在数据库位置中的表
+------------------+
| Tables_in_Oracle |
+------------------+
| BranchTab        |
+------------------+
1 row in set (0.00 sec)
 
mysql> ALTER TABLE BranchTab RENAME branchtab;    #修改表BranchTab为branchtab
Query OK, 0 rows affected (0.00 sec)
 
mysql> SHOW TABLES;                            #查看是否修改成功
+------------------+
| Tables_in_Oracle |
+------------------+
| brannhtab        |
+------------------+
1 row in set (0.00 sec)

3、DROP

3.1、删除表

mysql> SELECT DATABASE();                                    #查看当前所在数据库位置
+------------+
| DATABASE() |
+------------+
| Oracle     |
+------------+
1 row in set (0.00 sec)
 
mysql> SHOW TABLES;                                       #查看当前所在数据库位置中的表
+------------------+
| Tables_in_Oracle |
+------------------+
| branchtab        |
+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE bracnhtab;                                 #DROP掉branchtab表
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW TABLES;                                       #查看branchtabs是否被删除
Empty set (0.00 sec)

3.2、删除数据库Oracle

mysql> SHOW DATABASES;                         #查看MySQL中的所有库,发现Oracle库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Oracle             |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
 
mysql> DROP DATABASE Oracle;                          #DROP掉Oracle数据库
Query OK, 0 rows affected (0.00 sec)
 
mysql> SHOW DATABASES;                           #查看Oracke是否被删
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

B、DML操纵语言命令如下

    1、INSERT

    2、DELETE

    3、SELECT

    4、UPDATE

操作前先建库建表,并先使用下未介绍到SHOW CREATE TABLE TABLE_NAME,DESC TABLE_NAME


mysql> CREATE DATABASE oracle;                        #创建oracle数据库
Query OK, 1 row affected (0.00 sec)
 
mysql> use oracle                               #切换到oracle数据库
Database changed
mysql> CREATE TABLE branch(
    -> Id INT,
    -> Name CHAR(30)
    -> );
Query OK, 0 rows affected (0.16 sec)
 
mysql> DESC branch;                             #查看表结构,简要增加数据最好看下别弄错
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| Id    | int(11)  | YES  |     | NULL    |       |
| Name  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
 
mysql> SELECT * FROM branch;                       #查看表结构明细
Empty set (0.00 sec)
mysql> SHOW CREATE TABLE branch\G
*************************** 1. row ***************************
       Table: branch
Create Table: CREATE TABLE `branch` (
  `Id` int(11) DEFAULT NULL,
  `Name` char(30) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1                   #可以看出我们使用的是MyISMA
1 row in set (0.00 sec)
mysql> SELECT @@version;                    
+-----------+
| @@version |
+-----------+
| 5.1.73    |
+-----------+
1 row in set (0.00 sec)

1、INSERT 插入数据


mysql> SELECT DATABASE();                                                      #查看自己所在数据库位置是否正确
+------------+
| DATABASE() |
+------------+
| oracle     |
+------------+
1 row in set (0.00 sec)
mysql> DESC branch;                                                            #查看表结构
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| Id    | int(11)  | YES  |     | NULL    |       |
| Name  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> INSERT INTO branch VALUES                                               #插入数据到branch表中                                 
    -> (1,'Tom'),
    -> (2,'Sunshine');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM branch;                                                   #查看是否插入成功
+------+----------+
| Id   | Name     |
+------+----------+
|    1 | Tom      |
|    2 | Sunshine |
+------+----------+
2 rows in set (0.00 sec)

2、DELETE 删除数据


mysql> SELECT DATABASE();                                                       #查看所在数据库位置
+------------+
| DATABASE() |
+------------+
| oracle     |
+------------+
1 row in set (0.00 sec)
 
mysql> DESC branch;                                                             #查看branch表结构
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| Id    | int(11)  | YES  |     | NULL    |       |
| Name  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
 
mysql> DELETE FROM branch;                                                      #删除表数据,没加WHERE条件就是删除这张表里面的所有内容
Query OK, 2 rows affected (0.00 sec)
 
mysql> SELECT * FROM branch;                                                    #查看是否删除成功
Empty set (0.00 sec)
 
mysql> INSERT INTO branch VALUES                                                #插入新的数据
    -> (1,'Alis'),
    -> (2,'jeery');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM branch;                                                    #查看是否插入成功
+------+-------+    
| Id   | Name  |
+------+-------+
|    1 | Alis  |
|    2 | jeery |
+------+-------+
2 rows in set (0.00 sec)
 
mysql> DELETE FROM branch WHERE Id=1;                                            #删除branch表里面的内容加了条件判断WHERE Id=1
Query OK, 1 row affected (0.00 sec)
 
mysql> SELECT * FROM branch;                                                     #查看是否删除我们指定的数据
+------+-------+
| Id   | Name  |
+------+-------+
|    2 | jeery |
+------+-------+
1 row in set (0.00 sec)
 
mysql> DELETE FROM branch WHERE Name=jeery;                                     #删除branch表里面的内容加了条件判断 WHERE Name=jeery;但是jeery没加单引号报错
ERROR 1054 (42S22): Unknown column 'jeery' in 'where clause'
mysql> DELETE FROM branch WHERE Name='jeery';                                   #删除branch表里面的内容加了条件判断 WHERE Name='jeery';加了单引号成功
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM branch;                                                    #查看是否删除我们指定你的数据
Empty set (0.00 sec)

3、SELECT 查看数据


mysql> DESC branch;                                                             #查看表结构
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| Id    | int(11)  | YES  |     | NULL    |       |
| Name  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
 
mysql> INSERT INTO branch VALUES                                                 #插入一些数据
    -> (1,'Sunshine'),
    -> (2,'jeery'),
    -> (3,'Alis'),
    -> (4,'Tom');
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM branch;                                                    #查看branch表中的数据
+------+----------+
| Id   | Name     |
+------+----------+
|    1 | Sunshine |
|    2 | jeery    |
|    3 | Alis     |
|    4 | Tom      |
+------+----------+
4 rows in set (0.00 sec)
 
mysql> SELECT * FROM branch WHERE Id=1;                                        #查看branch表中的数据,以条件 "WHERRE Id=1"
+------+----------+
| Id   | Name     |
+------+----------+
|    1 | Sunshine |
+------+----------+
1 row in set (0.00 sec)
mysql> SELECT Name FROM branch;                                                #查看branch表中Name字段的数据
+----------+
| Name     |
+----------+
| Sunshine |
| jeery    |
| Alis     |
| Tom      |
+----------+
4 rows in set (0.00 sec)
 
mysql> SELECT Name FROM branch WHERE Id=1;                                    #查看branch表中Name字段的数据,以条件 "WHERRE Id=1"
+----------+
| Name     |
+----------+
| Sunshine |
+----------+
1 row in set (0.00 sec)
 
 
mysql> SELECT count(*) FROM branch;                                          #使用count内置函数查看branch表中有多少行
+----------+
| count(*) |
+----------+
|        4 |
+----------+
1 row in set (0.00 sec)
 
mysql> SELECT count(*) FROM bransh where Id=1;                               #使用count内置函数查看branch表中有多少行,以条件 "WHERE Id=1"                                                             
ERROR 1146 (42S02): Table 'oracle.bransh' doesn't exist
mysql> SELECT count(*) FROM bransh;
ERROR 1146 (42S02): Table 'oracle.bransh' doesn't exist
mysql> SELECT count(*) FROM branch WHERE Id=1;
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

4、UPDATE 更改数据


mysql> DESC branch;                                                          #查看表结构
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| Id    | int(11)  | YES  |     | NULL    |       |
| Name  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
 
mysql> UPDATE branch SET Id=5;                                               #更改数据,Id=5,生产环境中最好加条件,不然就呵呵了~
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0
 
mysql> SELECT * FROM branch;                                                 #不加条件就变成这样了,不是我们想要的
+------+----------+
| Id   | Name     |
+------+----------+
|    5 | Sunshine |
|    5 | jeery    |
|    5 | Alis     |
|    5 | Tom      |
+------+----------+
4 rows in set (0.00 sec)
 
mysql> UPDATE branch SET Id=1 WHERE Name='Sunshine';                         #更改数据Id=1,加了条件 "WHERE Name='Sunshine'"
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
 
mysql> SELECT * FROM branch;                                                 #查看是否是更改成我们所想要的
+------+----------+
| Id   | Name     |
+------+----------+
|    1 | Sunshine |
|    5 | jeery    |
|    5 | Alis     |
|    5 | Tom      |
+------+----------+
4 rows in set (0.00 sec)

C、DCL控制语言命令如下

      1、GRANT

      2、REVOKE

1、GRANT

mysql> CREATE TABLE branchone(                                              #为了区别,我们这里在创建一个表
    -> Id INT,
    -> Name CHAR(30)
    -> );
Query OK, 0 rows affected (0.06 sec)
mysql> SHOW TABLES;                                                          #查看oracle库有几张表
+------------------+
| Tables_in_oracle |
+------------------+
| branch           |
| branchone        |
+------------------+
2 rows in set (0.00 sec)
mysql> GRANT SELECT ON oracle.branch TO 'sunshine'@'192.168.11.28' IDENTIFIED BY 'sunshine';            #授权sunshine用户只能通过192.168.11.28这个IP访问数据库,而且只有oracle数据库branch的查看权限
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW GRANTS FOR 'sunshine'@'192.168.11.28';                                                      #查看是否授权成功,我们看到GRANT SELECT ON `oracle`.`branch` TO 'sunshine'@'192.168.11.28'
+---------------------------------------------------------------------------------------------------------------------+
| Grants for sunshine@192.168.11.28                                                                                   |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'sunshine'@'192.168.11.28' IDENTIFIED BY PASSWORD '*D6B63C1953E7F096DB307F8AC48C4AD703E57001' |
| GRANT SELECT ON `oracle`.`branch` TO 'sunshine'@'192.168.11.28'                                                     |
+---------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
 
[root@redis_master ~]# ifconfig | grep "inet addr:192.168"                                             #使用Linux系统,查看本机IP,为192.168.11.28
          inet addr:192.168.11.28  Bcast:192.168.11.255  Mask:255.255.255.0
[root@redis_master ~]# mysql -h192.168.11.28 -usunshine -psunshine                                     #使用sunshine用户连接数据库
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.73 Source distribution
 
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> 
mysql> SHOW DATABASES;                                                                                #查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| oracle             |
| test               |
+--------------------+
3 rows in set (0.00 sec)
 
mysql> USE oracle                                                                                    #进入oracle数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> SHOW TABLES;                                                                                  #查看自己是否只能看到我们设定branch表
+------------------+
| Tables_in_oracle |
+------------------+
| branch           |
+------------------+
1 row in set (0.00 sec)
mysql> DESC branch;                                                                                  #查看表结构
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| Id    | int(11)  | YES  |     | NULL    |       |
| Name  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
 
mysql> INSERT INTO branch VALUES                                                                     #插入数据,提示权限拒绝command denied
    -> (10,'Test');
ERROR 1142 (42000): INSERT command denied to user 'sunshine'@'gitlab.jinr.com' for table 'branch'
mysql> DELETE FROM branch;                                                                           #删除数据,提示权限拒绝 command denied
ERROR 1142 (42000): DELETE command denied to user 'sunshine'@'gitlab.jinr.com' for table 'branch'
mysql> UPDATE branch SET Id=1;                                                                       #更改数据,提示权限拒绝 command denied
ERROR 1142 (42000): UPDATE command denied to user 'sunshine'@'gitlab.jinr.com' for table 'branch'
mysql> SELECT * FROM branch;                                                                         #查看数据,正常
+------+----------+
| Id   | Name     |
+------+----------+
|    1 | Sunshine |
|    5 | jeery    |
|    5 | Alis     |
|    5 | Tom      |
+------+----------+
4 rows in set (0.00 sec)
 
[root@jroa ~]# ifconfig  | grep "inet addr:192.168"                                                  #使用另外一台Linux系统,查看IP,为192.168.11.21                                         
          inet addr:192.168.11.21  Bcast:192.168.11.255  Mask:255.255.255.0
[root@jroa ~]# mysql -h192.168.11.28 -usunshine -psunshine                                           #尝试连接,提示需'192.168.11.28' (113) 才能登入
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.11.28' (113)

2、REVOKE


mysql> SHOW GRANTS FOR 'sunshine'@'192.168.11.28';                                                    #查看权限,发现 GRANT SELECT ON `oracle`.`branch` TO 'sunshine'@'192.168.11.28' 
+---------------------------------------------------------------------------------------------------------------------+
| Grants for sunshine@192.168.11.28                                                                                   |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'sunshine'@'192.168.11.28' IDENTIFIED BY PASSWORD '*D6B63C1953E7F096DB307F8AC48C4AD703E57001' |
| GRANT SELECT ON `oracle`.`branch` TO 'sunshine'@'192.168.11.28'                                                     |
+---------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
 
mysql> REVOKE SELECT ON oracle.branch FROM  'sunshine'@'192.168.11.28';                                #收回授权
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW GRANTS FOR 'sunshine'@'192.168.11.28';                                                    #查看权限,没发现 GRANT SELECT ON `oracle`.`branch` TO 'sunshine'@'192.168.11.28'
+---------------------------------------------------------------------------------------------------------------------+
| Grants for sunshine@192.168.11.28                                                                                   |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'sunshine'@'192.168.11.28' IDENTIFIED BY PASSWORD '*D6B63C1953E7F096DB307F8AC48C4AD703E57001' |
+---------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 
[root@redis_master ~]# !if                                                                             #查看本机IP,为192.168.11.28
ifconfig | grep "inet addr:192.168"
          inet addr:192.168.11.28  Bcast:192.168.11.255  Mask:255.255.255.0
[root@redis_master ~]# !mys                                                                            #连接mysql,因为第一次授权了,就算收回,公共库的权限还是有的
mysql -h192.168.11.28 -usunshine -psunshine
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.73 Source distribution
 
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> show databases;                                                                                 #查看数据库,发现oracle数据不见啦
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)


原创文章,作者:N24-SunshineBoy,如若转载,请注明出处:http://www.178linux.com/50246