MYSQL

mysql 簡介
MySQL是一種關係數據庫管理系統,關係數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件採用了雙授權政策,分爲社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作爲網站數據庫。
mysql 安裝與配置
mysql 安裝方式有三種
源代碼:編譯安裝
二進制格式的程序包:展開至特定路徑,並經過簡單配置後即可使用
程序包管理器管理的程序包:rpm / deb

// 配置mysql的yum源
[root@yanyinglai3 ~]# cd /usr/src/
[root@yanyinglai3 src]# ls
debug  kernels
[root@yanyinglai3 src]# wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
[root@yanyinglai3 src]#  yum -y install mysql57-community-release-el7-10.noarch.rpm
[root@yanyinglai3 src]# ls /etc/yum.repos.d/
[root@yanyinglai3 ~]#  yum -y install mysql-community-server mysql-community-client mysql-community-common mysql-community-devel
mysql 配置
// 啓動mysql
[root@yanyinglai3 ~]#  systemctl start mysqld
[root@yanyinglai3 ~]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2018-08-17 16:35:41 CST; 14s ago
     Docs: man:mysqld(8)
// 確保3306端口已經監聽起來
[root@yanyinglai3 ~]# ss -antl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128      *:22                   *:*                  
LISTEN      0      100    127.0.0.1:25                   *:*                  
LISTEN      0      128     :::22                  :::*                  
LISTEN      0      100    ::1:25                  :::*                  
LISTEN      0      80      :::3306                :::* 
//在日誌文件中找出臨時密碼
  [root@yanyinglai3 ~]# grep "password" /var/log/mysqld.log
2018-08-17T08:35:30.972217Z 1 [Note] A temporary password is generated for root@localhost: CYCIoXn;V1)o
  //此處的臨時密碼爲CYCIoXn;V1)o
    //使用獲取到的臨時密碼登錄mysql
   [root@yanyinglai3 ~]# mysql -uroot -p
Enter password:      // 此處輸入密碼,可以直接複製粘貼。

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>         //看到有這樣的標識則表示登錄成功。
// 修改mysql 登錄密碼
  mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql>  ALTER USER 'root'@'localhost' IDENTIFIED BY 'wangqing123!';
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
爲避免mysql自動升級,這裏需要卸載最開始安裝的yum源
 [root@yanyinglai3 ~]#  rpm -qa|grep mysql
mysql-community-common-5.7.23-1.el7.x86_64
mysql-community-libs-compat-5.7.23-1.el7.x86_64
mysql-community-libs-5.7.23-1.el7.x86_64
mysql-community-server-5.7.23-1.el7.x86_64
mysql-community-devel-5.7.23-1.el7.x86_64
mysql57-community-release-el7-10.noarch
mysql-community-client-5.7.23-1.el7.x86_64
[root@yanyinglai3 ~]# yum -y remove mysql57-community-release-el7-10.noarch

mysql 的程序組成
mysql:CLI 交互式客戶端程序
mysql_secure_installation: 安全初始化,強烈建議安裝完以後執行此命令
mysqldump:mysql 備份工具
服務器
mysqld
mysql 工具使用
// 語法:mysql [ OPTINS] [database]
常用的OPTIONS
-uUSERNAME // 指定用戶名,默認爲root
-hHOST // 指定服務器主機,默認爲localhost, 推薦使用ip地址
-pPAS1SWORD // 指定用戶的密碼
-P# //指定數據庫監聽的端口
-V // 查看當前使用的mysql版本
-e // 不登錄mysql執行sql語句後退出,常用於腳本

[root@yanyinglai3 ~]# mysql -uroot -pwangqing123! -h127.0.0.1

// 注意,不推薦直接在命令行裏直接用。
[root@yanyinglai3 ~]# mysql -uroot -p -h127.0.0.1
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
服務器監聽的兩種socket地址
socket 類型
ip socket 默認監聽在tcp的3306端口,支持遠程通信
Unix sock 監聽在sock文件上(/tmp/mysql.sock, /var/lib/mysql/mysql.sock)
server 地址只能是:localhost , 127.0.0.1

DDL 操作

數據庫操作
創建數據庫wangqingge
mysql> CREATE DATABASE IF NOT EXISTS wangqingge;
Query OK, 1 row affected (0.00 sec)
//查看當前實例有哪些數據庫
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wangqingge |
+--------------------+
5 rows in set (0.07 sec)

//刪除數據庫wangqingge
mysql> DROP DATABASE IF EXISTS wangqingge;
Query OK, 0 rows affected (0.08 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)

表操作
在數據庫wangqingge裏創建表wangqing
mysql> CREATE DATABASE wangqingge; //創建數據庫wangqingge
Query OK, 1 row affected (0.00 sec)

mysql> use wangqingge; //進入wangqingge數據庫
Database changed

mysql> CREATE TABLE wangqing (id int NOT NULL,name VARCHAR(100) NOT NULL,age tinyint); //創建wangqing表
Query OK, 0 rows affected (0.07 sec)

查看當前數據庫有哪些表
mysql> SHOW TABLES;
+----------------------+
| Tables_in_wangqingge |
+----------------------+
| wangqing |
+----------------------+
1 row in set (0.00 sec)

刪除表wangqing
mysql> DROP TABLE wangqing;
Query OK, 0 rows affected (0.01 sec)

查看某表的狀態
//語法:SHOW TABLE STATUS LIKE 'table_name'\G

DML操作

DML 操作包括增(INSERT),刪(DELETE)改(UPDATE)查(SELECT),均屬針對表的操作

作業練習

創建一個以你名字爲名的數據庫,並創建一張表student,該表包含三個字段
[root@yanyinglai3 ~]#  mysql -uroot -p -h127.0.0.1
mysql> CREATE DATABASE yanyinglai;
Query OK, 1 row affected (0.00 sec)   創建數據庫
mysql> SHOW databases;    查看當前數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| yanyinglai         |
+--------------------+
5 rows in set (0.00 sec)

mysql> use yanyinglai;   進入yabyinglai數據庫
Database changed

mysql> CREATE TABLE student (id int NOT NULL,name VARCHAR(100) NOT NULL,age tinyint);
Query OK, 0 rows affected (0.02 sec)  創建表

mysql> SHOW TABLES;
+----------------------+
| Tables_in_yanyinglai |
+----------------------+
| student              |
+----------------------+
1 row in set (0.00 sec)   查看錶

mysql> DESC yanyinglai.student;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   |     | NULL    |       |
| name  | varchar(100) | NO   |     | NULL    |       |
| age   | tinyint(4)   | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.06 sec)

查看下該新建的表有無內容(用select語句)

查看錶信息mysql> select * from student;

往新建的student表中插入數據(用insert語句),結果應如下
id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25|
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 6 | zhangshan | 20 |
| 7 | lisi | NULL |
|8 | chenshuo | 10 |
| 9 | wangwu | 3 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |

向表中插入數據mysql> insert into student (id,name,age) values (1,'tom',20),(2,'jerry',23),(3,'hejiee',25),(4,'sean',28),(5,'zhangshan',26),(6,'zhangshan',20),(7,'lisi',NULL),(8,'ran',10),(9,'wangwu',3),(10,'qiuyi',15),(11,'wangbadan',20);

修改lisi的年齡爲50

mysql> update student set age=50 where name = 'lisi';

以sge字段降序排序

mysql> select * from student order by age desc;

查詢student表中年齡最小的3位同學

mysql> select * from student order by age limit 3;

查詢student表中年齡最大的4位同學

mysql> select * from student order by age desc limit 4;

查詢student表中名字叫zhangshan的記錄
mysql> select * from student where name='zhangshan';

查詢student表中名字叫zhangsan且年齡大於20的記錄

mysql> select * from student where name='zhangshan' and age>20;

查詢student表中年齡在23到30之間的記錄
mysql>  select * from student where age between 23 and 30;

修改wangwu的年齡爲100

mysql> update student set age=100 where name='wangwu';

刪除student中名字叫zhangsan且年齡小於等於20的記錄

mysql> delete from student where name='zhangshan' and age<=20;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章