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---

相关推荐
NCIN EXPE3 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台3 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路3 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家4 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE4 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow124 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO4 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_743623924 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python
pele4 小时前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python