Linux 下mariadb数据库管理与操作
环境搭建
安装软件
[[email protected] ~]# yum groupinstall mariadb mariadb-client
#安装mariadb的相关依赖包
开机自启
[[email protected] ~]# systemctl enable mariadb.service
重启查看状态
[[email protected] ~]# systemctl restart mariadb.service
[[email protected] ~]# systemctl status mariadb.service
查看端口
[[email protected] ~]# netstat -tunlp |
grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 12293/mysqld
防火墙处理
[[email protected] ~]# firewall-cmd --permanent --add-service=mysql
success
[[email protected] ~]# firewall-cmd --reload
success
初始化
[[email protected] ~]# 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 新密码
[[email protected] ~]# mysqladmin -uroot -p12345 password 1234
[[email protected] ~]# mysql -u root -p
方法二
MariaDB [(none)]> set password for [email protected] = 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
回车
汉化处理
[[email protected] ~]# cd /etc/my.cnf.d/
[[email protected] 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
[[email protected] my.cnf.d]# vim server.cnf
1.[[email protected] ~]# vi /etc/my.cnf
vim server.cnf
#【mysqld】
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
[[email protected] my.cnf.d]# vim mysql-clients.cnf
[mysql]
default-character-set=utf8
2.重启服务查看
[[email protected] ~]# 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;