mysql的登陆选项
mysql -h 127.0.0.1 -P 3306 -u root -p
-h 指明登陆部署了mysql服务的主机
-P 指明要访问的端口号
-u 指明用户(以user状态登陆)
-p 密码(
-p
后可直接跟密码进行登陆)
mysql -u root -p
不指定
-h
时默认以本地的mysql网络服务不指定
-P
时以默认端口号3306
进行登陆
什么是数据库
mysql与mysqld的区别
mysql 是数据库服务的客户端
mysqld是数据库服务的服务端(一个可执行程序带d的,一般被称为守护进程)
mysql
的本质就是:基于C(mysql)
,S(mysqld)
模式的一种网络服务;
mysql与数据库
mysql
是一套提供数据存取的服务的网络程序;而数据库一般指的是,在磁盘或者内存当中存储的特定结构组织的数据 – 将来在磁盘上存储的一套数据的方案;
数据库服务 –
mysqld
为什么存储数据时不用文件而用数据库?
- 文件确实对数据的存储起到了一定的作用,但是文件并没有提供十分灵活的数据管理能力(以用户的层面),假设在写项目时数据被存储在文件当中,程序员则需要再次对文件进行操作(二次编码);
- 数据库的本质就是:对数据内容存储的一套解决方案(一个给要求,一个给结果);
- 安全问题:对于没有加权限控制的文件可以被大多数人进行访问,而这样反而不安全;
数据库本质就是在磁盘中结构化的数据;
在Linux中如何显式观察数据库?
在Linux中如何使用mysql建立一个数据库,建立一张表结构,插入一些数据;
- 建立数据库本质上就是建立一个Linux下的一个目录;
使用create database XXX;
创建数据库(默认该处的XXX为’‘helloworld’),即在对应目录中建立一个名为’'helloworld’的目录(该目录的位置默认为/var/lib/mysql
中);- 对数据库进行的基本操作;
- 建立表
同时,在对数据库进行增删查改之前,首先应该选中该数据库,可以将该操作比作为在Linux平台下时创建目录->进入目录;
使用use XXX;
命令选中该数据库(注意:在mysql中总是以;
分号作为mysql语句的结束);
mysql> create table /*create database为创建数据库 而create table为创建表*/student( -> name varchar(32),# 名字,varchar为类型,后跟(),()内为字符串大小; -> age int, # 年龄,该处可以直接用int进行表示; -> gender varchar(2) -> );#以;分号进行结尾
- 而这里实际上是在对应数据库目录中建立了对应的文件;
- 在表中插入数据
所建立的表与Excel类似,当Excel表格建立好一个模板之后即可以在这个模板之下添加数据;
以上面的表结构为例;
mysql> insert into student(name,age,gender) values("Lihua",18,"男");
- 插入一个name为"Lihua",age为18,gender为"男";
也可以使用SELECT * FROM student
同时从该图可以看出,数据库的数据存储结构为逻辑存储结构;
在显式时可以看到数据库内的数据是以行列的方式进行显式;
但是实际在底层中数据库内的数据根据不同的数据库都有不同的存储方式;
所以本质上,数据库也是文件,不过该文件的文件操作并不由用户直接进行;
而是用户通过客户端去访问mysqld网络服务,使得mysqld网络服务根据用户的要求所需去对数据进行操作;
服务器与数据库、表之间的关系
安装mysqld(数据库网络服务器)的本质就是在机器上安装了一个数据库的管理系统,这个系统可以管理多个数据库;
而数据库内可以建立多个表,表用来存储实体数据;
用户通过客户端去访问服务端,而服务端根据用户的需求对数据库内的数据进行对应的操作;
SQL分类
DDL [data definition language]
数据定义语言,用来维护存储数据的结构
代表指令:create , drop , alter
DML [data manipulation language]
数据操纵语言,用来对数据进行操作
代表指令:insert , delete , update
DCL [data control language]
数据控制语言,负责权限管理等
代表指令:grant , revoke , commit