数据库mysql
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 | insert into student(id,name,chinese,english,math) values(1,'路飞',80,85,90); |
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) | 求余 |