MySQL 数据库--SQL 语句(一)
一、准备
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 语句(一)相关推荐
- mysql数据库sql语句大全
mysql sql语句大全 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql se ...
- Mysql数据库Sql语句执行效率-Explain
为什么80%的码农都做不了架构师?>>> Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语 ...
- Mysql 数据库 -------- SQL语句进阶查询 ------- 后部分
Mysql ---- SQL高级查询 连接查询 内连接 外连接 数据库函数 数学函数 聚合函数(给数据表用的) 字符串函数(字符串用''格式) 日期时间函数 存储过程 创建存储过程 创建存储过程中的传 ...
- MySql数据库SQL语句小结
数据库概述 什么是数据库? 什么是关系型数据库? 数据库相关概念 什么是SQL语言? 连接mysql服务器 数据库及表操作 创建.删除.查看数据库 创建.删除.查看表 新增.更新.删除表记录 查询表记 ...
- Java菜鸟补给站---MySQL数据库 SQL 语句补充( 一 )
目录 SQL 语句 truncate 语句 不属于DML语句 1>作用 截断名 2>语法: truncate table 表名 3>和 delete 语句的区别 对于自增长字段,使用 ...
- mySQL数据库Sql语句执行效率检查--Explain命令
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...
- MySQL数据库 sql语句的简单入门学习
初步学习MySQL后的一些总结 MySQL简介 MySQL在过去由于性能高.成本低.可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中.随着MySQL的不断成熟, ...
- Mysql数据库sql语句
目录 一.MySQl概述 关系型数据库(RDBMS) 二.SQL 2.3.DDL 2.4.DML 2.5.DQL 2.6.DCL 一.MySQl概述 关系型数据库(RDBMS) 概念:建立在关系模型基 ...
- MySQL数据库---SQL语句优化及性能优化
文章目录 mysql的架构图 mysql的执行过程 sql语句执行计划 索引失效的情况 mysql性能调优: 分库分表 读写分离---主从复制 mysql的架构图 大致分为4层:连接层.服务层.引擎层 ...
最新文章
- 程序员福音-定时提醒bat
- python语言标识符首字符不能是_Python语言标识符的命名规定,首字符不能是( )...
- 【翻译】TCP backlog在Linux中的工作原理
- 027_JavaScript数组迭代
- 最全 Prometheus 踩坑集锦
- poj 1218(经典开关问题,模拟)
- java-HashMap源码学习
- JAVA学习笔记--类型转换(父类子类 Object 基本类型 String) 拆装箱 包装类
- python画窗口_pyqt中图案如何画在子窗口上
- bigdecimal 减_市市场监管局多措并举推进高频事项“减时效”
- OSB格式(REST)转化(XML到JSON,JSON到XML)
- Atitit 关于建立知识库体系的方案
- word空白下划线怎么打出来
- ANDROID ROOT FIDDLER HTTPS 抓包
- 史上最全Python快速入门教程
- 黑龙江伊春现受伤雄性东北虎 目前已被成功救治
- HC74h595 串行输出再进行串口输出(串行通信嵌套)已测试成功。
- 人工智能的春天来了!Tesra超算网络,助力AI开发!
- 红队免杀培训第一章-不可执行的shellcode
- Ubuntu安装后MTK系列网卡无法开启wifi和蓝牙的部分解决方式