MySQL好在哪?怎么用?

01 关系数据库MySQL概述
MySQL有如下特点,这些特点使得其得到了广泛应用。

1. 简单易用

MySQL是一个高性能且相对简单的数据库系统,与一些大型系统的设置和管理相比,其复杂程度较低。

2. 价格低

MySQL对多数个人用户来说是免费的。

3. 小巧

MySQL数据库的4.1.1发行版只有21MB,安装完成也仅仅51MB。

4. 支持查询语言

MySQL支持SQL(结构化查询语言)。SQL是一种所有现代数据库系统都选用的语言。SQL支持ODBC(开放式数据库连接)的应用程序,ODBC是Microsoft开发的一种数据库通信协议。

5. 性能

MySQL数据库没有用户数的限制,多个客户机可同时使用同一个数据库。可利用几个输入查询并查看结果的界面来交互式地访问MySQL。这些界面有命令行客户机程序、Web浏览器或X Window System客户机程序。此外,还有由各种语言(如C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl)编写的界面。因此,可以选择使用已编好的客户机程序或编写自己的客户机应用程序。

6. 连接性和安全性

MySQL是完全网络化的,可在因特网上的任何地方访问其数据库,因此,可以和任何地方的任何人共享数据库。而且MySQL支持访问控制,可以控制哪些人不能看到数据。

7. 可移植性

MySQL可运行在各种版本的UNIX以及其他非UNIX的系统(例如Windows和OS/2)上。MySQL可运行在从家用PC到高级的服务器上。

8. 开放式的分发

MySQL容易获得:只要使用Web浏览器即可访问官网下载获得。如果不能理解其中某个算法是如何起作用的,或者对某个算法感到好奇,可以将其源代码取来,对源代码进行分析。如果不喜欢某些算法,还可以更改它。

9. 速度快

MySQL运行速度很快。曾经有开发者声称MySQL可能是目前能得到的最快的数据库。

02 SQL概述
SQL最早的版本是由IBM开发的,它最初被叫作Sequel,在20世纪70年代早期是System R项目的一部分。Sequel语言发展至今,其名称已变为SQL(Structured Query Language,结构化查询语言)。它是一种特定目的编程语言,用于管理关系数据库管理系统或在关系流数据管理系统中进行流处理。

MySQL好在哪?怎么用?终于有人讲明白了
SQL基于关系代数和元组关系演算,包括一个数据定义语言和数据操纵语言。SQL的范围包括数据的插入/查询/更新和删除、数据库模式的创建和修改,以及数据访问控制。尽管SQL经常被描述为一种声明式编程语言(4GL,即第四代语言),但也含有过程式编程的元素。

SQL是对埃德加·科德关系模型的第一个商业化语言实现,这一模型于1970年在一篇具有影响力的论文《一个对于大型共享型数据库的关系模型》中被描述。尽管SQL并非完全按照科德的关系模型设计,但其依然成为应用最为广泛的数据库语言。

SQL在1986年成为美国国家标准学会(ANSI)的一项标准,在1987年成为国际标准化组织(ISO)标准。此后,这一标准经过了一系列的增订,加入了大量新特性。虽然有这一标准的存在,但大部分SQL代码在不同的数据库系统中并不具有完全的跨平台性。

MySQL非常友好地支持SQL语言,本文只给出简单的举例,有关详细的SQL语法及举例,可参见官网:

https://dev.mysql.com/doc/refman/8.0/en/sql-syntax.html

官网按SQL语法功能分为8个部分,分别是:

数据定义语句(Data Definition Statement)
数据处理语句(Data Manipulation Statement)
事务和锁定声明(Transactional and Locking Statement)
复制语句(Replication Statement)
预处理SQL语句语法(Prepared SQL Statement Syntax)
复合语句语法(Compound-Statement Syntax)
数据库管理声明(Database Administration Statement)
效用声明(Utility Statement)
下文将对前2个部分举例讲解。

03 数据定义语句
数据库中的关系集合必须由数据定义语句指定给系统,主要提供表相关的定义关系模式、删除关系以及修改关系模式的命令。例如:数据库、表、表空间、触发器、事件、索引及函数的定义、更改操作等。

【例1】指定表空间创建库表,并在已有表的基础上增加列,查看表结构。

1. 建立名为ts_1的表空间

mysql> CREATE TABLESPACE ts_1 ADD DATAFILE 'ts_1.ibd' Engine=InnoDB;
Query OK, 0 rows affected (0.11 sec)
2. 建立名为testq的数据库

mysql> CREATE DATABASE testq;
Query OK, 1 row affected (0.00 sec)
3. 切换至名为testq的数据库

mysql> use testq;
Database changed
4. 建立表,并指定表使用的表空间及引擎

mysql> CREATE TABLE t1(
    -> c1 INT STORAGE DISK,# 数据存储于磁盘
    -> c2 INT STORAGE MEMORY# 数据基于内存
    -> ) TABLESPACE ts_1 ENGINE INNODB;# 指定表空间ts_1及引擎INNODB
Query OK, 0 rows affected (0.34 sec)
5. 向表t1中增加列c3,类型为VARCHAR,长度为10

mysql> ALTER TABLE t1 ADD c3 VARCHAR(10);
Query OK, 0 rows affected (0.52 sec)
Records: 0  Duplicates: 0  Warnings: 0
6. 查看表t1的结构

mysql> DESC t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| c1    | int(11)     | YES  |     | NULL    |       |
| c2    | int(11)     | YES  |     | NULL    |       |
| c3    | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
注意
在my.ini文件中设置:

# The default storage engine that will be used when create new tables when

default-storage-engine=INNODB

否则会出现“1286 Unknown storage engine 'InnoDB'”错误。

成功启动后,通过SHOW ENGINES查看引擎是否在运行:

MySQL好在哪?怎么用?终于有人讲明白了
04 数据处理语句
数据处理语句主要提供数据库表中相关数据元组的插入、删除、修改和查询等操作。

【例2】向已有的表t1中插入、查询、更改和删除数据。

1. 向表t1中插入2条数据,其中第2列数据是第1列数据的2倍

mysql> INSERT INTO t1(c1,c2,c3) VALUES(1,c1*2,'a'),(2,c1*2,'b');
Query OK, 2 rows affected (0.10 sec)
Records: 2  Duplicates: 0  Warnings: 0
2. 查询表t1中所有的数据

mysql> SELECT * FROM t1;
+------+------+------+
| c1   | c2   | c3   |
+------+------+------+
|    1 |    2 | a    |
|    2 |    4 | b    |
+------+------+------+
2 rows in set (0.00 sec)
3. 更新表t1中的数据,其中当c1等于2时,对应的c2列的数据乘以3,对应的c3列的值更改为updateb

mysql> UPDATE t1 SET c2=c1*3,c3='updateb'
    -> WHERE c1=2;
Query OK, 1 row affected (0.11 sec)
Rows matched: 1  Changed: 1  Warnings: 0
4. 当c1等于2时,查询表t1中对应的元组的数据

mysql> SELECT * FROM t1 WHERE c1=2;
+------+------+---------+
| c1   | c2   | c3      |
+------+------+---------+
|    2 |    6 | updateb |
+------+------+---------+
1 row in set (0.05 sec)
5. 当c1等于2时,删除表t1中对应的元组的数据

mysql> DELETE FROM t1 WHERE c1=2;
Query OK, 1 row affected (0.10 sec)
用SELECT语句查询表t1,发现c1=2对应的元组的数据都已经被删除。

mysql> SELECT * FROM t1;
+------+------+------+
| c1   | c2   | c3   |
+------+------+------+
|    1 |    2 | a    |
+------+------+------+
1 row in set (0.00 sec)

版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

猜你还会喜欢下面的内容

    无相关信息

中国领先的互联网域名及云服务提供商

为您提供域名,比特币,P2P,大数据,云计算,虚拟主机,域名交易最新资讯报道

域名注册云服务器