一、DBMS与SQL
正如之前所提到的,数据库即数据仓库,而打开这个仓库的两把钥匙,就是DBMS与SQL。
(一)DBMS
DBMS即数据库管理系统(Database Management System),是操作和管理数据库的软件,用于建立、使用和维护数据库。
用户无法直接访问数据库,对数据的所有操作,包括存储、检索、删除和处理等等,都通过DBMS来完成。
DBMS并非特指某一款软件,而是一类软件的统称,MySQL就是其中一种,其他常见的还包括MS SQL Server、Oracle、Access等等。
(二)SQL
SQL是结构化查询语言(Structured Query Language)的简称,是一种专门用来与数据库通信的计算机语言。用户通过编写SQL语句,向DBMS传达指令,从而对数据库进行各种操作。
任何一门语言的基本构成元素都是字或词,SQL也不例外,它的语句全部由描述性很强的英语单词构成,这些单词又被称为关键字。SQL语句就是由关键字+用户自定义内容按特定语法排列而成。
关键字是用于执行数据库操作的特殊词汇,又分保留关键字和非保留关键字,为避免语句产生歧义,一般禁止用于用户自定义的库名、表名、列名等。
SQL既是一种语言,也是一种标准。几乎所有的DBMS都支持SQL,但都进行了不同程度的扩展,相同的SQL语句在不同的DBMS里不一定通用。
用户通过DBMS与数据库建立连接,使用SQL传达指令,二者配合使用,缺一不可。
二、数据库基本操作
安装好MySQL数据库之后,便可使用自带的命令行实用程序对数据库进行操作,但显然目前我们对SQL语句一无所知,不知如何“开口”。
截至8.0版本,MYSQL中的关键字有675个(其中保留关键字262个),是否有必要把所有的关键字都学习一遍之后再开始操作MYSQL?答案是否定的,我们完全可以按照需求从最简单、最常用的语句学起。
(一)登录退出
在对MYSQL数据库进行操作之前,要先登录,登录的指令为:
(mysql 是登录数据库的命令;
-u 表示后面将输入用户名,本示例用户名为root;
-p 表示后面将输入密码)
随后回车、输入密码、回车,显示如下内容则登陆成功,可对MYSQL进行后续操作。
相应地,如果操作结束后要退出MYSQL,退出的指令有以下三种:
(二)查询数据库基本信息
登录到MYSQL之后,如果对当前服务器上的数据库、表和内部信息等不熟悉,可使用show关键字进行查询,如:
1、查询服务器上的所有数据库名:
2、查询指定数据库里的所有表名:
(使用use关键字指定数据库,use mysql 即使用名为mysql的数据库)
3、查询指定表里的所有列配置信息:
(使用from关键字指定表,from db即从名为db的表里查询信息)
4、查询服务器状态信息:
5、查询服务器错误信息:
6、查询服务器警告信息:
7、查询当前用户的安全权限(可使用的关键字):
8、查询创建某个数据库的MYSQL语句:
(mysql为要查询的数据库名)
9、查询创建某个表的MYSQL语句:
(mysql为要查询的表名)
本节首次使用到的保留关键字:show、databases、use、from、create、database、table。
tables、columns、status、errors、warnings、grants为非保留关键字。
(三)数据库的创建与删除
数据库里的数据存储在一个个表中,而数据库本身可以理解为一个虚拟的外壳,包裹这些表,或者可以更直观地把数据库理解为文件管理系统的一个文件夹。如果不考虑安全、权限等因素,数据库的创建、删除并不复杂,正如新建一个文件夹一样,仅仅需要一个名称。
1、数据库的创建:
(创建一个名为my_test的数据库)
2、数据库的删除:
(删除名为my_test的数据库)
本节首次使用到的保留关键字:drop。
(四)表的创建、修改与删除
1、表的创建:
不同于数据库的创建,表的创建除了需要定义表的名字之外,还需要定义表中所有列的名字和属性、表的主键、引擎类型等。其中列的属性包括:数据类型(必须)、是否允许NULL值、默认值、是否自增等等。
创建一个最简单的表,只需要表名、列名、列支持的数据类型:
(在数据库my_test中创建了名为test_table的表,该表有名为userid、username、city、address的四个列,列名后跟的int、varchar(50)为该列支持的数据类型)
而在实际应用中,往往还需要定义表或列的其他属性,包括:
◆是否允许NULL值:不允许NULL值的列,在插入或更新行时必须给出该列的值,允许NULL值的列则不强制。如未定义,则创建时默认该列允许NULL值。
◆默认值:在插入行时如果没有给出该列的值,则使用默认值。如未定义,则创建时默认该列默认值为NULL。
◆是否自增:某些情况下需要该列的值按插入的顺序自动递增,无需人工填写。
◆主键:主键用于唯一标识某行。如果主键为单列,则该列值必须唯一;如果主键为多列,则这些列的组合值必须唯一。
◆引擎类型:MYSQL内置多种引擎,不同引擎具有各自不同的功能和特性,为不同的任务选择正确的引擎能获得良好的功能和灵活性。常用引擎为InnoDB(支持事务处理、不支持全文本搜索)和MyISAM(支持全文本搜索、不支持事务处理)。
(在数据库my_test中创建了名为test_table的表,该表有名为userid、username、city、address的四个列,列名后跟的int、varchar(50)为该列支持的数据类型,null和not null表示是否允许NULL值,auto_increment表示自增,default后面为默认值)
2、表的修改:
表在创建并存储数据之后,不建议再对表的结构进行修改。通常对表的修改操作包括:新增列、删除列、重命名、定义外键(不讨论)。
2.1 在表中新增列:
(在test_table表中添加名为sex的列,数据类型为varchar(10),不允许NULL值)
2.2 在表中删除列:
2.3 重命名表:
3、表的删除:
删除操作没有确认,不能撤销,需慎重。
(删除名为test_table_2的表)
本节首次使用到的保留关键字:int、not、null、varchar、default、primary、key。
auto_increment、engine为非保留关键字。
领取专属 10元无门槛券
私享最新 技术干货