一、准备

1.源码编译安装 MySQL

必须先准备好软件包至/opt目录下

  • 软件包资源传送门:百度网盘 请输入提取码
  • 提取码:u4vw
#!/bin/bashsystemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#关闭防火墙(开机禁用)及安全访问策略yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
#安装 MySQL 环境依赖包useradd -M -s /sbin/nologin mysql
#创建运行用户cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz
#解压软件包cd 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_EXTRA_CHARSETS=all \
-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
#配置软件模块make -j 4 && make install
#编译安装(时间较长!)echo '[client]
port = 3306
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
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1sql_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' > /etc/my.cnf
#修改mysql配置文件
chown -R mysql.mysql /usr/local/mysql/
chown mysql.mysql /etc/my.cnf
#更改mysql安装目录和配置文件的属主属组echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile
#设置路径环境变量cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#初始化数据库cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
#添加mysql系统服务netstat -anpt | grep 3306
#检查端口,服务是否正常开启ln -s /usr/local/mysql/bin/* /usr/local/sbin
  • 执行脚本
. mysql.sh
#静静等待即可,主要是编译安装的时间较长
mysqladmin -u root -p password "123123"
#修改mysql登录密码,输入后直接再回车即可mysql -u root -p
#输入密码后登录
grant all privileges on *.* to 'root'@'%' identified by '123123';
#授权远程登录,密码为'123123'show databases;
#查看数据库结构
quit
#退出数据库mysql -uroot -p123123
#可直接登录

2.创建两个表以作例子

mysql -uroot -p123123create database school;
#创建库use school;
create table class01(id int(4),name char(10),number char(11));
create table class02(id int(4),name char(10),number char(11));
#创建表desc class01;
desc class02;
#查看表结构

insert into class01 values (1,'ghr1','111111','80');
insert into class01 values (2,'ghr2','222222','90');
insert into class01 values (3,'ghr3','333333','80');
insert into class01 values (4,'ghr4','444444','60');
#在表一中插入数据
select * from class01;
#查看表中的所有数据

insert into class02 values(1,'ghr5','55555','80');
insert into class02 values(2,'ghr6','66666','85');
insert into class02 values(3,'ghr3','123','65');
insert into class02 valuer(4,'ghr4','1234','75');
select * from class02;

二、SQL 语句高阶运用

1.SELECT

  • 显示表格中一个或数个字段的所有资料
  • 用法:
SELECT 字段 FROM 表名例:
select name from class01;
select money from class02;

2.DISTINCT

  • 不显示重复的资料,及去重
  • 用法:
ELECT DISTINCT 字段 FROM 表名例:
select distinct money from class01;
select distinct money from class02;

3.WHERE

  • 有条件查询
  • 用法
SELECT 字段 FROM 表名 WHERE 条件例:
select name from class01 where number > 300000;
select money from class02 where id = 4;
select number from class01 where money < 85;

4.AND、OR

  • 且和或
  • 用法:
SELECT 字段 FROM 表名 WHERE 条件1 [AND|OR] (条件2);例:
select money from class02 where money >60;
select money from class02 where money > 60 and money <80;
select money from class02 where money > 60 and money < 80 or name = 'ghr5';

5.IN

SELECT 字段 FROM 表名 WHERE 字段 IN ('值1','值2',...);例:
select name,money from class02 where money in (85,65);
select money,date from class02 where money in (select money from class01);

6.BETWEEN

  • 显示两个值范围内的资料
  • 用法:
SELECT 字段 FROM 表名 WHERE 字段 BETWEEN '值1' and '值2';例:
select * from class02 where money between 70 and 80;
select * from class02 where money between 65 and 85;

7.通配符(LIKE)

  • 通常通配符都是跟LIKE一起使用
  • %:百分号表示零个、一个或多个字符
  • _:下划线表示单个字符
  • LIKE:用于匹配模式来查找资料
  • 用法:
SELECT 字段 FROM 表名 WHERE 字段 LIKE ‘模式’;例:
select * from class02 where name LIKE 'g_r5';
select * from class02 where name LIKE '%6';

8.ORDER BY

  • 按关键字排序
  • 用法:
SELECT 字段 FROM 表名 [WHERE 条件] ORDER BY 字段 [ASC,DESC];
#ASC:按照升序进行排序,默认的排序方式
#DESC:按照降序进行排序例:
select * from class01 order by money desc;
select * from class01 order by money asc;

select id,money from class01 order by money asc;
select id,money from class01 where money > 60 order by money asc;

三、函数

1.数学函数

  • 具体用法如下表所示:
函数 解释
abs(x) 返回 x 的绝对值
rand() 返回 0 到 1 的随机数
mod(x,y) 返回 x 除以 y 以后的余数
power(x,y) 返回 x 的 y 次方
round(x) 返回离 x 最近的整数
round(x,y) 保留 x 的 y 位小数四舍五入后的值
sqrt(x) 返回 x 的平方根
truncate(x,y) 返回数字 x 截断为 y 位小数的值
ceil(x) 返回大于或等于 x 的最小整数
floor(x) 返回小于或等于 x 的最大整数
greatest(x1,x2…) 返回集合中最大的值
east(x1,x2…) 返回集合中最小的值
  • 例:
select abs(-1),rand(),mod(5,3),power(2,3),round(1.567);
select sqrt(9),truncate(1.2345,2),ceil(1.3);
select floor(1.7),greatest(1,2,3,4,5),least(1,2,3,4,5);

2.聚合函数

函数 解释
avg() 返回指定列的平均值
count() 返回指定列中非 NULL 值的个数
min() 返回指定列的最小值
max() 返回指定列的最大值
sum(x) 返回指定列的所有值之和

select avg(money) from class01;
select count(money) from class01;
select min(money) from class01;
select max(money) from class01;
select sum(money) from class01;

3.字符串函数

函数 解释
trim() 返回去除指定格式的值
concat(x,y) 将提供的参数 x 和 y 拼接成一个字符串
substr(x,y) 获取从字符串 x 中的第 y 个位置开始的字符串,跟substring()函数作用相同
substr(x,y,z) 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
length(x) 返回字符串 x 的长度
replace(x,y,z) 将字符串 z 替代字符串 x 中的字符串 y
upper(x) 将字符串 x 的所有字母变成大写字母
lower(x) 将字符串 x 的所有字母变成小写字母
left(x,y) 返回字符串 x 的前 y 个字符
right(x,y) 返回字符串 x 的后 y 个字符
repeat(x,y) 将字符串 x 重复 y 次
space(x) 返回 x 个空格
strcmp(x,y) 比较 x 和 y,返回的值可以为-1,0,1
reverse(x) 将字符串 x 反转
  • [位置]:的值可以为 LEADING (起头), TRAILING (结尾), BOTH (起头及结尾)
  • [要移除的字符串]:从字串的起头、结尾,或起头及结尾移除的字符串;缺省时为空格
  • 例:
select trim(leading 'be' from 'beijing');
select trim(trailing '--' from 'beijing--');
select trim(both '--' from '--shenzhen--');

select concat(id,name) from class01 where name = 'ghr1';
select concat(id,' ',name) from class01 where name = 'ghr1';

select substr(money,1,2) from number;
select substr(money,1,3) from number;

select length(name) from class01;
select length(number) from class01;

select replace(name,'ghr1','ghr13') from class01;
select replace(name,'ghr2','ghr14') from class01;

select upper(name) from class01;
select upper(name) from class02;

select lower('ABCDERG');

select left(number,2) from class02;
select right(number,3) from class02;

select repeat(number,2) from class02;
select repeat(number,3) from class02;

select space(2);

select strcmp(100,200);
select strcmp(200,100);
select strcmp(200,200);

select reverse(name) from class02;
select reverse(money) from class02;

4.’||'连接符

  • 如果在 mysql 的配置文件中,sql_mode 开启开启了 PIPES_AS_CONCAT,则"||"视为字符串的连接操作符而非或运算符
  • 和字符串的拼接函数 Concat 相类似,这和 Oracle 数据库使用方法一样的

mysql -uroot -p123123
use school;select name || ' ' || number from class02 where name like 'ghr%';
select number || ' ' || money || ' ' || id from class01;

5.GROUP BY

  • BY 后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的
  • GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的列,必须出现在 GROUP BY 后面
  • 用法:
select id,name,sum(money) from class02 group by name;#聚合函数按找group by 后面的字段来判断,name字段若是相同的数值则会将money字段内的内容相加在输出

6.别名

  • 用于字段别名与表格别名
  • 用法:
SELECT “表格別名”.“字段1” [AS] “字段1別名” FROM “表格名” [AS] “表格別名”;例:
select RE.region  AS reg, count(site) from REGION AS RE group by reg;select FA.site AS si,sum(money),count(money),date AS da from FARE AS FA group by si;

8.子查询

  • 连接表格,在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句
#可以是符号的运算符
#例:=、>、<、>=、<=#也可以是文字的运算符
#例:LIKE、IN、BETWEEN例:
select A.site,region from REGION AS A where A.site in(select B.site from FARE AS B where money<2000);select B.site,money,date from FARE AS B where site in(select A.site from REGION AS A where region = 'north');

MySQL 数据库--SQL 语句(一)相关推荐

  1. mysql数据库sql语句大全

    mysql sql语句大全 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql se ...

  2. Mysql数据库Sql语句执行效率-Explain

    为什么80%的码农都做不了架构师?>>>    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语 ...

  3. Mysql 数据库 -------- SQL语句进阶查询 ------- 后部分

    Mysql ---- SQL高级查询 连接查询 内连接 外连接 数据库函数 数学函数 聚合函数(给数据表用的) 字符串函数(字符串用''格式) 日期时间函数 存储过程 创建存储过程 创建存储过程中的传 ...

  4. MySql数据库SQL语句小结

    数据库概述 什么是数据库? 什么是关系型数据库? 数据库相关概念 什么是SQL语言? 连接mysql服务器 数据库及表操作 创建.删除.查看数据库 创建.删除.查看表 新增.更新.删除表记录 查询表记 ...

  5. Java菜鸟补给站---MySQL数据库 SQL 语句补充( 一 )

    目录 SQL 语句 truncate 语句 不属于DML语句 1>作用 截断名 2>语法: truncate table 表名 3>和 delete 语句的区别 对于自增长字段,使用 ...

  6. mySQL数据库Sql语句执行效率检查--Explain命令

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...

  7. MySQL数据库 sql语句的简单入门学习

    初步学习MySQL后的一些总结 MySQL简介 MySQL在过去由于性能高.成本低.可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中.随着MySQL的不断成熟, ...

  8. Mysql数据库sql语句

    目录 一.MySQl概述 关系型数据库(RDBMS) 二.SQL 2.3.DDL 2.4.DML 2.5.DQL 2.6.DCL 一.MySQl概述 关系型数据库(RDBMS) 概念:建立在关系模型基 ...

  9. MySQL数据库---SQL语句优化及性能优化

    文章目录 mysql的架构图 mysql的执行过程 sql语句执行计划 索引失效的情况 mysql性能调优: 分库分表 读写分离---主从复制 mysql的架构图 大致分为4层:连接层.服务层.引擎层 ...

最新文章

  1. 程序员福音-定时提醒bat
  2. python语言标识符首字符不能是_Python语言标识符的命名规定,首字符不能是( )...
  3. 【翻译】TCP backlog在Linux中的工作原理
  4. 027_JavaScript数组迭代
  5. 最全 Prometheus 踩坑集锦
  6. poj 1218(经典开关问题,模拟)
  7. java-HashMap源码学习
  8. JAVA学习笔记--类型转换(父类子类 Object 基本类型 String) 拆装箱 包装类
  9. python画窗口_pyqt中图案如何画在子窗口上
  10. bigdecimal 减_市市场监管局多措并举推进高频事项“减时效”
  11. OSB格式(REST)转化(XML到JSON,JSON到XML)
  12. Atitit 关于建立知识库体系的方案
  13. word空白下划线怎么打出来
  14. ANDROID ROOT FIDDLER HTTPS 抓包
  15. 史上最全Python快速入门教程
  16. 黑龙江伊春现受伤雄性东北虎 目前已被成功救治
  17. HC74h595 串行输出再进行串口输出(串行通信嵌套)已测试成功。
  18. 人工智能的春天来了!Tesra超算网络,助力AI开发!
  19. 红队免杀培训第一章-不可执行的shellcode
  20. Ubuntu安装后MTK系列网卡无法开启wifi和蓝牙的部分解决方式

热门文章

  1. 如何使用Lighthouse性能检测工具
  2. 《炉石传说》架构设计赏析(5):卡牌 技能的静态数据组织
  3. 哪些适合跑步专用的耳机、跑步耳机前十最好排行
  4. ARM处理器中CP15协处理器的寄存器1376698090
  5. 两台计算机只换硬盘可以吗,两台电脑互换硬盘可以吗
  6. 今天下载了支持win7的fineprint打印模拟软件
  7. 李卓豪:网易数帆数据中台逻辑数据湖的实践
  8. source insight 的破解及使用
  9. C#自定义PropertyGrid属性
  10. keil MDK启动文件分析---基于LPC2100系列(其实都是相通的)