Limux下mariadb 单表查询练习

Linux 下mariadb数据库管理与操作
环境搭建

安装软件

[root@node1 ~]# yum groupinstall mariadb mariadb-client
#安装mariadb的相关依赖包

开机自启
[root@node1 ~]# systemctl enable mariadb.service

重启查看状态
[root@node1 ~]# systemctl restart mariadb.service
[root@node1 ~]# systemctl status mariadb.service
在这里插入图片描述

查看端口
[root@node1 ~]# netstat -tunlp |

grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 12293/mysqld
防火墙处理
[root@node1 ~]# firewall-cmd --permanent --add-service=mysql
success
[root@node1 ~]# firewall-cmd --reload
success

初始化
[root@node1 ~]# mysql_secure_installation

Enter current password for root (enter for none): 设置MYSQL密码
Remove anonymous users? [Y/n] 是否删除匿名用户
Disallow root login remotely? [Y/n] 是否删除远程登录
Remove test database and access to it? [Y/n] 是否删除TEXT数据库
Reload privilege tables now? 是否加载权限列表

修改密码
方法一:
#mysqladmin -u用户名 -p旧密码 password 新密码
[root@node1 ~]# mysqladmin -uroot -p12345 password 1234
[root@node1 ~]# mysql -u root -p
方法二
MariaDB [(none)]> set password for root@localhost = password(‘123456’);
Query OK, 0 rows affected (0.00 sec)
在这里插入图片描述
方法三
忘记密码时
1.vim /etc/my.cnf
#Skip-grant-tables
2.Systemctl restart mariadb
登录并修改密码
2.移除更改,重启服务

退出的三种方式
1.quit;
2.exit;
3.\q;
登录
在这里插入图片描述
mysql -u root -p
回车

汉化处理
[root@node1 ~]# cd /etc/my.cnf.d/
[root@node1 my.cnf.d]# ll
total 12
-rw-r–r--. 1 root root 295 Jun 10 2015 client.cnf
-rw-r–r--. 1 root root 232 Jun 10 2015 mysql-clients.cnf
-rw-r–r--. 1 root root 744 Jun 10 2015 server.cnf
[root@node1 my.cnf.d]# vim server.cnf

1.[root@node1 ~]# vi /etc/my.cnf
vim server.cnf

#【mysqld】
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci

[root@node1 my.cnf.d]# vim mysql-clients.cnf
[mysql]
default-character-set=utf8

2.重启服务查看
[root@node1 ~]# systemctl restart mariadb.service
3.MariaDB [(none)]> show variables like ‘character%’;

在这里插入图片描述

MariaDB [(none)]> show variables like ‘character%’;
在这里插入图片描述

创建表格并使用
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use emp;
Database changed

在这里插入图片描述
创建子表

MariaDB [emp]> CREATE TABLE emp (
-> empno int(4) NOT NULL,
-> ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
-> job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
-> mgr int(4) NULL DEFAULT NULL,
-> hiredate date NOT NULL,
-> sai int(255) NOT NULL,
-> comm int(255) NULL DEFAULT NULL,
-> deptno int(2) NOT NULL,
-> PRIMARY KEY (empno) USING BTREE
-> ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

在这里插入图片描述

插入数据
INSERT INTO emp VALUES (1001, ‘甘宁’, ‘文员’, 1013, ‘2000-12-17’, 8000, NULL, 20);
INSERT INTO emp VALUES (1002, ‘黛绮丝’, ‘销售员’, 1006, ‘2001-02-20’, 16000, 3000, 30);
INSERT INTO emp VALUES (1003, ‘殷天正’, ‘销售员’, 1006, ‘2001-02-22’, 12500, 5000, 30);
INSERT INTO emp VALUES (1004, ‘刘备’, ‘经理’, 1009, ‘2001-04-02’, 29750, NULL, 20);
INSERT INTO emp VALUES (1005, ‘谢逊’, ‘销售员’, 1006, ‘2001-09-28’, 12500, 14000, 30);
INSERT INTO emp VALUES (1006, ‘关羽’, ‘经理’, 1009, ‘2001-05-01’, 28500, NULL, 30);
INSERT INTO emp VALUES (1007, ‘张飞’, ‘经理’, 1009, ‘2001-09-01’, 24500, NULL, 10);
INSERT INTO emp VALUES (1008, ‘诸葛亮’, ‘分析师’, 1004, ‘2007-04-19’, 30000, NULL, 20);
INSERT INTO emp VALUES (1009, ‘曾阿牛’, ‘董事长’, NULL, ‘2001-11-17’, 50000, NULL, 10);
INSERT INTO emp VALUES (1010, ‘韦一笑’, ‘销售员’, 1006, ‘2001-09-08’, 15000, 0, 30);
INSERT INTO emp VALUES (1011, ‘周泰’, ‘文员’, 1006, ‘2007-05-23’, 11000, NULL, 20);
INSERT INTO emp VALUES (1012, ‘程普’, ‘文员’, 1006, ‘2001-12-03’, 9500, NULL, 30);
INSERT INTO emp VALUES (1013, ‘庞统’, ‘分析师’, 1004, ‘2001-12-03’, 30000, NULL, 20);
INSERT INTO emp VALUES (1014, ‘黄盖’, ‘文员’, 1007, ‘2002-01-23’, 13000, NULL, 10);
INSERT INTO emp VALUES (1015, ‘张三’, ‘保洁员’, 1001, ‘2013-05-01’, 80000, 50000, 50);

查看emp表格

MariaDB [emp]> select * from emp;

在这里插入图片描述

MySQL命令输错,命令行出现( '>),而不是箭头(->),命令行不接受命令,解决方案。

例:在表instructor 里插入一行数据时,本应该输入insert into instructor values(76543,‘Singh’,‘Finance’,80000);但少输入了一个单引号’ ,导致命令行最开头(->)变成了( '<)。

在网上找了一些方法:
输入分号“;”后回车,没用。
输入“\c”后回车,也没用。
甚至输入“exit”也没用,如图:

这个输错的语句其实是缺失了一个单引号,因此再输入一个单引号就好了

单表查询练习
– 1. 查询出部门编号为30的所有员工
MariaDB [emp]> Select * from emp where deptno=30;
在这里插入图片描述

– 2. 所有销售员的姓名、编号和部门编号。
MariaDB [emp]> select ename,empno,deptno from emp where job=‘销售员’;
在这里插入图片描述

– 3. 找出奖金高于工资的员工。
MariaDB [emp]> select * from emp where comm>sai;
在这里插入图片描述
– 4. 找出奖金高于工资60%的员工。
MariaDB [emp]> select * from emp where comm>sai*0.6;
在这里插入图片描述

– 5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
MariaDB [emp]> select * from emp
-> where (deptno=10 and job=‘经理’)
-> or(deptno=20 and job=‘销售员’);
在这里插入图片描述

– 6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。
Database changed
MariaDB [emp]> select * from emp
-> where(deptno=10 and job=“经理”) or (deptno=20 and job=“销售员”) or (job !=‘销售员’ and job !=‘经理’ and sai>=20000);

在这里插入图片描述
– 7. 无奖金或奖金低于1000的员工。
MariaDB [emp]> select * from emp
-> where comm is NULL or comm<1000;
在这里插入图片描述

– 8. 查询名字由三个字组成的员工。
– 注意:一个汉字占三个字节
MariaDB [emp]> select * from emp
-> where ename like"___"
-> ;

在这里插入图片描述

– 9.查询2000年入职的员工。
MariaDB [emp]> select * from emp where hiredate like ‘2000-%’;
在这里插入图片描述

– 10. 查询所有员工详细信息,用编号升序排序
MariaDB [emp]> select * from emp
-> order by empno;
在这里插入图片描述

– 11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
MariaDB [emp]> select * from emp order by sai desc,hiredate asc;
在这里插入图片描述

– 12.查询每个部门的平均工资
MariaDB [emp]> select deptno,avg(sai) from emp group by deptno;

在这里插入图片描述
– 13.查询每个部门的雇员数量
MariaDB [emp]> select deptno,count(deptno) from emp group by deptno;

在这里插入图片描述

– 14.查询每种工作的最高工资、最低工资、人数
MariaDB [emp]> select job,max(sai),min(sai),count(job) from emp
-> group by job;
在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读