#############################################################

一、SQL结构化查询语言

     (1)什么是SQL?

         SQL,英文全称Structured Query Language 中文意思是结构化查询语言,它是一种对关系型数据库中的数据进行定义

     和操作的语言方法,是大多数关系型数据库管理系统所支持的工业标准。

       

    结构化查询语言SQL是一种数控查询和程序设计语言,用于存取数据以及查询,更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

     结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解

     具体得数据存放方式,所以,具有完全不同于底层结构的,不同数据库系统也可以使用相同的结构化查询语言作为数据库输入与管理的接口。结构化查询语言可以嵌套,

     这使得它具有极大的灵活性和强大的功能。不同的数据库系统的SQL语言会有一些差别。

   

     (2)SQL的分类:

    

     (3)SQL结构化查询语言包含6个部分:

    

1.数据查询语言(DQL)

    DQL全称Data Query Language,其语句,也称为“数据检索语句”,用以从表中获得数据。确定数据怎么在应用程序输出,

     关键字select是DQLDQL(也是所有SQL)用得最多的动词,其它DQL常用的保留字有WHERE,ORDER BY,GROUP BY 和HAVING.

这些DQL保留字常与其它类型的SQL语句一起使用。具体语句例如:

 mysql> select user,host from mysql.user order by user;

+----------+-----------+

| user     | host      |

+----------+-----------+

| renchuan | localhost |

| root     | localhost |

| tangbo   | localhost |

+----------+-----------+

3 rows in set (0.01 sec)

      mysql> 

      

 2.数据操作语言(DML)

     DML全称Data Manipulation Language,其语句包括动词INSERT,UPDATE和DELETE。;它们分别用于添加,修改和删除表中的行(数据)

 也成为动作查询语言,具体语句例如:

   mysql> delete from mysql.user where user='oldboy'

       3 rows in set (0.01 sec)

 

 3.事务处理语言(TPL)

     它的语句能够确保DML语句影响的表的所有行技术得以更新。TPL语句包括BEGIN,TRANSACTION,COMMIT,ROLLBACK.

 4.数据控制语言(DCL)

      DCL全称Data Control Language,它的语言通过GRANT或REVOKE获得许可,确定单个用户和用户组 

  对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

 

 5.数据定义语言(DDL)

      DDL全称Data Definition Language,其语句包括动词CREATE和DROP。在数据库中创建表或删除表

  CREATE TABLE或DROP TABLE,为表加入索引等。DDL包括许多鱼人数据库目录中获得数据有关的保留字,它也是动作查询的一部分。

 

 6.指针控制语言(CCL)

       CCL全称Data Control Language,它的语句,像DECLARE CURSOR,FETCH INTO 和UPDATE WHERE CURRENT用于一个或多个表单独行的操作。

  

  

    (4)总结:SQL语句最常见的分类一般就是三类:

 (DDL)---数据定义语言(CREATE,ALTER,DROP)   运维

 (DML)---数据操纵语言(SELECT,INSERT,DELETE,UPDATE)  开发

 (DCL)---数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 运维


###################################################################################################

################################################################################################### 


二、MySQL数据库常见管理应用

   (1)创建数据库

       命令语法:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name  库名字不能以数字开头

  例如:

  

 1.在MySQL默认字符集情况下创建一个tangbo_default测试库:

  mysql> help create database      查看帮助信息

  

  mysql> create database tangbo_default;    创建tangbo_default测试库

       Query OK, 1 row affected (0.05 sec)


mysql> show databases like 'tangbo_default';     查看创建是否成功

+---------------------------+

| Database (tangbo_default) |

+---------------------------+

| tangbo_default            |

+---------------------------+

1 row in set (0.00 sec)

 

mysql> show create database tangbo_default;     查看创建命令和默认字符集

+----------------+-------------------------------------------------------------------------+

| Database       | Create Database                                                         |

+----------------+-------------------------------------------------------------------------+

| tangbo_default | CREATE DATABASE `tangbo_default` /*!40100 DEFAULT CHARACTER SET utf8 */ |

+----------------+-------------------------------------------------------------------------+

1 row in set (0.00 sec)

mysql> 

     

2.创建一个名字为tangbo_gbk的GBK字符集数据库:

mysql> create database tangbo_gbk default character set gbk collate gbk_chinese_ci;

mysql> show create database tangbo_gbk;

+------------+--------------------------------------------------------------------+

| Database   | Create Database                                                    |

+------------+--------------------------------------------------------------------+

| tangbo_gbk | CREATE DATABASE `tangbo_gbk` /*!40100 DEFAULT CHARACTER SET gbk */ |

+------------+--------------------------------------------------------------------+

1 row in set (0.00 sec)


mysql> 


      3.通过help帮助查找相关命令

 mysql> help show CHARACTER SET

 

 mysql> SHOW CHARACTER SET LIKE 'gbk%';

+---------+------------------------+-------------------+--------+

| Charset | Description            | Default collation | Maxlen |

+---------+------------------------+-------------------+--------+

| gbk     | GBK Simplified Chinese | gbk_chinese_ci    |      2 |

+---------+------------------------+-------------------+--------+

1 row in set (0.02 sec)


mysql> SHOW CHARACTER SET LIKE 'utf8%';

+---------+---------------+--------------------+--------+

| Charset | Description   | Default collation  | Maxlen |

+---------+---------------+--------------------+--------+

| utf8    | UTF-8 Unicode | utf8_general_ci    |      3 |

| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci |      4 |

+---------+---------------+--------------------+--------+

2 rows in set (0.00 sec)


      mysql> create database tangbo_utf8 default character set utf8 collate utf8_general_ci;

      Query OK, 1 row affected (0.00 sec)

      mysql> 

 

4.创建常用的utf8和gbk类型的数据库的命令

  mysql> create database tangbo_utf8 default character set utf8 collate utf8_general_ci;

  mysql> create database tangbo_gbk default character set gbk collate gbk_chinese_ci;

        

    5.问好程序员字符集后,可以在编译参数里添加,以后创建数据库后就不需要指定字符集了。

 -DDEFAULT_CHARSET=utf8 \

 -DDEFAULT_COLLATION=utf8_general_ci \

 -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \

 或者

 -DDEFAULT_CHARSET=gbk \

 -DDEFAULT_COLLATION=gbk_chinese_ci \

 -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \

实战案例:

       (1)根据开发的程序确定字符集(建议utf8);

(2)编译时候指定字符集,例如:

-DDEFAULT_CHARSET=utf8 \

       -DDEFAULT_COLLATION=utf8_general_ci \

          或者

       -DDEFAULT_CHARSET=gbk \

       -DDEFAULT_COLLATION=gbk_chinese_ci \

然后建库的时候默认创建即可;create database tangbo;

(3)编译的时候没有指定字符集或指定了和程序不同的字符集,如何解决?

     创建库时指定字符集即可。

 mysql> create database tangbo_utf8 default character set utf8 collate utf8_general_ci;

             mysql> create database tangbo_gbk default character set gbk collate gbk_chinese_ci;


###################################################################################################

################################################################################################### 

 

三、显示-连接-删除等数据库的库管理应用讲解


     1.显示数据库

  命令:mysql> help show databases

        mysql> show databases;

        mysql> show databases like 'tangbo';

+-------------------+

| Database (tangbo) |

+-------------------+

| tangbo            |

+-------------------+

1 row in set (0.00 sec)

mysql> 

    

2.删除数据库

      mysql> help drop database  

 命令:DROP DATABASE db_name;

 mysql> drop database renchuan;

      Query OK, 0 rows affected (0.06 sec)

      mysql> 

 mysql> show databases like 'renchuan';

       Empty set (0.00 sec)

       mysql> 

 

 3.连接数据库

   mysql> help use

USE db_name   如果数据库存在,就尝试进入数据库

 4.查看当前连接的数据库 

   mysql> select database();

+------------+

| database() |

+------------+

| tangbo     |

+------------+

1 row in set (0.00 sec)


mysql> 

   

      5.当前数据库包含的表信息

  切到数据库里查看表

   mysql> show tables;

+------------------+

| Tables_in_tangbo |

+------------------+

| student          |

+------------------+

1 row in set (0.00 sec)


mysql> 

     mysql> show tables from tangbo;

+------------------+

| Tables_in_tangbo |

+------------------+

| student          |

+------------------+

1 row in set (0.00 sec)


mysql> 


      6.删除系统多余账号

 语法:mysql> help drop user

       DROP USER 'jeffrey'@'localhost';