Mysql学习--linux安装mysql,数据库配置,数据库管理,数据库表管理

数据库概述

数据库的特征

  • 数据结构化
  • 实现数据共享
  • 减少数据冗余
  • 数据独立性

数据库类型

  • 网状型数据库:采用记录类型为节点的网状数据模型
  • 层次型数据库:采用层次模型模拟现实世界中按层次组织起来的事物
  • 关系型数据库:采用二维表结构组织和管理数据,并规定了表内的表间的依赖关系

MySQL数据库介绍

  • SQL语言主要是用来操作关系型数据库的一门语言,称之为结构化查询语句

SQL语句主要分为:

  • DQL:数据查询语言,用于对数据进行查询,如select
  • DML:数据操作语言,如数据进行增加,修改,删除,如insert,updata,delete
  • TPL:事物处理语言,对事物进行处理,包括begin transaction,commit,rollback
  • DCL:数据控制语言,进行授权与权限回收,如grant,revoke
  • DDL:数据定义语言,进行数据库,表的管理等,如create,drop
  • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor

在Linux 上安装MySQL数据库

安装服务端:(安装服务端的时候会自动安装客户端
下载安装→ apt-get install mysql-server

查看服务是否启动
在root权限下→service mysql status
停止服务→ service mysql stop
重启服务→ service mysql restart

安装好之后配置远程登录:(我是用的腾讯云的Ubuntu)

启动服务:

service mysql start

查看服务是否启动:

在root权限下→service mysql status
如图:

root@VM-4-5-ubuntu:/# service mysql start #启动mysql
root@VM-4-5-ubuntu:/# service mysql status #查看mysql状态
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-09 18:30:41 CST; 8s ago
    Process: 440793 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, stat>
   Main PID: 440820 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 4608)
     Memory: 353.9M
     CGroup: /system.slice/mysql.service
             └─440820 /usr/sbin/mysqld

Oct 09 18:30:40 VM-4-5-ubuntu systemd[1]: Starting MySQL Community Server...
Oct 09 18:30:41 VM-4-5-ubuntu systemd[1]: Started MySQL Community Server.

进入mysql并选择mysql数据库:
root@VM-4-5-ubuntu:/home/lighthouse# mysql #进入myql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.26-0ubuntu0.20.04.3 (Ubuntu)

Copyright (c) 2000, 2021, 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> use mysql   #选择使用mysql数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

配置远程连接:

首先修改root密码:

mysql> update user set authentication_string='12345678' where user='root'; #修改密码语句
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges; #更新语句
Query OK, 0 rows affected (0.01 sec)

将user表中的root的host改为所有地址

mysql> update user set host='%' where user='root';  #将localhost改成所有人可以访问,‘%’表示所有用户
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

登录mysql 数据库

命令: mysql -u root -p[密码]

数据库管理

查看数据库版本:

  • select version();

显示当前时间:

  • select now();

查看所有数据库:

  • show databases;

创建数据库:

  • create database 数据库名 charset=utf8;
    一定要指定编码utf8

切换数据库:

  • use 数据库名

查看目前正在使用的数据库:

  • select database();

删除数据库:

  • drop database 数据库名;

数据库表管理-数据表设计

相关定义:

  • 数据表设计包括ER图、表的主键、字段、数据类型、约束、表之间的关系的设计

  • ER(Entity-Relationship)模型:即实体-关系模型主要用于定义数据的存储需求。E-R模型由实体、属性和关系三个基本要素构成

  • 主键(Primary Key):数据库表中的每一行记录都必须是唯一的,即在同一张表中不允许出现完全相同的两条记录,所以为保证‘唯一性’,就为表定义一个主键
    主键的特征
    1.表的主键可以由一个字段构成,也可以由多个字段构成(这种情况称为复合主键)
    2.数据表中主键具有唯一性且不能取空值(NULL),当数据库表中的主键由多个字段构成时,每个字段都不能取NULL值

  • 实体之间的关系:如一个班,班级实体和班主任实体之间为一对一关系,班级实体和学生实体之间为一对多关系,学生实体和课程实体之间为多对多关系

  • 外键:实体间的关系可以通过外键来表示。如果表A中的一个字段a对应于表B中的主键b,则字段a称为表A的外键。此时存储在表A中字段a的值也是表B主键b的值

  • 约束:约束是定义在表上的一种强制规则,当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将失败

约束类型说明
NOT NULL非空约束,指定某列的所有行数据不能包含空值
UNIQUE唯一性约束,指定列或者列的组合的所有行数数据必须唯一
PRIMARY KEY主键约束,在列及引用列上建立的一种强制依赖关系
FOREIGN KEY外键约束,在列及引用列上建立的一种强制依赖关系
CHECK检查性约束,在列上指定一个必须满足的条件

查看当前数据库中的表

  • show tables;

创建表

  • create table 表名();
    如创建一个学生表:
mysql> create table students(id int unsigned auto_increment primary key not null,name varchar(10) not null,is_delete bit(1) not null default 0,address varchar(50));
Query OK, 0 rows affected (0.04 sec)

mysql> desc students;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int unsigned | NO   | PRI | NULL    | auto_increment |
| name      | varchar(10)  | NO   |     | NULL    |                |
| is_delete | bit(1)       | NO   |     | b'0'    |                |
| address   | varchar(50)  | YES  |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)


mysql> 

comment注释

在创建表的时候,如果字段很多,防止忘记字段是存什么数据的,可以给字段添加注释

显示表

  • desc 表名;

查看创建表的sql语句

命令: show create table 表名;

添加列

  • alter table 表名 add 列名 类型;

删除列

  • alter table 表名 drop 列名;

修改列

  • 第一种,不修改列名值修改类型及约束
    命令:alter table 表名 modify 列名 类型及约束;
mysql> alter table students modify address varchar(10) not null;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc students
    -> ;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int unsigned | NO   | PRI | NULL    | auto_increment |
| name      | varchar(10)  | NO   |     | NULL    |                |
| is_delete | bit(1)       | NO   |     | b'0'    |                |
| address   | varchar(10)  | NO   |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
  • 第二种,需要修改字段名字
    命令:alter table 表名 change 原名 新名 类型及约束;

数据库操作

查询语句

  • select * from 表名; →查询该表的所有内容
  • select 字段1,字段2 from 表名;→指定两列查看内容

插入数据

  • insert into 表名 values(…);→全列插入
  • insert into 表名 values (…),(…),(…);→全列多行插入
  • insert into 表名(字段1,字段2) values(…)(…);→部分列多行插入

修改数据

  • update 表名 set 字段=xxx where 字段=xxx;

删除数据

  • delete from 表名 where 字段名=xxx;

备份和恢复数据库

备份

  • mysqldump -uroot -p 数据库名>保存的文件名.sql;→备份数据库的所有表的数据
  • mysqldump -uroot -p 数据库名 表名>保存的文件名.sql;→备份数据库的所有表的数据;→备份数据库选中的表的数据

恢复

  • mysql -uroot -p 新数据库名 < 保存的文件名.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值