目录
一:数据库简介
1.SQL的分类:
2.数据库的数据类型:
(1)数值类型:
(2)字符串类型:
(3)日期和时间类型:
二:MySQL数据库的安装与配置:
(1)MySQL官方下载地址:http://dev.mysql.com/downloads/mysql
(2)卸载mariadb
(3)rpm安装MySQL:
(4)登录数据库:
三:数据库,数据表的基本操作:
1:数据库的基本操作:
(1)查询所有的数据库:show databases;
(2)创建数据库:create database 数据库名字;
(3)创建数据库后查看该数据库基本信息:show create database 数据库名字;
(4)使用数据库:use 数据库名字;
(5)删除数据库:drop database 数据库名字;
四:数据库中的数据表的基本操作:
(一):数据库中的数据表的基本操作(增):
(1)创建数据表:create table 数据表名(字段 字段类型);
(2)查看当前数据库中所有的数据表:show tables;
(3)查看表的详细信息:show create table 数据表名;
(4)查看表的字段信息:desc 数据表名:
(5)数据表查询语句:select +关键字后指定要显示的内容 from 数据表名;
查看数据表中所有的内容:select * from 数据表名;
(6)为数据表中所有的字段插入数据:insert into 数据表名 (字段名1,字段名2,...) values (值1,值2,...)
(7)为数据表中指定字段插入数据:insert into 数据表名 (字段) values (值);
(8)同时插入多条数据:insert into 数据表名 (字段1,字段2,...) values (值1,值2,...),(值1,值2,...),...;
(二):数据库中的数据表的基本操作(改 值):
(1)更新部分数据(也可称之为更改数据表中的数据):update 数据表名 set 字段名1=值1 where 条件表达式
(2)update更新全部数据: update 数据表名 set 字段名=值;
(三):数据库中的数据表的基本操作(删除 值):
(1)删除指定数据:delete from 表名 where 条件;
(2)删除数据表中所有的数据:delete from 数据表名;
(四):数据库中的数据表的基本操作(改 表):
(1)修改表名:alter table 数据表名 rename to 新表名;
(五):数据库中的数据表的基本操作(改 字段):
(1)修改字段数据类型:alter table 数据表名 modify 字段名 新数据类型(长度);
(2)修改字段名:alter table 数据表名 change 旧字段名 新字段名 数据类型(长度);
(3)增加字段:alter table 数据表名 add 增加的字段名 类型(长度);
(六):数据库中的数据表的基本操作(删除 字段):
(1)删除字段:alter table 表名 drop 字段名;
(2)删除数据表:drop table 表名;
(七):数据库中的数据表的基本操作(查 字段):
(1)查询所有的字段:desc 表名;
(八):数据库中的数据表的基本操作(查 字段对应的value值):
(1)查询所有的字段对应的值:select * from 表名;
(2)查询指定的字段:select 指定字段 from 表名;
(3)常数的查询:在select中除了书写列名,还可以书写常数,用于标记:select * ,'年*月*日' from 表名;
(4)从查询结果中过滤重复数据:select distinct 指定字段 from 表名;
(1)DDL数据定义语言,用来操作数据库,表,列等;常用语句:create,alter,drop
(2)DML数据操作语言,用来操作数据库中表里的数据;常用语句:insert,update,delete
(3)DCL数据控制语言,用来操作访问权限和安全级别;常用语句:grant,deny
(4)DQL数据查询语言,用来查询数据;常用语句:select
根据数值取值范围的不同MySQL中的整数类型可分为5种,分别是tinyint,smallint,mediumint,int,bigint
类型 | 大小 | 有符号(signed) | 无符号(unsigned) | 描述 |
tinyint | 1 byte | (-128,127) | (0,255) | 小整数值 |
smallint | 2 bytes | (-32768,32767) | (0,65535) | 大整数值 |
mediumint | 3 bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
int | 4 bytes | (-2147483648,2147483647) | (0,2^64 - 1) | 大整数值 |
bigint | 8bytes | / | / | 极大整数值 |
在MySQL中常用char和varchar表示字符串。两者不同的是:varchar储存可变长度的字符串。
类型 | 大小 | 描述 |
char | 0-255 bytes | 定长字符串 |
varchar | 0-65535 bytes | 变长字符串 |
tinytest | 0-255 bytes | 可变长度(短文本字符串) |
text | 0-65535 bytes | 可变长度(长文本字符串) |
mediumtext | 0 - 2^24-1 bytes | 可变长度(二进制形式的中等长度的文本数据) |
longtext | 0 - 2^32-1 bytes | 可变长度(极大文本数据) |
类型 | 大小 | 范围 | 格式 | 描述 |
date | 3 | 1000-01-01 至 9999-12-31 | YYYY-MMM-DD | 日期值 |
time | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值 |
year | 1 | 1901 至 2155 | YYYY | 年份值 |
datetime | 8 | 1000-01-01 00:00:00 至~ | / | 混合日期和时间值 |
timestamp | 4 | 1970-01-01 00:00:00 至2038 | / | 时间戳 |
注意:rpm包安装的时候,虽然安装包下载到了本地,但是在安装的过程中仍然可能会存在一些依赖,因此需要修改网络源来安装。
网易163 yum源:http://mirrors.163.com/.help
搜狐 yum源:http://mirrors.sohu.com
阿里云yum源:http://mirrors.aliyun.com/repo/
清华大学 yum源:http://mirrors.tuna.tsinghua.edu.cn/
浙江大学 yum源:http://mirrors.zju.edu.cn
中国科技大学 yum源:http://centos.ustc.edu.cn
rpm -e postfix-2:2.10.1-9.el7.x86_64
rpm -e mariadb-libs-5.5.68-1.el7.x86_64
先将压缩包解压到指定目录(/opt/mysqld/)
[root@192 ~]# tar xf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar -C /opt/mysqld/
[root@192 ~]# cd /opt/mysqld/
[root@192 ~]# yum localinstall *
压缩包:
[root@192 ~]# cd /opt/mysqld/
[root@192 mysqld]# ll
total 839324
-rw-r--r--. 1 7155 31415 14709160 Jul 7 16:00 mysql-community-client-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 2632376 Jul 7 16:00 mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 660264 Jul 7 16:00 mysql-community-common-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 481580308 Jul 7 16:01 mysql-community-debuginfo-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 1958588 Jul 7 16:01 mysql-community-devel-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 4217604 Jul 7 16:01 mysql-community-embedded-compat-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 2218720 Jul 7 16:01 mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 1582228 Jul 7 16:01 mysql-community-libs-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 685808 Jul 7 16:02 mysql-community-libs-compat-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 56195524 Jul 7 16:02 mysql-community-server-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 21350292 Jul 7 16:02 mysql-community-server-debug-8.0.30-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 271649024 Jul 7 16:04 mysql-community-test-8.0.30-1.el7.x86_64.rpm
[root@192 mysqld]# systemctl start mysqld #启动mysqld服务
[root@192 ~]# systemctl enable mysqld #将mysqld服务设置为开机自启动
[root@192 ~]# systemctl list-unit-files |grep mysqld #查看mysqld服务是否为开机自启动
mysqld.service enabled
[email protected] disabled
#登录数据库:
[root@192 mysqld]# grep "password" /var/log/mysqld.log #获取root用户密码
2022-11-12T17:03:12.538271Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: _TYn:E=pX9t%
[root@192 mysqld]# mysql -u root -p 得到密码后登录数据库
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.30 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema | |
| sys |
+--------------------+
5 rows in set (0.04 sec)
创建数据库就是在数据库系统中划分一块空间存储数据,语法如下:
mysql> create database test_mysql;
Query OK, 1 row affected (0.01 sec)
mysql>
mysql> show create database test_mysql;
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
| test_mysql | CREATE DATABASE `test_mysql` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
mysql> use test_mysql;
Database changed
mysql>
mysql> drop database test_mysql;
Query OK, 0 rows affected (0.09 sec)
mysql>
数据库创建成功后可在该数据库中创建数据表(简称为表)储存数据。请注意:在操作数据表之前应使用 use 数据库名; 指明操作是在哪个数据库中进行,否则会抛出"No databas selected"错误。
create table 表名(
字段1 字段类型,
字段2 字段类型,
... ...
字段n 字段类型
);
示例:
mysql> create database test_mysql; #创建数据库
Query OK, 1 row affected (0.00 sec)
mysql> use test_mysql; #使用数据库
Database changed
mysql> create table student( #创建数据表
-> id int,
-> name varchar(20),
-> gender varchar(10),
-> birthday date
-> );
Query OK, 0 rows affected (0.05 sec)
mysql>
示例:
mysql> show tables;
+----------------------+
| Tables_in_test_mysql |
+----------------------+
| student |
+----------------------+
1 row in set (0.00 sec)
mysql>
示例:
mysql> show create table student;
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`gender` varchar(10) DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql>
示例:
mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
示例:(因为此时未在数据表中添加内容)
mysql> select * from student;
Empty set (0.00 sec)
mysql>
mysql> select id from student;
Empty set (0.00 sec)
mysql>
每个字段与其value值是严格一 一对应的。也就是说:每个值,值的顺序,值的类型必须与对应的字段相匹配。但是,各字段在表中定义的顺序无需一致,只需要与value值对应即可。
示例:
mysql> insert into student (id,name,gender,birthday) values (1,'汪伟','男','2001-03-22');
Query OK, 1 row affected (0.01 sec) #提示插入成功
mysql> select * from student; #再次查询数据表中的内容
+------+--------+--------+------------+
| id | name | gender | birthday |
+------+--------+--------+------------+
| 1 | 汪伟 | 男 | 2001-03-22 |
+------+--------+--------+------------+
1 row in set (0.00 sec)
mysql>
示例:
mysql> insert into student (name) values ('张三');
Query OK, 1 row affected (0.01 sec) #插入成功
mysql> select * from student; #其他未插入的显示空
+------+--------+--------+------------+
| id | name | gender | birthday |
+------+--------+--------+------------+
| 1 | 汪伟 | 男 | 2001-03-22 |
| NULL | 张三 | NULL | NULL |
+------+--------+--------+------------+
2 rows in set (0.00 sec)
mysql>
mysql> insert into student values (3,'李四','男','2000-01-01'),(4,'王麻子','女','2000-12-31');
Query OK, 2 rows affected (0.00 sec) #提示添加成功
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from student; #查询插入数据后的数据表
+------+-----------+--------+------------+
| id | name | gender | birthday |
+------+-----------+--------+------------+
| 1 | 汪伟 | 男 | 2001-03-22 |
| NULL | 张三 | NULL | NULL |
| 3 | 李四 | 男 | 2000-01-01 |
| 4 | 王麻子 | 女 | 2000-12-31 |
+------+-----------+--------+------------+
4 rows in set (0.01 sec)
mysql>
在该语法中,字段1用于指定要更新的字段名称;值1用于表示字段的新数据,where条件语句是可选的,用于指定更新数据需要满足的条件。
示例:
mysql> update student set birthday='1999-12-31' where id=4;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0 #提示已修改更新成功
mysql> select * from student; #发现满足条件id=4的birthday所对应的数据已经更新
+------+-----------+--------+------------+
| id | name | gender | birthday |
+------+-----------+--------+------------+
| 1 | 汪伟 | 男 | 2001-03-22 |
| NULL | 张三 | NULL | NULL |
| 3 | 李四 | 男 | 2000-01-01 |
| 4 | 王麻子 | 女 | 1999-12-31 |
+------+-----------+--------+------------+
4 rows in set (0.00 sec)
mysql>
mysql> update student set gender='男性';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0 #提示字段名对应的所有数据值已更新
mysql> select * from student; #字段名gender对应的全部数据已经更新
+------+-----------+--------+------------+
| id | name | gender | birthday |
+------+-----------+--------+------------+
| 1 | 汪伟 | 男性 | 2001-03-22 |
| NULL | 张三 | 男性 | NULL |
| 3 | 李四 | 男性 | 2000-01-01 |
| 4 | 王麻子 | 男性 | 1999-12-31 |
+------+-----------+--------+------------+
4 rows in set (0.00 sec)
mysql>
原表:
mysql> select * from student;
+------+-----------+--------+------------+
| id | newname | gender | birthday |
+------+-----------+--------+------------+
| 1 | 汪伟 | 男性 | 2001-03-22 |
| NULL | 张三 | 男性 | NULL |
| 3 | 李四 | 男性 | 2000-01-01 |
| 4 | 王麻子 | 男性 | 1999-12-31 |
+------+-----------+--------+------------+
4 rows in set (0.00 sec)
mysql>
示例:将原表中名字为'张三'的数据删除:
mysql> delete from student where newname='张三';
Query OK, 1 row affected (0.11 sec)
mysql> select * from student; #发现原表中张三的数据已删除
+------+-----------+--------+------------+
| id | newname | gender | birthday |
+------+-----------+--------+------------+
| 1 | 汪伟 | 男性 | 2001-03-22 |
| 3 | 李四 | 男性 | 2000-01-01 |
| 4 | 王麻子 | 男性 | 1999-12-31 |
+------+-----------+--------+------------+
3 rows in set (0.00 sec)
mysql>
原表:
mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
示例:修改数据表中的name varchar(20)数据类型改为name varchar(10)
mysql> alter table student modify name varchar(10);
Query OK, 4 rows affected (0.05 sec) #提示修改成功
Records: 4 Duplicates: 0 Warnings: 0
mysql> desc student; #发现字段name的数据类型已经修改为varchar(10)
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
原表:
mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
示例:将字段name 改为 newname
mysql> alter table student change name newname varchar(10);
Query OK, 0 rows affected (0.01 sec) #提示修改成功
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc student; #发现旧字段名name已经修改为新字段名newname
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| newname | varchar(10) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
原表:
mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| newname | varchar(10) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
示例:新增加字段 address varchar(50)
mysql> alter table student add address varchar(50);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc student; #发现已经新添加了字段 address
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| newname | varchar(10) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql>
原表:
mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| newname | varchar(10) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql>
示例:删除字段address
mysql> alter table student drop address;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc student; #发现address字段已经被删除
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| newname | varchar(10) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
示例:
mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| newname | varchar(10) | YES | | NULL | |
| gender | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
mysql>
示例:
mysql> select * from student;
+------+-----------+--------+------------+
| id | newname | gender | birthday |
+------+-----------+--------+------------+
| 1 | 汪伟 | 男性 | 2001-03-22 |
| 3 | 李四 | 男性 | 2000-01-01 |
| 4 | 王麻子 | 男性 | 1999-12-31 |
+------+-----------+--------+------------+
3 rows in set (0.00 sec)
mysql>
示例:查询student数据表中id,newname所有对应的值:
mysql> select id,newname from student;
+------+-----------+
| id | newname |
+------+-----------+
| 1 | 汪伟 |
| 3 | 李四 |
| 4 | 王麻子 |
+------+-----------+
3 rows in set (0.00 sec)
mysql>
示例:标记日期2022-11-13
mysql> select id,newname ,'2022-11-13' from student;
+------+-----------+------------+
| id | newname | 2022-11-13 |
+------+-----------+------------+
| 1 | 汪伟 | 2022-11-13 |
| 3 | 李四 | 2022-11-13 |
| 4 | 王麻子 | 2022-11-13 |
+------+-----------+------------+
3 rows in set (0.00 sec)
mysql>
原表:
mysql> select * from student;
+------+-----------+--------+------------+
| id | newname | gender | birthday |
+------+-----------+--------+------------+
| 1 | 汪伟 | 男性 | 2001-03-22 |
| 3 | 李四 | 男性 | 2000-01-01 |
| 4 | 王麻子 | 男性 | 1999-12-31 |
+------+-----------+--------+------------+
3 rows in set (0.00 sec)
mysql>
示例:将原表中gender的数据去重之后显示
mysql> select distinct gender from student;
+--------+
| gender |
+--------+
| 男性 |
+--------+
1 row in set (0.00 sec)
mysql>