資料庫入門學習----Linux下安裝MariaDB資料庫
- 前言
- 為什么要學習資料庫?
- 一、什么是資料庫?
- 二、資料庫安裝步驟
- 1.安裝
- 2.啟動服務
- 3.通過客戶端去連接mariadb
- 4.資料庫的結構
- 五.練習
- 六.作業
前言
為什么要學習資料庫?
當今世界是一個充滿著資料的互聯網世界,充斥著大量的資料,即這個互聯網世界就是資料世界,資料的來源有很多,比如出行記錄、消費記錄、瀏覽的網頁、發送的訊息等等,除了文本型別的資料,影像、音樂、聲音都是資料,

一、什么是資料庫?
1.資料庫是“按照資料結構來組織、存盤和管理資料的倉庫”,是一個長期存盤在計算機內的、有組織的、可共享的、統一管理的大量資料的集合,
2.資料庫是存放資料的倉庫,它的存盤空間很大,可以存放百萬條、千萬條、上億條資料,但是資料庫并不是隨意地將資料進行存放,是有一定的規則的,否則查詢的效率會很低,

二、資料庫安裝步驟
1.安裝
yum install mariadb mariadb-server -y
#查看本機安裝了哪些包
rpm -qa |grep mariadb 查看本機安裝了哪些包含mariadb名字的包
#查看命令屬于哪個包
[root@localhost ~]# which mysql
/usr/bin/mysql
[root@localhost ~]# rpm -qf /usr/bin/mysql
mariadb-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
2.啟動服務
systemctl start mariadb
#mysqld的默認埠是3306
#查看服務狀態
systemctl status mariadb
常見錯誤🙅?♂?
#常見錯誤:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
#連接本地資料庫的時候,是通過這個socket檔案的,這里提示不能通過此socket檔案連接,那基本都是由于服務沒有啟動
3.通過客戶端去連接mariadb
#安裝好之后連接mysql-server
#mysql -u root -p
#-u 是指定用戶 默認會創建root用戶
#-p 是指定密碼 初始的時候敲回車即可
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.3.28-MariaDB MariaDB Server
Copyright ? 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>
4.資料庫的結構
#資料庫的結構
庫(database,檔案夾) --> 表(table,二維表格,檔案) -->欄位(豎向),
記錄(橫向)
#常用的sql陳述句(每個陳述句都以分號結尾)
#查看有哪些資料庫
MariaDB [(none)]> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| zabbix |
±-------------------+
五.練習
# 1-創建學生資訊表
#學號、姓名、性別、年齡
create table stuinfo(
stuid int primary key auto_increment,
stuname varchar(128) not null,
stusex varchar(64) default "fmale",
stuage int not null
);
create table stuinfo(
stu_xx int,
);
#查看表
MariaDB [sc]> show tables; #查看當前資料庫有哪些表
+--------------+
| Tables_in_sc |
+--------------+
| stuinfo |
+--------------+
1 row in set (0.001 sec)
MariaDB [sc]> desc stuinfo; #查看stuinfo的表結構
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| stuid | int(11) | NO | PRI | NULL | auto_increment |
| stuname | varchar(128) | NO | | NULL | |
| stusex | varchar(64) | YES | | fmale | |
| stuage | int(11) | NO | | NULL | |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.002 sec)
#2-創建表格規律
# 欄位名 多個屬性(用空格分割),
# int 表示整型
# primary key 表示主鍵
# auto_increment 表示自增
# varchar(128) 表示可變長字串型別,最大長度為128位元組
# not null 不為空
# default "fmale" 給它一個默認值
3-#新增插入陳述句
MariaDB [sc]> insert into stuinfo(stuname, stusex, stuage) values("huyuxuan","male",21);
Query OK, 1 row affected (0.002 sec)
MariaDB [sc]> insert into stuinfo(stuname, stusex, stuage) values("xiaoyanfei","fmale",18);
Query OK, 1 row affected (0.033 sec)
MariaDB [sc]> insert into stuinfo(stuname, stuage) values("maxueyan",20);
Query OK, 1 row affected (0.002 sec)
4-#查詢陳述句
MariaDB [sc]> select * from stuinfo;
+-------+------------+--------+--------+
| stuid | stuname | stusex | stuage |
+-------+------------+--------+--------+
| 1 | huyuxuan | male | 21 |
| 2 | xiaoyanfei | fmale | 18 |
| 3 | huangzijie | male | 20 |
| 4 | wenlaoshi | male | 29 |
| 5 | fenglaoshi | male | 37 |
| 6 | shiyaling | fmale | 20 |
| 7 | maxueyan | fmale | 20 |
+-------+------------+--------+--------+
7 rows in set (0.001 sec)
MariaDB [sc]> select stuname from stuinfo;
+------------+
| stuname |
+------------+
| huyuxuan |
| xiaoyanfei |
| huangzijie |
| wenlaoshi |
| fenglaoshi |
| shiyaling |
| maxueyan |
+------------+
7 rows in set (0.001 sec)
MariaDB [sc]> select stuname,stuage from stuinfo;
+------------+--------+
| stuname | stuage |
+------------+--------+
| huyuxuan | 21 |
| xiaoyanfei | 18 |
| huangzijie | 20 |
| wenlaoshi | 29 |
| fenglaoshi | 37 |
| shiyaling | 20 |
| maxueyan | 20 |
+------------+--------+
7 rows in set (0.001 sec)
MariaDB [sc]> select stuname,stuage from stuinfo where stuage>20;
+------------+--------+
| stuname | stuage |
+------------+--------+
| huyuxuan | 21 |
| wenlaoshi | 29 |
| fenglaoshi | 37 |
+------------+--------+
3 rows in set (0.001 sec)
#where 后面接條件
#order by stuage desc 通過stuage降序排序
#limit 1 只輸出一條
MariaDB [sc]> select stuname,stuage from stuinfo where stuage>20 order by stuage desc limit 1;
+------------+--------+
| stuname | stuage |
+------------+--------+
| fenglaoshi | 37 |
+------------+--------+
1 row in set (0.001 sec)
MariaDB [sc]> select stuname,stuage from stuinfo where stuage>20 limit 1;
+----------+--------+
| stuname | stuage |
+----------+--------+
| huyuxuan | 21 |
+----------+--------+
1 row in set (0.000 sec)
#輸出為女性的平均年齡
MariaDB [sc]> select avg(stuage) from stuinfo where stusex="fmale";
#通過stusex這個做分類,分別計算每一類stusex對應的同學的最大年齡和平均年齡
MariaDB [sc]> select stusex,max(stuage),avg(stuage) from stuinfo group by stusex;
#過濾出最大年齡大于25的結果
MariaDB [sc]> select stusex,max(stuage) as max_stuage,avg(stuage) from stuinfo group by stusex having max_stuage>25;
六.作業
#創建一張表
#產品表
farm_products
欄位:
id 整型 主鍵 自增
type varchar(64) 水果,蔬菜,經濟作物
name varchar(128) 蘋果,梨子,棉花
price float
pro_date datetime “2021-09-13 14:00:00”
#往里面添加欄位,可以重復
create table farm_products(
id int primary key auto_increment,
type varchar(64) ,
name varchar(128),
price float,
pro_date datetime default now()
) ;
MariaDB [sc]> insert into farm_products(type,name,price,pro_date) values("vegetable","potato",3.7,"2021-09-20 13:00");
Query OK, 1 row affected (0.001 sec)
MariaDB [sc]> select * from farm_products limit 5;
+----+-------+--------+-------+---------------------+
| id | type | name | price | pro_date |
+----+-------+--------+-------+---------------------+
| 1 | fruit | orange | 5.5 | 2021-08-11 12:00:00 |
| 2 | fruit | orange | 6.9 | 2021-07-11 12:00:00 |
| 3 | fruit | orange | 4.9 | 2021-09-11 12:00:00 |
| 4 | fruit | apple | 11.9 | 2021-09-11 13:00:00 |
| 5 | fruit | apple | 11.9 | 2021-08-21 13:00:00 |
+----+-------+--------+-------+---------------------+
#1、查詢價格最高的5種產品 (type,name, price)
select type,name,max(price) from farm_products group by name order by price desc limit 5;
#2、查詢9月份之后錄入的產品(type,name, price)
select type,name,price,pro_date from farm_products where pro_date >= "2021-09-01";
#3、查詢每一類水果的平均價(type,name,和平均價)
select type,name,avg(price) from farm_products where type="fruit" group by name;
select type,name,avg(price) from farm_products group by name having type="fruit";
#4、查詢8月份之后,每一類農產品的最大單價 (name,price)
select type,name,max(price) from farm_products where pro_date >="2021-08-01" group by name;
#5、查詢平均價最大的農產品的名字
select type,name,avg(price) as avg_price from farm_products group by name order by avg_price desc limit 1;
#6、查詢8月份錄入水果的均價
select avg(price) from farm_products where pro_date>="2021-08-01" and pro_date<"2021-09-01";
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300697.html
標籤:其他
上一篇:剛出爐的位元組跳動三面offer到手,來瞧瞧面試官都問了些啥?
下一篇:Kafka SASL集群部署
