1. 基本常识

1.查询该linux系统安装的数据库mysql包:rpm -aq | grep mysql

2.启动mysql服务:systemctl start mysqld

3.查看mysql的服务进程是否启动:ps -ef | grep mysqld

4.Oracle数据库和mysql数据库的区别

  • Oracle只有有一个数据库(安装的时候指定的实例),数据库名就叫orcl,该数据库下有多个用户,如scott、hr等,每个用户下又有很多表。
  • Mysql只有一个用户,用户名就叫root,该用户下有很多数据库,每个库下又有很多表。

2. 基本操作

1. mysql服务

  • 重启Mysql服务:systemctl restart mysqld
  • 查看Mysql服务状态:systemctl status mysqld
  • 停止Mysql服务:systemctl stop mysqld
  • 启动Mysql服务:systemctl start mysqld

2. 操作

1、进入mysql

  • 启动Mysql服务进程:systemctl start mysqld
  • 进入mysql:mysql -uroot -pLxxwly@93

2、查看有哪些数据库

  • 查看:show databases;

3、创建删除一个数据库firstdb

  • 创建:create database firstdb;

  • 删除:drop database blog;

4、操作数据库firstdb

(1)进入数据库firstdb:use firstdb;

(2)查看有多少张表:show tables;

(3)创建一张表:create table t1(表名) (id varchar(20),name varchar(50));

(4)展示创建的表:show create table t1;

(5)查看表的字段:desc t1;

(6)向表中插入数据:insert into t1 values (‘0001’,’lxx’);

(7)查看这张表中的所有数据:select * from t1;

(8)按条件查:select * from t1 where id=’0002’

  • 还有条件的话,可以加and继续

(9)按条件查,满足包含l字母的:select * from t1 where name like “%l%”

  • 默认打印出全部,如果后面加limit 1,表示只打印一行

(10)机器localhost可以通过用户名first、密码为123进入数据库firstdb,对器所有的表进行操作:grant all on firstdb.* to first@’localhost’ identified by “123”;

(11)在客户端(服务器)192.168.88.93上面可以通过用户名first、密码为123进入数据库firstdb,对器所有的表进行操作:grant all on firstdb.* to first@’192.168.88.93’ identified by “123”;

注意:10和11在mysql8.0版本以上就不可以了,需要先创建用户

(12)先创建用户,在赋予权限:

  • create user first@’lxx’ identified by ‘Lxxwly@93’;

  • grant all on firstdb.* to first@’lxx’; ——>all改为select就表示只赋予查找的权限

  • mysql -hlxx -ufirst -pLxxwly@93 -P3306 ——–退出后,从linux终端进入

注意:flush privileges; —–>刷新权限,每次更改后,需要刷新权限

(13)删除数据库:drop database test_db;

(14)删除表:drop table test01;

(15)清空表内容:delete from test01;

(16)查看数据库字符集:show variables like '%char%';

(17)修改密码:mysqladmin -uroot -p password

3. 综合案例

1.创建一个学生表

1
create table student(id int, name varchar(20), chinese int, english int, math int);

2.插入数据

1
2
3
4
5
6
7
8
insert into student(id,name,chinese,english,math) values(1,'路飞',80,85,90);
insert into student(id,name,chinese,english,math) values(2,'索隆',90,95,95);
insert into student(id,name,chinese,english,math) values(3,'山治',80,96,96);
insert into student(id,name,chinese,english,math) values(4,'娜美',81,97,85);
insert into student(id,name,chinese,english,math) values(5,'乌索普',85,84,90);
insert into student(id,name,chinese,english,math) values(6,'罗宾',92,85,87);
insert into student(id,name,chinese,english,math) values(7,'乔巴',75,81,80);
insert into student(id,name,chinese,english,math) values(8,'甚平',77,80,79);

3.基础SQL

  • 查询表中所有学生的信息:select * from student;
  • 查询表中所有学生的姓名和对应的英语成绩:select name,english from student;
  • 过滤表中英语成绩重复的数据:select distinct english from student;
  • 计算每个人三科的总成绩,并使用别名:select english+chinese+math as 总分 from student;
  • 在所有学生英语分数上加10分:select name,english+10 from student;
  • 查询姓名为索隆的学生成绩:select * from student where name = '索隆';
  • 查询英语成绩大于90分的同学:select * from student where english > 90;
  • 查询总分大于250分的所有同学:select * from student where english+chinese+math> 250;
  • 查询英语分数在85-95之间的同学:
    • select * from student where english>=85 and english<=95;
    • select * from student where english between 85 and 95;
  • 查询数学分数为84,90,91的同学:
    • select * from student where math=84 or math=90 or math=91;
    • select * from student where math in(84,90,91);
  • 查询所有姓索的学生成绩:select * from student where name like '索%';
  • 对数学成绩排序后输出(升序):select * from student order by math;
  • 对总分进行排序输出(降序):select * from student order by math+chinese+english desc;
  • 对姓索的同学按总成绩排序输出(降序):select * from student where name like '索%' order by math+chinese+english desc;
  • 统计一个班级共有多少学生:select count(*) from student;
  • 统计数学成绩大于90分的学生个数:select count(*) from student where math>90;
  • 统计一个班级数学总成绩:select sum(math) from student;
  • 统计一个班级语文、英语、数学各科的总成绩:select sum(math),sum(chinese),sum(english) from student;
  • 统计一个班级语文、英语、数学的成绩总和:
    • select sum(math+chinese+english) from student;
    • select sum(math)+sum(chinese)+sum(english) from student;
  • 一个班级的数学平均分:select avg(math) from student;
  • 班级的最高分的最低分:select max(math+chinese+english),min(math+chinese+english) from student;

4. 日期时间函数

mysql里面时间分为三类:时间、日期、时间戳(含有时分秒的sysdate)

  • 查看当前时间、当前年、当前月、当前日和当前天:select now(), year(now()), month(now()), day(now()), date(now());

  • 查看当前天,当前时间,当前时间戳:select current_date(), current_time(), current_timestamp() from dual;

5. 相关函数

  • 对多个字符串进行拼接:select concat('aaa','bbb', 'ccc') from dual;

  • 将字符串转换为大写:select ucase('abc') from dual;

  • 将字符串转换为小写:select lcase('ABC') from dual;

  • 返回第二个参数字符串在第一个参数字符串中出现的位置:select instr('abc','bc') from dual;

  • 从字符串abc中的左边起取2个字符:select left('abc',2) from dual;

  • 返回字符串的长度:select length('abc') from dual;

  • 将字符串abcdefg中的abc转换为lxx:select replace('abcdefg','abc','lxx') from dual;

  • 按字符比较两个字符串的大小:select strcmp('abcdefg','abc') from dual;

  • 日期转换为字符串显示:select date_format(now(), '%Y-%m-%d %h:%i:%s') from dual;

1.数字相关函数

函数 注释
abs(number) 绝对值
bin(number) 十进制转二进制
ceiling(number) 向上取整
conv(number,from,to) 进制转换
floor(number) 向下取整
format(number,decimal_places) 保留小数位数
hex(number) 转十六进制
least(number1,number2,…..) 求最小值
mod(numerator,denominator) 求余