目录
1.数据库的简介
数据库是指按照一定的数据模型组织、存储管理数据的系统。它可以用来存储和检索大量结构化数据,并提供高效的数据访问和管理功能。数据库可以分为关系型数据库和非关系型数据库两种类型。
关系型数据库(RDBMS)是最常见和广泛使用的数据库类型,它使用表格来组织数据,并通过行和列的方式存储数据。关系型数据库使用结构化查询语言(SQL)进行数据操作和查询,具有良好的数据一致性和完整性,支持事务处理和数据的关联性。
非关系型数据库(NoSQL)则是一种灵活的数据库类型,它不使用固定的表格结构,而是使用键值对、文档、列族或图形等方式来存储数据。非关系型数据库适用于大规模分布式系统和需要高度可扩展性和性能的场景,但牺牲了一部分数据一致性和完整性。
数据库的优点包括:
数据共享:多个应用程序可以共享同一个数据库,实现数据的集中管理和共享。
数据一致性:数据库提供了事务处理机制,保证了数据的一致性和完整性。
数据安全:数据库可以通过权限控制和加密等方式来保护数据的安全性。
数据持久化:数据库将数据永久保存在磁盘上,即使系统重启或崩溃,数据也不会丢失。
常见的关系型数据库包括MySQL、Oracle、SQL Server等,而非关系型数据库则有MongoDB、Redis、Cassandra等。
2.常见的关系型数据库
1.MySQL:MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的后台数据存储。它具有高性能、可靠性和可扩展性的特点。
2.Oracle:Oracle是一种商业化的关系型数据库管理系统,被广泛应用于企业级应用程序。它具有强大的功能和高度可靠性。
3.SQL Server:SQL Server是由Microsoft开发的关系型数据库管理系统,适用于Windows操作系统。它具有良好的可扩展性和安全性。
4.PostgreSQL:PostgreSQL是一种开源的关系型数据库管理系统,具有高度可靠性和可扩展性。它支持复杂的数据类型和高级功能,如触发器、视图和存储过程。
5.SQLite:SQLite是一种嵌入式关系型数据库管理系统,适用于小型应用程序或移动设备。它具有轻量级和快速的特点。
6.DB2:DB2是IBM开发的关系型数据库管理系统,适用于大型企业级应用程序。它具有高度可靠性和可扩展性,并支持复杂的数据处理和分析。
7.MS Access:MS Access是Microsoft Office套件中的一部分,是一种简单易用的关系型数据库管理系统。它适用于小型应用程序和个人用户。
8.Mariadb:该数据库是由Mysql社区开发,与Mysql极其相似,数据库操作基本一样。
3.Mysql安装
centos7是默认安装了mariadb。
查看版本指令:
[root@localhost ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
安装mariadb最新版本,要修改yum安装源,例如:
[mariadb]
name=mariadb laster version
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.6/centos7-amd64
gpgcheck=0
安装
[root@localhost yum.repos.d]# yum install mariadb-server -y
启动mariadb,设置开机自启动。
[root@localhost yum.repos.d]# systemctl start mariadb
[root@localhost yum.repos.d]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
进入mariadb
退出mysql
MariaDB [mysql]> exit;
Bye
4.Mysql基础管理
数据库的操作单元:库,表,记录(数据行)。
每创建一个库,在系统中会生成相应的目录,而表对应的是文件。存放该文件夹的路径:/var/lib/mysql
例如:
[root@localhost mysql]# ls
aria_log.00000001 ib_buffer_pool localhost.pid mysql_upgrade_info test
aria_log_control ibdata1 multi-master.info
ddl_recovery-backup.log ib_logfile0 mysql performance_schema
ddl_recovery.log ibtmp1 mysql.sock sys
数据库的增删改查:
#查看数据库:show databases;
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.003 sec)#添加数据库:create datadases 库名;
MariaDB [(none)]> create database pawd;
Query OK, 1 row affected (0.001 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| pawd |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.006 sec)#可以看到在库中有刚刚创建的数据库。
#删除数据库,drop database 库名;MariaDB [(none)]> drop database pawd;
Query OK, 0 rows affected (0.011 sec)#查看库中的表,首先要选择库,use 库名;
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [mysql]>#已经选择了mysql这个数据库。
#查看表。show tables;
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| column_stats |
| columns_priv |
| db |
| event |
| func |
| general_log |
| global_priv |
| gtid_slave_pos |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| index_stats |
| innodb_index_stats |
| innodb_table_stats |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| roles_mapping |
| servers |
| slow_log |
| table_stats |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| transaction_registry |
| user |
+---------------------------+
31 rows in set (0.000 sec)#可以看到表中的数据,可以选者其中一个来查看。
例如:
MariaDB [mysql]> select * from user; # * 表示所有字段名,也可以选择字段名来查看。
例如:
MariaDB [mysql]> select User from user;
+-------------+
| User |
+-------------+
| |
| mariadb.sys |
| mysql |
| root |
| |
+-------------+
5 rows in set (0.001 sec)
limit:选择行
例如:
MariaDB [mysql]> select User from user;
+-------------+
| User |
+-------------+
| |
| mariadb.sys |
| mysql |
| root |
| |
+-------------+
5 rows in set (0.001 sec)
#在User中有许多行,可以选择其中的一行或几行来查看。例子1:
MariaDB [mysql]> select User from user limit 1;
+------+
| User |
+------+
| |
+------+
1 row in set (0.001 sec)
例子2:MariaDB [mysql]> select User from user limit 1,3;
+-------------+
| User |
+-------------+
| mariadb.sys |
| mysql |
| root |
+-------------+
3 rows in set (0.001 sec)
5.用户权限操作
用户信息存在 mysql的user中。
#可以看到系统内置的用户有三个,mariadb.sys,root,mysql。可以看到这些用户只允许本地登录。
1.首先要创建用户。
创建用户:create user 'username'@'host' identified by 'password';
#username:用户名 host:客户端ip地址,如果是%表示任意IP。 password:设置的密码。
例如:
MariaDB [(none)]> create user jerry@'%' identified by '123';
Query OK, 0 rows affected (0.040 sec)
2.给用户授权。
授权:grant '操作(增删改查(select,update,delect),all) on 库名.表名 to 'username'@'host' identified by 'password';
#与创建用户相似。all表示所有,*表示也所有。
例如:
MariaDB [(none)]> grant all on *.* to jerry@'%' identified by '123';
Query OK, 0 rows affected (0.001 sec)
#修改用户密码。
1.进入数据库 use '库名‘
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
2.更改密码 set password for 'username‘@'host' = password('新密码’);MariaDB [mysql]> set password for root@'localhost' = password('1234');
Query OK, 0 rows affected (0.001 sec)MariaDB [mysql]>
6.表的操作
-
表的创建:使用create table语句可以创建一个新的表,指定表名和列的定义。例如: create table 表名 ( 列1 数据类型, 列2 数据类型, … );
-
列的定义:在表的创建语句中,需要定义每个列的名称和数据类型。常见的数据类型包括整数、浮点数、字符串、日期等。
-
插入数据:使用insert into语句可以向表中插入新的数据。例如: insert into 表名 (列1, 列2, …) values(值1, 值2, …);
-
修改表结构:使用alter table语句可以修改表的结构,包括添加、修改和删除列等操作
-
删除表:使用drop table语句可以删除整个表。例如: drop table 表名;
例如:
#int表示整数,char(10)表示十个字节。
MySQL表的数据类型用于定义表中每个列的数据类型。以下是MySQL中常见的数据类型:
-
整数类型:
- tinyint:1字节,范围为-128到127(有符号)或0到255(无符号)。
- smallint:2字节,范围为-32768到32767(有符号)或0到65535(无符号)。
- int:4字节,范围为-2147483648到2147483647(有符号)或0到4294967295(无符号)。
- bigint:8字节,范围为-9223372036854775808到9223372036854775807(有符号)或0到18446744073709551615(无符号)。
-
浮点数类型:
- float:4字节,单精度浮点数。
- double:8字节,双精度浮点数。
-
字符串类型:
- char:固定长度字符串,最多255个字符。
- varchar:可变长度字符串,最多65535个字符。
- text:可变长度字符串,最多65535个字符。
-
日期和时间类型:
- date:日期,格式为’YYYY-MM-DD’。
- time:时间,格式为’HH:MM:SS’。
- datetime:日期和时间,格式为’YYYY-MM-DD HH:MM:SS’。
- timestamp:时间戳,存储从1970年1月1日以来的秒数。
-
其他类型:
- bollean:布尔类型,存储TRUE或FALSE。
- blob:二进制大对象,可存储大量数据。