MySQL数据库基础(笔记整理一)

数据库的组织结构

MySQL属于关系数据库管理系统(Relational Database Management System, RDBMS)

  • 数据库(Database,DB)即一个用来存放信息的仓库,他们构造简单,遵守一定规则;

    • 数据库里的数据集合都存放在数据表(table)里;
    • 数据表由数据行(row)和数据列(column)构成;
    • 一个数据行就是数据表里的一条记录(record);
    • 记录可以包含多个信息项,数据表里的每一个数据列都对应一个信息项。
  • 管理系统(Management System, MS) 指的是用来对数据进行插入、检索、修改、删除等操作的软件。
  • 关系(Relational ,R)表示RDBMS是DBMS中的一种,RDBMS专长是把分别存放在两个数据表里的信息联系起来(匹配),这种联系是通过查找两个数据表的共同元素来实现的。RDBMS的强项在于它能方便地抽取出数据表里的数据并把它们与其他数据表里的信息结合起来为那些单独利用某个数据表无法找到答案的问题提供答案。

    数据库的查询语言

    为了与MySQL交互,你需要使用一种名为SQL(Structed Query Language,结构化查询语言)的语言。SQL是标准化数据库语言,SQL的各种语句是它能够搞效率地与你的数据库尽心互动。

    MySQL的体系结构

    MySQL采用的是C/S(客户/服务器)体系结构。
  • mysqld (MySQL的服务器程序 ),运行在存放你数据库的机器上。负责在网络上监听并处理来自客户的服务请求,并根据这些请求去访问数据库的内容,再将有关信息回传给客户。
  • Client (MySQL的客户程序),负责连接到数据库服务器,并通过向服务器发出命令来告知它们需要哪些信息。
    MySQL的“客户/服务器”体系结构的优点:
  1. 并发控制,由服务器提供,因而不会出现两个用户同时修改一条记录的现象。
  2. 你不必非要在存放你数据库的那台机器上登录MySQL。

创建MySQL用户并赋予权限

首先以root的身份登录MySQL,再用CREATE USER和GRANT语句新建一个MySQL用户,并赋予数据库权限。

$ mysql -u root -p
Enter password: \*\*\*\*\*\*
mysql> CREATE USER 'example'@'localhost' IDENTIFIED BY '123456' ;
mysql> GRANT ALL ON webdata.* TO 'example'@'localhost' ;

mysql命令的-p选项会让mysql提示MySQL的root用户输入密码。假设你打算使用远程登录的方式管理数据库,CREATE USER中的localhost就应该改为%(或者你要使用的另一台计算机的IP)

建立/断开与MySQL服务器的连接

  • mysql -h host_name -p -u user_name [database]

    1. -h host_name 带连接的服务器主机名。本地可省略。
    2. -u user_name 你的MySQL用户名。
    3. -p 提示输入MySQL口令。
    4. 连接常用的数据库(不必在USE database)
  • quit/exit 即可断开与MySQL的连接。


小技巧:

Linux下可以将常用的mysql命令写入 ~/.bashrc 例如,可以将以下语句写入 .bashrc

alias mysql-example='mysql -u example -p sample'
alias mysql-root='mysql -u root -p'
alias mysqlstart='sudo systemctl start mysqld'
alias mysqlstop='sudo systemctl stop mysqld'
alias mysqlstatus='sudo systemctl status mysqld'

在执行source .bashrc ,再次连接MySQL数据库只需输入mysql-example即可连接到example用户,而启动/停止/查看,MySQL服务用上面的别名也会方便很多。


执行SQL语句

连接上服务器后,现在就可以通过select语句进行相关的数据查询了。利用mysql命令行的方式进行数据库查询很简单:敲入有关命令,命令末尾以分号 ;\g 表示语句结束。事实上,这个过程是在你输入完查询语句之后,查询命令将由mysql发往服务器执行,服务器对查询进行处理并把其结果返回给mysql,最后由mysql将查询结果显示在屏幕上。
例如:

mysql> SELECT NOW();

上面这条语句将返回系统的当前日期和时间。上面说过,除了 分号 ; 以外 \g (表示go) 也可以表示语句的结束。其实还可以使用 \G (将会竖直排列显示结果,每行一个值)

mysql> SELECT NOW(), USER(), VERSION() \G
     NOW():    2018/10/07    17:21
    USER():    example@localhost
VERSION:     10.1.36 -MariaDB

如果查询命令的输出行比较短,以 \G 作为查询命令的结束符效果还不太明显。但万一输出行比较长,在屏幕上显示为好几行的时候,\G 结束符就能使屏幕输出的内容更便于阅读。

因为mysql必须等待语句结束符,所以我们没必要把查询命令完整地写在同一行上。例如:

mysql> SELECT NOW(),
    ->    USER(),
    ->    VERSION()
    ->    ;

假如,我已经输入了好几行查询命令但却突然发现不应该执行它,输入 \c 即可取消它。有一点特别注意,当查询命令的 '未配对的的情况下,应该用 '\c 来取消执行。

批处理的方式执行SQL语句

可以用SQL脚本的方式,让mysql从文件读入数据和命令也不是通过键盘的输入。这样的处理方式,在数据量比较大的时候,要比在命令行插入数据高效的多。我们可以通过shell的输入重定向功能,将SQL语句写入一个名为 mysqlscript.sql的文件中,通过下面的方式执行它们:

$ mysql < mysqlscript.sql

或者是在msql命令行中以 source 的方式执行sql脚本:

mysql> source /home/example/mysqlscript.sql

需要注意的是,mysqlscript.sql 要给出它的绝对路径。通过这样的方法,我们可以方便的批量创建一系列表或者从很多文件中LOAD 数据。


2018/10/07 数据库基础笔记(一)

猜你喜欢

转载自www.cnblogs.com/pulp/p/9750337.html