MySQL 简介及SQL 语句
MySQL 简介及SQL 语句
- 一、数据库概述
- 1.数据库的分类
- 1)区别
- 2.MySQL 概述
- 3.MySQL 存储原理
- 二、部署 MySQL 数据库
- 1.安装 MySQL 数据库
- 2.优化调整 MySQL 程序
- 3.初始化 MySQL 数据库服务
- 4.登录验证
- 三、SQL 语句操作——增删改查
- 1.SQL 语句分类
- 2.数据记录类型
- 3.表相关 SQL
- 4.简单操作
一、数据库概述
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
1.数据库的分类
- 关系型数据库:Oracle、DB2、SQL Server、MySQL 等。
- 非关系型数据库:Memcached、MongoDB 和 Redis 等。
1)区别
关系型数据库:
- 安全,因为是将数据保存到磁盘之中,所以基本不可能出现丢失数据的情况。
- 但是比较浪费时间,因为是使用二维表的形式存储数据的。
非关系型数据库:
- 存储数据的效率比较高,因为所有的非关系型数据库都是尽可能的将数据存放到内存当中。
- 但不是特别安全,如突然断电时会导致数据丢失。
2.MySQL 概述
- MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。
- 是一个真正的多用户、多线程 SQL 数据库。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。
- MySQL 是以一个 C/S 结构实现的,它由一个服务器守护程序
mysqld
和很多不同的客户程序和库组成。 - SQL 是一种标准化的语言,它使得存储、更新和存取信息更容易。
3.MySQL 存储原理
MySQL 整体架构:
- 连接池:负责和客户端进行连接,连接池可以同时处理多个数据库请求。同时还有 SSL 的安全概念,可以确保连接是安全的。
- SQL 接口:当 SQL 语句进入 MySQL 后,会先到 SQL 接口中,将传过来的 SQL 语句拆散,将底层的结果封装成 SQL 的数据格式。
- 解析器:负责将 SQL 语句进行拆分,如果语句有问题那么就返回错误,如果没问题就继续向下执行。
- 优化器:对 SQL 查询的结果优化处理,产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返回结果。
- 缓存:对要查询的 SQL 语句进行
hash
缓存,如果下一次是相同的查询语句,则在 SQL 接口之后直接返回结果。 - 存储引擎:MySQL 有很多种存储引擎,每一种存储引擎有不同的特性,它们负责组织文件的存放形式,位置,访问文件的方法等等。
- 文件系统:真正存放物理文件的单位。
二、部署 MySQL 数据库
准备工作:
主机名 | 操作系统 | IP 地址 | 使用版本 | 硬件 |
---|---|---|---|---|
MySQL | CentOS 7.4 | 192.168.1.1 |
mysql-5.7.12.tar.gz boost_1_59_0.tar.gz
|
内存:4G ,CPU 核心数:2
|
- 注意:
boost
软件包需要在 Windows 系统中下载:下载地址
1.安装 MySQL 数据库
[root@MySQL ~]# tar zxf boost_1_59_0.tar.gz
[root@MySQL ~]# mv boot_1_59_0 /usr/local/boost
[root@MySQL ~]# wget http://dev.mysql.com/Downloads/MySQL-5.7/mysql-5.7.12.tar.gz
[root@MySQL ~]# yum -y install gcc gcc-c++ ncurses bison libgcrypt perl cmake ncurses-devel
[root@MySQL ~]# groupadd mysql
[root@MySQL ~]# useradd -r -g mysql mysql
[root@MySQL ~]# tar zxf mysql-5.7.12.tar.gz -C /usr/src/
[root@MySQL ~]# cd /usr/src/mysql-5.7.12/ #当编译多次时. 需要删除CMAKE的缓存. rm -rf /usr/src/mysql-5.7.12/CMakeCache.txt
[root@MySQL mysql-5.7.12]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost \
-DSYSCONFDIR=/etc
[root@MySQL mysql-5.7.12]# make -j `cat /proc/cpuinfo | grep processor | wc -l`
[root@MySQL mysql-5.7.12]# make install
注解:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
:MySQL 安装的根目录。-DMYSQL_DATADIR=/usr/local/mysql/data
:MySQL 数据库文件存放目录。-DDEFAULT_CHARSET=utf8
:设置默认字符集为utf8
。-DDEFAULT_COLLATION=utf8_general_ci
:设置默认字符校对。-DMYSQL_TCP_PORT=3306
:MySQL 的监听端口。-DMYSQL_USER=mysql
:MySQL 用户名。-DWITH_MYISAM_STORAGE_ENGINE=1
:安装 MySQL 的myisam
数据库引擎。-DWITH_INNOBASE_STORAGE_ENGINE=1
:安装 MySQL 的innodb
数据库引擎。-DWITH_ARCHIVE_STORAGE_ENGINE=1
:安装 MySQL 的archive
数据库引擎。-DWITH_BLACKHOLE_STORAGE_ENGINE=1
:安装 MySQL 的blackhole
数据库引擎。-DWITH_MEMORY_STORAGE_ENGINE=1
:安装 MySQL 的memory
数据库引擎。-DENABLE_DOWNLOADS=1
:编译时允许自主下载相关文件。-DDOWNLOAD_BOOST=1
:允许下载boost
。-DWITH_BOOST=/usr/local/boost
:指定系统中存储的boost
目录。-DSYSCONFDIR=/etc
:MySQL 配置文件所在目录。
以下模块自行配置即可:
-DWITH_READLINE=1
:MySQL的readline library
。-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock
:MySQL 的通讯目录。-DENABLED_LOCAL_INFILE=1
:启动加载本地数据。-DWITH_PARTITION_STOPAGE_ENGINE=1
:启动 MySQL 的分区存储结构。-DEXTRA_CHARSETS=all
:使用 MySQL 支持所有的扩展字符。-DWITH_DEBUG=0
:禁止调试模式。-DMYSQL_MAINTAINER_MODE=0
:禁止 MySQL 维护器特定的开发环境。-DWITH_SSL:STRING=bundled
:通讯时支持 SSL 协议。-DWITH_ZLIB:STRING=bundled
:允许使用zlib library
。
2.优化调整 MySQL 程序
[root@MySQL ~]# chown -R mysql:mysql /usr/local/mysql
[root@MySQL ~]# cp /usr/src/mysql-5.7.12/support-files/my-default.cnf /etc/my.cnf
[root@MySQL ~]# cp /usr/src/mysql-5.7.12/support-files/mysql.server /etc/init.d/
[root@MySQL ~]# chmod +x /etc/init.d/mysql.server
[root@MySQL ~]# cat <<END > /usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysqldapi
After=network.target[Service]
Type=forking
PIDFile=/usr/local/mysql/logs/mysqld.pid
ExecStart=/etc/init.d/mysql.server start
ExecReload=/etc/init.d/mysql.server restart
ExecStop=/etc/init.d/mysql.server stop
PrivateTmp=Flase[Install]
WantedBy=multi-user.target
END
[root@MySQL ~]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile #设置环境变量
[root@MySQL ~]# source /etc/profile #使其生效
注解:
PrivateTmp=Flase
:此选项必须关闭,不然 MySQL 连接文件mysql.sock
会默认生成在/tmp/.../...
目录中。- 将该配置项关闭后,文件会正常生成在
/tmp/mysql.sock
文件中。
3.初始化 MySQL 数据库服务
[root@MySQL ~]# mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
注解:
--initialize-insecure
:禁用 MySQL 的密码策略(密码复杂性等)。--initializeaize
:开启后会在mysqld.log
文件中自动生成 MySQL 密码。--user=mysql
:运行的账户。--basedir=/usr/local/mysql
:MySQL 的安装位置。--datadir=/usr/local/mysql/data
:MySQL 数据库中数据的物理存放路径。
[root@MySQL ~]# cat <<END > /etc/my.cnf
[mysqld] # 声明区域
basedir = /usr/local/mysql # MySQL 的安装位置
datadir = /usr/local/mysql/data # MySQL 的物理文件存放位置
port = 3306 # MySQL 服务监听的端口
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # MySQL 的模式
character_set_server=utf8 # 服务器使用的字符集
init_connect='SET NAMES utf8' # 初始化连接都设置为 utf8 字符集
log-error=/usr/local/mysql/logs/mysqld.log # 指定日志文件位置
pid-file=/usr/local/mysql/logs/mysqld.pid # 指定运行服务所产生的 PID 文件位置
skip-name-resolve # 跳过 MySQL 的域名反向解析
END
[root@MySQL ~]# mkdir /usr/local/mysql/logs # 创建日志存放位置
[root@MySQL ~]# chown mysql:mysql /usr/local/mysql/logs/ # 赋权
[root@MySQL ~]# systemctl start mysqld # 开启 MySQL 数据库
[root@MySQL ~]# systemctl enable mysqld # 设置 MySQL 开机自启
[root@MySQL ~]# netstat -anpt | grep 3306
4.登录验证
[root@MySQL ~]# mysqladmin -u root password '123123' # 创建 MySQL 数据库密码
[root@MySQL ~]# mysql -u root -p 123123 # 登录 MySQL 数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)mysql> exit
Bye
MySQL 5.7 安装完成之后,默认的 4 个数据库:
information_schema
:是一个信息数据库,这个数据库保存了所有数据库信息。如:数据库名、数据库表、访问权限等。mysql
:是一个系统库,主要负责存储数据库的用户,权限设置等。performance_schema
:是 MySQL 5.5 新增的一个性能优化引擎。sys
:库中数据与performance_schema
一致,但是把performance_schema
中内容复杂度降低了。
三、SQL 语句操作——增删改查
1.SQL 语句分类
- DDL:数据定义语言,用来建立数据库,数据对象和定义其列。如
create
alter
drop
。 - DML:数据操纵语言,用来查询、插入、删除、修改数据库中的数据。如
select
insert
update
delete
。 - DCL:数据控制语言,用来控制数据库组件的存取许可,存取权限等。如
commit
rollback
grant
revoke
。
2.数据记录类型
日期类型:
小数类型:
字符串类型:
3.表相关 SQL
- 表是数据库中的数据组成的单位,类似于 Java 中的类,每个字段都有对应的数据类型。
创建表的原理:
- 在客户端中写完创建表的 SQL 语句后客户端会把 SQL 语句交给 DBMS(MySQL);
- DBMS(MySQL) 解析后会在数据库中创建语句中的表和表中字段。
表的引擎:
- InnoDB:支持数据库的高级处理包括事务外键等。(表默认的引擎就是 InnoDB)
- Myisam:只支持数据的基本存储。
创建表时指定表的字符集和引擎
格式:create table person (id int,name varchar(10)) engine=myisam charset=utf8;
- 修改表的名字:
rename table 旧表名 to 新表名
4.简单操作
[root@localhost ~]# mysql -uroot -p123123 #登录 MySQL 数据库
mysql> create database Coco; #创建一个数据库名为 Coco
mysql> show create database Coco; #查看 Coco 数据库详情
mysql> use Coco; #切换到 Coco 库中
mysql> create table 成绩表 (姓名 varchar(11),年龄 int,出生日期 date,身份证号 char(18) not null,成绩 float,primary key (身份证号));
mysql> describe 成绩表; #查看成绩表数据结构
注解:
varchar
:可变长字符串类型。int
:整数类型。date
:时间类型。char
:固定字符串类型。not null
:不允许为空。float
:浮点类型。primary key
:设置主键,具有唯一性。
mysql> insert into 成绩表 values("张三",18,"2003-01-01",10086,85.5);
mysql> insert into 成绩表 values("李四",21,"2000-02-02",20086,85.5);
mysql> insert into 成绩表 values("王五",23,"1998-03-03",30086,86.5);
mysql> select * from 成绩表;
在成绩表最后添加字段:
mysql> alter table 成绩表 add 性别 char(8);
在成绩表最前面添加:
mysql> alter table 成绩表 add ID int first;
在某个字段后面添加:
mysql> alter table 成绩表 add 籍贯 varchar(20) after 出生日期;
删除表中指定字段:
mysql> alter table 成绩表 drop 籍贯;
修改成绩表字段名和类型:
mysql> alter table 成绩表 change 姓名 name char(14);
修改成绩表类型和顺序:
mysql> alter table 成绩表 modify name varchar(11) first;
- 如想修改到某个位置,使用
alter table 成绩表 modify 字段名 新字段类型 after 年龄
(就是将字段修改到年龄后面)。
修改成绩表引擎和字符集:
mysql> alter table 成绩表 engine=myisam charset=utf8;
MySQL 简介及SQL 语句相关推荐
- MySQL数据库的SQL语句
MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...
- MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率
目录 一. 前文简介 二. MYSQL简介 2.1 什么是数据库 2.2数据库地特点以及作用 三.MYSQL基础操作(SQL语句) 3.1连接数据库 3.2数据库的语法特点,以及数据库必会操作 数据操 ...
- MySQL数据库:SQL语句
MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...
- mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...
- php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例
这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...
- 1.MySQL数据库 2.SQL语句
01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...
- mysql 执行顺序 SQL语句执行顺序分析
最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...
- MySQL数据库高级SQL语句(三)
MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...
- mysql怎么写sql语句_Navicat如何写sql语句
sql是操作数据库中数据的语句,在不同的数据库中会略有不同.Navicat for MySQL是一款很方便的MySQL客户端工具,能够很好的提供操作数据库可视界面,在同类型的软件中,占有极高的市场份额 ...
最新文章
- 深入理解javascript中的立即执行函数(function(){…})()
- 矢量对比_「插画原画必学教程」ps入门——03 图层、位图矢量图、调色
- 2.5 学习词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授
- 成功解决Exception unhandled OSError cannot open resource File: F:\Program Files\Python\Python36\Lib\si
- android 录屏自动运行,app自动化--Android通过adb录屏
- [当人工智能遇上安全] 7.基于机器学习的安全数据集总结
- vaadin教程_Vaadin教程
- Chialisp是什么
- 最好用的数据可视化神器,没有之一
- 微软职位内部推荐-Software Development Engineering II
- Python反转链表
- 酒店客房管理系统总结
- Oracle数据库(五)用户 ,角色,权限
- 通用的产品功能设计方法
- 浮点数与IEEE754
- jQuery赋值checked的几种写法:
- 查看linux下程序或者动态库到底依赖哪些so动态库以及对应的版本
- 书——《你的生命有什么可能》
- html跳转京东app,h5跳转到京东购买页的脚本
- 微软XP体系今日中止效劳 建议用户赶快晋级
热门文章
- uniapp 简单注册页面(已优化)
- 单数行一个颜色,双数行一个颜色
- 高分文献解读|ceRNA绝对不过时,教你最牛的生信套路
- Eclipse 重新定位svn资源库报错 Invalid relocation svn: Invalid source URL prefix
- 分布式共识算法——Paxos算法(图解)
- pg_terminate_backend()运维改造--打印调用记录及被终止query文本
- 如何在操作系统中快速查询机器的序列号
- Webflux系列之反应式编程核心基础详解
- BaiduPCS-Go出现403 Forbidden错误解决方法
- MySQL日期和时间戳的转换