看啥

导航

MySQL数据库的基本操作

MySQL数据库的基本操作

1、SQL是什么?它能做什么?

对数据库进行查询和修改操作的语言叫做 SQL(Structured Query Language,结构化查询语言)。SQL 语言是目前广泛使用的关系数据库标准语言,是各种数据库交互方式的基础。

著名的大型商用数据库 Oracle、DB2、Sybase、SQL Server,开源的数 据库 PostgreSQL、MySQL,甚至一些小型的数据库 Access 等都支持 SQL。近些年蓬勃发展的 NoSQL 系统最初是宣称不再需要 SQL 的,后来也不得不修正为 Not Only SQL,来拥抱 SQL。\

SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 与其他程序设计语言(如 C语言、Java 等)不同的是,SQL 由很少的关键字组成,每个 SQL 语句通过一个或多个关键字构成。

SQL 具有如下优点。

  1. 一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。
  2. 使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C++、Fortran、COBOL、Java 等语言中使用。
  3. 非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”,存储路径的选择和操作的执行由数据库管理系统自动完成。
  4. 语言简洁、语法简单:该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。

SQL 包含以下 4 部分:
1)数据定义语言(Data Definition Language,DDL)用来创建或删除数据库以及表等对象,主要包含以下几种命令:

  • DROP:删除数据库和表等对象
  • CREATE:创建数据库和表等对
  • ALTER:修改数据库和表等对象的结构

2)数据操作语言(Data Manipulation Language,DML)
用来变更表中的记录,主要包含以下几种命令:

  • SELECT:查询表中的数据
  • INSERT:向表中插入新数据
  • UPDATE:更新表中的数据
  • DELETE:删除表中的数据

3)数据查询语言(Data Query Language,DQL)
用来查询表中的记录,主要包含 SELECT 命令,来查询表中的数据。

4)数据控制语言(Data Control Language,DCL)
用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对数据库中的用户设定权限。主要包含以下几种命令:

  • GRANT:赋予用户操作权限
  • REVOKE:取消用户的操作权限
  • COMMIT:确认对数据库中的数据进行的变更
  • ROLLBACK:取消对数据库中的数据进行的变更
    创建库school、
CREATE DATABASE SECHOOL;

下面是一条 SQL 语句的例子,该语句声明创建一个名叫 students 的表:

CREATE TABLE students (
    student_id INT UNSIGNED,
    name VARCHAR(30) ,
    sex CHAR(1),
    birth DATE,
    PRIMARY KEY(student_id)
);

该表包含 4 个字段,分别为 student_id、name、sex、birth,其中 student_id 定义为表的主键。

现在只是定义了一张表格,但并没有任何数据,接下来这条 SQL 声明语句,将在 students 表中插入一条数据记录:

INSERT INTO students (student_id, name, sex, birth)
VALUES (100001, 'tom', '1', '2001-02-14');

执行完该 SQL 语句之后,students 表中就会增加一行新记录,该记录中字段 student_id 的值为“100001”,name 字段的值为“tom”。sex 字段值为“1”,birth 字段值为“2001-02-14”。

再使用 SELECT 查询语句获取刚才插入的数据,如下:

SELECT name FROM students WHERE student_id=100001;
#
+------+
| name |
+------+
| tom  |
+------+
1 row in set (0.00 sec)

注意:SQL 语句不区分大小写,许多 SQL 开发人员习惯对 SQL 本身的关键字进行大写,而对表或者列的名称使用小写,这样可以提高代码的可阅读性和可维护性

拓展
标准 SQL 是指符合国际标准的 SQL,而非某个数据库厂商的 SQL 语法(如:Microsoft SQL Server 的 T-SQL,Oracle 的 PL/SQL,MySQL)。
标准 SQL 可以在任何数据库中使用,而数据库厂商的 SQL 只适合它们对应的数据库,如 T-SQL 只适合 Microsoft SQL Server。

2、SQL的基本书写规则

SQL 语句要以分号;结尾
在 RDBMS (关系型数据库)当中,SQL 语句是逐条执行的,一条 SQL 语句代表着数据库的一个操作。
我们通常在句子的句尾加注标点表示这句话结束,中文句子以句号 结尾,英文以点号 . 结尾,而 SQL 语句则使用英文分号; 结尾。

SQL 语句不区分大小写
SQL 不区分关键字的大小写。例如,不管写成 SELECT 还是 select,解释都是一样的。表名和列名也是如此。

提示:关键字是数据库事先定义的,有特别意义的单词

  • 需要注意的是,插入到表中的数据是区分大小写的。例如,向数据库中插入单词 Computer、COMPUTER 或 computer,这三个是不一样的数据

常数的书写方式是固定的
SQL 语句常常需要直接书写字符串、日期或者数字。例如,书写向表中插入字符串、日期或者数字等数据的 SQL 语句。
在 SQL 语句中直接书写的字符串、日期或者数字等称为常数。常数的书写方式如下所示:

  • SQL 语句中含有字符串的时候,需要像 'abc' 这样,使用英文单引号' 将字符串括起来,用来标识这是一个字符串。
  • SQL 语句中含有日期的时候,同样需要使用英文单引号将其括起来。日期的格式有很多种('26 Jan 2010' 或者'10/01/26' 等),统一使用 '2020-01-26' 这种'年-月-日'的格式。
    在 SQL 语句中书写数字的时候,不需要使用任何符号标识,直接写成 1000 这样的数字即可。

注意:列名不是字符串,不能使用单引号。在MySQL 中可以用反单引号9(` )把表名和列名括起来。

单词需要用半角空格或者换行来分隔
SQL 语句的单词之间必须使用半角空格(英文空格)或换行符来进行分隔。没有分隔的语句会发生错误,无法正常执行。

下面是分隔和未分隔的 SQL 语句:

3、MySQL查看或显示数据库(SHOW DATABASES语句)

数据库可以看作是一个专门存储数据对象的容器,每一个数据库都有唯一的名称,并且数据库的名称都是有实际意义的,这样就可以清晰的看出每个数据库用来存放什么数据。在 MySQL 数据库中存在系统数据库和自定义数据库,系统数据库是在安装 MySQL 后系统自带的数据库,自定义数据库是由用户定义创建的数据库。

在 MySQL 中,可使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据库。查看数据库的语法格式为:

SHOW DATABASES [LIKE '数据库名'];

语法说明如下:LIKE 从句是可选项,用于匹配指定的数据库名称。LIKE 从句可以部分匹配,也可以完全匹配。数据库名由单引号' '包围。

实例1:查看所有数据库

MariaDB [(none)]> SHOW DATABASES;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| tom                |
+--------------------+
5 rows in set (0.00 sec)

可以发现,在上面的列表中有 4 个数据库,它们都是安装 MariaDB时系统自动创建的,其各自功能如下:

  • information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。
  • mysql:MySQL 的核心数据库,类似于 SQL Server 中的 master 表,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。常用的比如在 mysql 数据库的 user 表中修改 root 用户密码。
  • performance_schema:主要用于收集数据库服务器性能参数。
  • test:安装测试数据库,安全初始化时可drop

实例2:创建并查看数据库
先创建一个名为 jack 的数据库:

MariaDB [(none)]> CREATE DATABASE jack;
Query OK, 1 row affected (0.00 sec)

再使用 SHOW DATABASES 语句显示权限范围内的所有数据库名,如下所示:

MariaDB [(none)]> CREATE DATABASE jack;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jack               |
| mysql              |
| performance_schema |
| test               |
| tom                |
+--------------------+
6 rows in set (0.00 sec)

实例3:使用 LIKE 从句

  1. 使用 LIKE 从句,查看与 test_db 完全匹配的数据库:
MariaDB [(none)]> SHOW DATABASES LIKE 'jack' ;
+-----------------+
| Database (jack) |
+-----------------+
| jack            |
+-----------------+
1 row in set (0.00 sec)
  1. 使用 LIKE 从句,查看名字中包含 test 的数据库:
MariaDB [(none)]> CREATE DATABASE 01test;
Query OK, 1 row affected (0.00 sec)
#----------------------------------------------------
MariaDB [(none)]> CREATE DATABASE test10;
Query OK, 1 row affected (0.00 sec)
#------------------------------------------------------------

MariaDB [(none)]>  SHOW DATABASES LIKE '%test%';
+-------------------+
| Database (%test%) |
+-------------------+
| 01test            |
| test              |
| test10            |
+-------------------+
3 rows in set (0.00 sec)
  1. 使用 LIKE 从句,查看名字以 01开头的数据库:
MariaDB [(none)]> CREATE DATABASE tom10;
Query OK, 1 row affected (0.01 sec)
#-----------------------------------------------------------------------
MariaDB [(none)]> CREATE DATABASE 01tom;
Query OK, 1 row affected (0.00 sec)
#-------------------------------------------------------------------------
MariaDB [(none)]>  SHOW DATABASES LIKE '01%';
+----------------+
| Database (01%) |
+----------------+
| 01test         |
| 01tom          |
+----------------+
2 rows in set (0.00 sec)

  1. 使用 LIKE 从句,查看名字以 10 结尾的数据库:
MariaDB [(none)]>  SHOW DATABASES LIKE '%10';
+----------------+
| Database (%10) |
+----------------+
| test10         |
| tom10          |
+----------------+
2 rows in set (0.01 sec)

4、MySQL创建数据库(CREATE DATABASE语句)

在 MySQL 中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下:

CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>] 
[[DEFAULT] COLLATE <校对规则名>];

[ ]中的内容是可选的。语法说明如下:

  • <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。
  • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
  • [DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。
  • [DEFAULT] COLLATE:指定字符集的默认校对规则。

MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。

posted on 2021-08-15 23:56  看啥  阅读(231)  评论(0编辑  收藏  举报