Linux运维:MySQL数据库(1)

1.信息与数据:

数据是信息的载体,信息是数据的内涵。数据库就是存储数据的仓库,并长期存储在计算机磁盘中,可由多个用户和应用程序共享的数据集合,就是数据库。

2.数据库中的数据的特点:

2.1.数据是按照某种结构组织的:数据的内部构成及对外联系就是数据库的"型",而数据的具体取值就是数据库的"值"。

2.2.数据具有整体性:即数据库中的数据是从整体出发,综合了各个应用程序和用户的需求,数据是整体结构化的。

2.3.数据有共享性、数据有较高的独立性:数据库中的数据和应用程序在物理和逻辑上均实现了分离,数据结构的该变不影响应用程序的运行,数据和程序具有较高的独立性。

3.数据库管理系统的功能

DBMS(数据库管理系统):是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心。数据库管理系统位于操作系统之上,通过调用操作系统的各种服务,为用户提供管理各种数据库对象的接口和各种方法,从而实现对数据的各种操作。DBMS的功能建立在操作系统的底层服务之上,数据库的管理控制及用户对数据的各种操作命令的执行均由DBMS实现。

数据库管理系统主要有三个功能:数据定义(DDL)、数据操纵(DML)、数据控制。

数据定义是定定义了数据库的各种对象,表,视图,索引,存储过程,触发器等。一般有create,drop,alter

数据操作是对数据表中的操作,如增、删、改、查、统计等各种存储操作。实现对数据库中数据的基本操作。一般有insert,delete,update等。

数据控制一般有grant,revoke。

数据查询语句:select

结构化查询语言(SQL)是一种专门用来与数据库通信的语言,其利用一些简单的句子构成基本的语法来存取数据库中的内容,便于用户从数据库中获得及操作所需数据。

SQL语言具有以下特点:(1)SQL语言是非过程化语言。(2)SQL语言是统一的语言。(3)SQL语言是关系型数据库的公共语言。

关系型数据库中的一个表是由行和列组成的,并且要求表中的每行记录必须唯一。在设计表时,可以通过定义主键(primary key)来保证记录(实体)的唯一性。关系型数据库一般是MySQL,SQL Server,access,DB2,sybase等等。关系型数据库结构是二维数据库表,二维表中每个字段用来描述对象的一个属性。每个记录用来描述一个对象的信息,关系数据写到哪里也就是存储在硬盘当中读写系统就会受到的IO限制或者瓶颈。非关系型数据库:NoSQL,Redis。它们都存储高热数据(在内存中高速运行),不同点:redis可以做持久化保存,可以存储对象。

一个表的主键由一个或多个字段组成,值具有唯一性,且不允许去控制,主键的作用是唯一的标识表中的每一条记录。

关系型数据库中的术语:

关系:关系就是二维表,其中表中的行、列次序并不重要

行row:表中的每一行,又称为一条记录或元组

列column:表中的每一列,称为属性或字段或域

主键primary key:用于唯一确定一个记录的字段,一张表只有一个主键,可以有多个外键

域domain:属性的取值范围,如:性别只能是"男"和"女"两个人,人类的年龄只能0-150

联系类型:一对一联系(1:1)、一对多联系(1:n)外键、多对多联系(n:n)三张表。

数据库的编译安装:

#创建一个目录/data/

root@Node1 \~\]#:mkdir /data ; cd /data/ #把源码包拖进来。 \[root@Node1 data\]#:ls mysql-boost-5.7.20.tar.gz #解压 \[root@Node1 data\]#:tar xf mysql-boost-5.7.20.tar.gz \[root@Node1 data\]#:ls mysql-5.7.20 mysql-boost-5.7.20.tar.gz \[root@Node1 data\]#:cd /data/mysql-5.7.20/ #安装依赖包 \[root@Node1 mysql-5.7.20\]#:yum install -y ncurses-devel autoconf cmake \[root@Node1 mysql-5.7.20\]#:yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel #新建一个用户mysql,用于管理mysql \[root@Node1 mysql-5.7.20\]#:useradd -M -s /sbin/nologin mysql #编译安装: \[root@Node1 mysql-5.7.20\]#:cmake \\ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \\ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \\ -DSYSCONFDIR=/etc \\ -DSYSTEMD_PID_DIR=/usr/local/mysql \\ -DDEFAULT_CHARSET=utf8 \\ -DDEFAULT_COLLATION=utf8_general_ci \\ -DWITH_INNOBASE_STORAGE_ENGINE=1 \\ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \\ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \\ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \\ -DMYSQL_DATADIR=/usr/local/mysql/data \\ -DWITH_BOOST=boost \\ -DWITH_SYSTEMD=1 \[root@Node1 mysql-5.7.20\]#:make -j4 #编译,4核。这里等待时间较长,约20分钟 \[root@Node1 mysql-5.7.20\]#:make install

数据库安装成功。给数据库mysql用户权限

#数据库目录进行权限调整

root@localhost mysql-5.7.20\]#:chown -R mysql:mysql /usr/local/mysql/ #建立调整配置文件 \[root@localhost mysql-5.7.20\]#:vim /etc/my.cnf \[client

port = 3306

default-character-set=utf8

socket = /usr/local/mysql/mysql.sock

mysql

port = 3306

default-character-set=utf8

socket = /usr/local/mysql/mysql.sock

mysqld

user = mysql

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE

USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR

FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES #这里是一行

#修改配置文件权限

root@localhost mysql-5.7.20\]#:chown -R mysql:mysql /etc/my.cnf #设置环境变量 \[root@localhost mysql-5.7.20\]#:echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' \>\> /etc/profile \[root@localhost mysql-5.7.20\]#:echo 'export PATH' \>\> /etc/profile \[root@localhost mysql-5.7.20\]#:source /etc/profile #初始化数据库,相对路径 \[root@localhost mysql-5.7.20\]#:cd /usr/local/mysql/ \[root@localhost mysql\]#:bin/mysqld \\ --initialize-insecure \\ --user=mysql \\ --basedir=/usr/local/mysql \\ --datadir=/usr/local/mysql/data #ls看一下,就会有一个data文件夹 #准备systemctl配置文件 \[root@localhost mysql\]#:cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system \[root@localhost mysql\]#:systemctl daemon-reload \[root@localhost mysql\]#:systemctl start mysqld #可以查看状态,是否启动 \[root@localhost mysql\]#:systemctl status mysqld #修改数据库密码 \[root@localhost mysql\]#:mysqladmin -u root -p password "abc123" #直接回车 #登录数据库: \[root@localhost mysql\]#:mysql -uroot -p"abc123" ![](https://img-blog.csdnimg.cn/direct/5f1644aad26f496c8c2deb9e4170827e.png) 登录成功! ctrl + D退出登录 --end---

DDL和DML:以分号结尾;

1.显示所有数据库:show databases;

2.创建数据库:create database db1;

查看:多了一个数据库,其他的四个是系统中自带的数据库

3.创建表:

创建一个学生表student,包括学号ID,姓名name,性别sex,年龄age,电话号码phone,邮箱email。其中学号ID为int型,设置为主键。电话号码最长不超过11位,不为空。邮箱不超过30位,唯一。创建表要先进入数据库:use db1;

create table student (

id int primary key,

name varchar(10),

sex char(1),

age varchar(3),

phone varchar(11) not null,

email varchar(30) unique

);

Query OK, 0 rows affected (0.00 sec)

4.添加字段:

查看表结构:desc student;

如果再添加一个字段,使用alter,add添加。如,添加班级class,字符型,最长为10位。

alter table student add class varchar(10) not NULL;

5.修改字段名:

如果修改字段名:使用change修改。

如果将class修改成bj,语句:alter table student change class bj varchar(10) not NULL;

修改成功:

6.修改字段约束:

在改字段名的时候也可以指定新名字的字段约束,如将class改成bj并直接将varchar改成char。

如果在不修改字段名的情况下,直接修改字段约束:使用alter .. modify

alter table student modify bj char(5);

7.删除字段:

删除字段:使用alter ..drop:

如将bj字段删除掉:alter table student drop bj;

8.显示表:

必须use进入到一个数据库中,才能显示表:

show tables; 只创建了一张表student。

9.删除数据库:

通过语句:drop database db1;

db1的表已删除了。

---end---

相关推荐
数据智能老司机4 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机5 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿5 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
无名之逆5 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s9123601015 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机5 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
hzulwy6 小时前
Redis常用的数据结构及其使用场景
数据库·redis
程序猿熊跃晖6 小时前
解决 MyBatis-Plus 中 `update.setProcInsId(null)` 不生效的问题
数据库·tomcat·mybatis
Three~stone7 小时前
MySQL学习集--DDL
数据库·sql·学习
Qi妙代码7 小时前
MYSQL基础
数据库·mysql·oracle