Linux系统架构-----MySQL基础概念与MySQL数据库的使用命令

目录

 

一.数据库的基本概念

二.非关系型数据库

三.MySQL数据库搭建

四.数据库的基本命令操作

五.SQL基本命令


一.数据库的基本概念

数据库的作用

  • 让数据可以持久化保存、具有高可靠性、高可用性、数据能够快速提取

数据库的存储类型

  • 关系型数据库:存储的数值,字符,字符串,布尔值。mysql(oracle)、sql server(微软)、oracle、db2(IBM)、access(微软office)、sybase

注:关系数据库是基于关系模型的数据库系统,它的基本概念来自于关系模型。关系模型建立在关系代数的理论基础之上,数据结构使用简单的二维数据表,可以用E-R图来直接表示,E-R图中包含了实体(数据对象)、关系和属性三个要素

  • 非关系数据库:存储的是图片,视频,语音。NOSQL(统称)、MongoDB、redis(内存数据库/缓存数据库)、memcache(内存数据库/缓存数据库)

注:redis和memcache的相同点:存储高热数据库;redis和memcache的不同点:redis可以做持久化保存,可以存储对象

数据库的基本概念

  • 数据:描述事物的符号记录,包括数字、文字、图形、图像、声音、档案记录等,以“记录”形式按统一的格式进行存储
  • 数据表:将不同的记录组织在一起,就形成了“表”,是用来存储具体数据的
  • 数据库:就是表的集合,存储数据的仓库,以一定的组织方式存储的相互有关的数据

二.非关系型数据库

非关系型数据库的介绍

  • 非关系数据库也被称为NoSQL,存储数据不以关系模型为依据,不需要固定的表格式,非关系型数据库作为关系数据库的一个补充,在日益快速发展的网站时代,发挥着高效率与高性能。
  • 非关系数据库的优点:数据库高并发读写的需求;对海量数据高效率存储与访问;数据库的高扩展性与高可用性的需求

非关系型数据库的存储方式

  • 键-值方式,以键为依据存储、删、改数据。
  • 列存储,将相关的数据存储在列族中
  • 文档的方式,数据库由一系列数据项组成,每个数据项都有名称与对应的值
  • 图形方式,实体为顶点,关系为边,数据保存为一个图形

非关系型数据库的产品

  • redis是一个以Key-value方式存储数据的,数据也是保存在内存中,但会定期将数据写入磁盘中
  • redis相对于memcached有以下特点:支持内存缓存、支持持久化、数据类型更多、支持群集分布式、支持队列

注:数据库前的缓存,使用session会话共享提高用户体验

 

三.MySQL数据库搭建

  • MySQL是Oracle旗下一款开源关系型数据库,遵守GPL协议,可以免费使用与修改
  • 具有以下特点:性能卓越、服务稳定、开源、无版权限制、成本低、多线程、多用户、基于C/S架构、安全可靠
  • 分为MySQL商业版和社区版
  • 安装MySQL-5.6版本的具体操作
##解压mysql-5.6版数据包
tar xzvf mysql-5.6.26.tar.gz -C /opt
##安装环境包
yum install -y ncurses-devel autoconf cmake

##安装必要功能模块
cd /opt/mysql-5.6.26
cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
##编译与安装
make && make install

##覆盖本机的数据库,和前面的配置文件的目录一致
cp support-files/my-default.cnf /etc/my.cnf

##优化服务控制
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld       
chkconfig --add /etc/init.d/mysqld
chkconfig  mysqld --level 35 on

##设置环境变量,将启动脚本放到系统中
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
echo $PATH

##添加mysql用户
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
##初始化
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql

ln -s /var/lib/mysql/mysql.sock  /home/mysql/mysql.sock

##修改启动脚本
#指明工作路径
basedir=/usr/local/mysql   
#数据存放位置  
datadir=/home/mysql

##启动服务
service mysqld start

##给MySQL用户创建密码
mysqladmin -u root -p password "abc123"

四.数据库的基本命令操作

  • 查看数据库列表的信息
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql>
  • 查看数据库中的数据表的信息
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
28 rows in set (0.00 sec)

mysql> 
  • 显示数据表的结构
mysql> describe student;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(4)   | NO   | PRI | NULL    |       |
| name  | char(10) | NO   |     | NULL    |       |
| age   | int(2)   | NO   |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> 

五.SQL基本命令

  • SQL语言,是结构化查询语言,在关系型数据库中充当标准语言,用于维护管理数据库,如数据的增删查改
  • SQL分类:DDL:数据定义语言;DML:数据操纵语言;DQL:数据查询语言;DCL:数据控制语言

DDL,数据定义语言

  • 创建数据库,create database 数据库名;
mysql> create database school;
  • 创建数据表,create table 表名(字段定义...)
mysql> use school
Database changed
mysql> create table student (id int(4) not null,name char(10) not null,age int(2) not null,primary key(id));

注:primary key 主键,具有唯一性,非空性;char,字符型;int ,整型

  • 删除库与表
#删除表
mysql>drop table school.student;

#删除库

mysql>drop database school;

DML:数据操纵语言

  • 使用insert ,插入新的数据
  • insert into student(id,name,age) values(“1001”,“张三”,“20”)
mysql> use school
Database changed
mysql> insert into student(id,name,age) values("1001","张三","20");
Query OK, 1 row affected (0.08 sec)

##查询表
mysql> select * from student;
+------+--------+-----+
| id   | name   | age |
+------+--------+-----+
| 1001 | 张三   |  20 |
+------+--------+-----+
1 row in set (0.01 sec)

mysql> 

  • 使用update ,替换原有数据
  • update 数据库名.表名 set 字段1=值1where 条件表达式
mysql> select * from student;
+------+--------+-----+
| id   | name   | age |
+------+--------+-----+
| 1001 | 张三   |  20 |
| 1002 | 李四   |  22 |
| 1003 | 王五   |  22 |
| 1004 | 赵六   |  19 |
+------+--------+-----+
4 rows in set (0.01 sec)

mysql> update student set name="田七" where id="1004";
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from student;
+------+--------+-----+
| id   | name   | age |
+------+--------+-----+
| 1001 | 张三   |  20 |
| 1002 | 李四   |  22 |
| 1003 | 王五   |  22 |
| 1004 | 田七   |  19 |
+------+--------+-----+
4 rows in set (0.00 sec)

mysql> 
  • 使用delete ,删除指定的数据
  • delete from 表名 where 条件表达式
mysql> select * from student;
+------+--------+-----+
| id   | name   | age |
+------+--------+-----+
| 1001 | 张三   |  20 |
| 1002 | 李四   |  22 |
| 1003 | 王五   |  22 |
| 1004 | 田七   |  19 |
+------+--------+-----+
4 rows in set (0.00 sec)

mysql> delete from student where name="张三";
Query OK, 1 row affected (0.01 sec)

mysql> select * from student;
+------+--------+-----+
| id   | name   | age |
+------+--------+-----+
| 1002 | 李四   |  22 |
| 1003 | 王五   |  22 |
| 1004 | 田七   |  19 |
+------+--------+-----+
3 rows in set (0.00 sec)

mysql> 

DQL:数据查询语言

  • select语句,用于从指定的表中查询符合条件的数据记录
  • select 字段1,字段2,... from 表名 where 条件表达式
  • 表示所有字段时可以用 * 表示
mysql> select * from student;
+------+--------+-----+
| id   | name   | age |
+------+--------+-----+
| 1002 | 李四   |  22 |
| 1003 | 王五   |  22 |
| 1004 | 田七   |  19 |
+------+--------+-----+
3 rows in set (0.00 sec)

mysql> select id,name from student where name="李四";
+------+--------+
| id   | name   |
+------+--------+
| 1002 | 李四   |
+------+--------+
1 row in set (0.00 sec)

mysql> 

DCL:数据控制语言

  • 设置用户权限(用户不存在时,则新建用户)
  • grant 权限列表 on 数据库名 表名 to 用户名@来源地址 [ identified by ‘密码’]

注:如果用户存在,则代表修改密码;如果用户不存在,则代表新建用户

  • 查看用户的权限
show grants for 用户名@来源地址
  • 撤销用户的权限
revoke 权限列表 on 数据库名.表名 from 用户名@来源地址
发布了94 篇原创文章 · 获赞 108 · 访问量 6389

猜你喜欢

转载自blog.csdn.net/qq_42761527/article/details/103803094
今日推荐