数据库的概念?怎么在linux内安装数据库?怎么使用?

news2024/9/20 9:26:10

目录

一、概念

二、mysql安装及设置

1.安装mysql

2.数据库服务启动停止

三、数据库基本操作

1、数据库的登录及退出

2、数据表的操作

3、mysql查询操作


一、概念

  • 数据库:是存放数据的仓库,它是一个按数据结构来存储和管理数据的计算机软件系统
  • 数据库管理系统:是数据库系统的核心组成部分,主要完成对数据库的操作与管理功能,例如实现数据的存储,查询,修改,删除,及数据库用户的管理,权限管理等。
  • RDBMS:关系数据库管理系统(Relational Database Management System)
  • SQL :结构化查询语言(Structured Query Language),端口号1433.
  • mysql 数据库是一种C/S模型(即客户端和服务端模型),在传输层,使用TCP协议通讯。客户单通过用户名,密码登录连接服务器,端口号3306。连接成功后才可以进行数据库的操作(增删改查)。如下图所示:

数据库分类

  • 关系型数据库 :指采用了关系模型来组织数据的数据库,关系模型就是指二维表格模型,而一个关系型 数据库就是由二维表及其之间的联系所组成的一个数据组织。
    • 关系型数据库核心元素:数据行(一条记录),数据列(字段), 数据表(数据行的集合),数据库(数 据表的集合)。
    • 关系型数据库产品: oracle , mysql, sqlite ,DB2, Microsoft Sql Server
  • 非关系型数据库(nosql) : 指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。
    • 非关系型数据库以键值对存储,且结构不固定。(ACID,指原子性,一致性,隔离性,持久性)
    • 非关系型数据库产品: memcache , redis , mongodb, hbase

二、mysql安装及设置

1.安装mysql

这里介绍ubuntu发行版本上使用apt命令安装的步骤。

 linux上安装数据库,通过输入如下命令执行安装:

  • sudo su
  • apt install mysql-server

2.数据库服务启动停止

(1)检查服务器状态

命令为:

  • service mysql statu
  • systemctl status mysql.service

(2)重启|停止|启动 数据库

如果不是管理员需要在命令前面加上 sudo

  • 重启: /etc/init.d/mysql restart
  • 停止: /etc/init.d/mysql stop
  • 启动: /etc/init.d/mysql start

或者执行如下命令

  • root@stu-virtual-machine:/home/stu# service mysql restart
  • root@stu-virtual-machine:/home/stu# service mysql stop
  • root@stu-virtual-machine:/home/stu# service mysql start

(3)连接数据库

命令

  • mysql -uroot -p

mysql:数据库管理系统客户端

(4)用户管理与授权

查看用户信息

  • mysql> select user,host,plugin from mysql.user;

创建用户 

  • mysql> create user 'stu'@'localhost' identified by 'Iabc_123456';

创建用户指定加密方式

  • mysql> create user 'stu1'@'localhost' identified WITH mysql_native_password by 'Iabc_123456';

更新用户密码,指定加密方式,注意密码强度大小写数字

  • ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Iabc_123456';

创建管理员远程登陆用户

  • create user 'root'@'%' identified WITH mysql_native_password by '1111111';

更新用户密码,指定加密方式,注意密码强度大小写数字

  • ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Iabc_123456';

授权用户对那些数据库的那些表可以进行操作

  • 指定user_name用户可以从任意地点登录访问所有数据库的所有表
  • GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%' identified by '密码' GRANT ALL ON database_name.table_name TO 'user_name'@'localhost'

删除用户

  • drop user 'name'@'localhost';

三、数据库基本操作

1、数据库的登录及退出

1、连接数据库

  • mysql -u用户名 -h主机地址(省略代表本机) -p密码 

退出数据库,以下三种方式都可以:

  • exit
  • quit
  • ctrl+d

2、查看所有数据库

  • show databases; 要注意所有sql语句结尾都有 ‘;’分号

3、显示数据库版本

  • select version();

4、显示时间

  • select now();

5、创建数据库

  • create database 数据库名
  • create database 数据库名 charset=utf8;

6、查看创建数据库的语句

  • show create database 数据库名

7、查看当前使用的数据库

  • 查看当前使用的是哪个数据库 :select database();
  • 为null代表没有选择使用的数据库。

8、查看当前用户

  • 查看当前登录的是哪个用户:select user();

9、使用某个数据库

  • 登录到mysql后,里面创建有很多数据库,选择要使用的某一个数据库: use 数据库名

10、删除数据库

  • 删除数据库: drop database 数据库名

2、数据表的操作

1、查看当前数据库中所有表

  • show tables;

2、创建表

创建表时,需要指定各个字段的类型,常见类型如下: 数值类型(部分)

 字符串,部分类型如下:

 日期时间类型:

约束

  • 主键 primary key : 物理上存储的顺序
  • 非空 not null : 此字段不允许填写空值
  • 唯一unique: 此字段的值不允许重复
  • 默认default: 当不填写此值时,会使用默认值。如果填写时,以填写的值为准
  • 外键foreign key : 对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则写成功,如果不存在则写失败。 虽然外键约束可以保证数据的有效性,但是在进行 数据的crud(增加,修改,删除,查询)时,都会降低数据库的性能。
  • auto_increment 表示自动增长 

创建表的命令 :

  • create table 数据库表名字 ( 字段 类型 约束 [, 字段,类型 约束] ); 中括弧中的可以省

未使用约束

  •  create table student1(id int, name varchar(30));

对id 字段使用约束

  • create table student2(id int primary key not null auto_increment, name varchar(30));

执行以上示例,创建 student1,student2表。

  • mysql> create table student1(id int, name varchar(30)); 
  • mysql> create table student2(id int primary key not null auto_increment, name varchar(30)); 

创建一个students的表

  • mysql> create table students(
  • -> id int unsigned not null auto_increment primary key,
  • -> name varchar(30),
  • -> age tinyint unsigned default 0,
  • -> high decimal(5,2),
  • -> gender enum("男","女") default "男",
  • -> cls_id int unsigned
  • -> );

3、查看表结构

查看表结构也就是的各个字段的信息。

  • desc 表名;

4、查看创建表的语句

查看创建表的语句

  • show create table 表名
  • #另一种查看方式以\G结尾,格式更好一些
  • show create table 表名\G

5、向表中插入,更新,删除数据

插入数据

  • 使用 insert into 表名values(字段1的值,字段2的值...);
  • mysql> insert into students values(1,"小明",23,162.22,"男",1001);

更新数据

  • 使用update 更新记录,示例如下:
  • mysql> update student set name='小李' where id=102;

删除数据

  • 使用delete删除表中的行,可以删除指定行,也可以删除所有行
  • mysql> select * from student;

6、查看表中数据

使用 select * from 表名;

  • mysql> select * from students;

也可以指定查询某几个字段: select id, name from students;

  • mysql> select id, name from students;

mysql中注释使用

  • "--"

7、修改表名字

修改表的名字,使用 alter table 原表名 rename [to] 新表名; 其中to可以省略

  • mysql> show tables;

8、修改表字段信息

修改表--添加字段

  • alter table 表名 add 列名 类型; 示例: alter table students add birthday datetime;
  • mysql> alter table students add birthday datetime;

修改字段-- 重新命名

  • alter table 表名 change 原字段名 新字段名 类型及约束;

修改字段-- 不改名字

  • alter table 表名 modify 列名 类型及约束;

修改表--删除字段

  • alter table 表名 drop 列名:

修改字段排列位置

  • ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST | AFTER 属性名2;

修改表的存储引擎

  • 常见引擎:MyISAM, InnoDB
  • mysql> alter table student3 engine=myisam;

9 、删除表

  • drop table 表名;

3、mysql查询操作

1 、基本查询

查询所有字段

  • select * from 表名;

查询指定字段

  • select 列1, 列2,... from 表名;
  • select 表名.字段 ... from 表名;

使用as给字段起别名

  • select 字段 as 名字 ... from 表名;

使用as给表起别名

  • select 别名.字段 .... from 表名 as 别名;

消除重复行

  • distinct 字段
  • mysql> select addr from student ;

2 、条件

比较运算

  •  select ... from 表名 where ... 大于 > , 小于 < , 大于等于 >=, 小于等于 <=, 相等 = , 不相等 !=
  • #查询年龄大于18岁的学生信息
  • select * from student where age > 18;
  • #查询年龄为18的所有学生,注意等号只有一个
  • select * from student where age = 18;

逻辑运算: and, or , not

  • #查询年龄在18到24岁之间的所有学生
  • select * from student where age > 18 and age < 24;
  • #查询18岁以上的所有女性
  • select * from student where age > 18 and gender = "女";
  • #查询年龄在18岁以上,或者 身高在180及以上的学生
  • select * from student where age > 18 or height >= 180;
  • #不在 18岁以上,并且是男生
  • select *from student where not age > 18 and gender = "男";
  • #不在 18岁以上的男生 这个范围的学生
  • select * from student where not (age > 18 and gender = "男");

模糊查询

like :% 替换一个或多个

_ 替换一个

  • #查询姓名中以 “小” 开始的名字
  • select name from student where name like "小%";
  • #查询姓名中 含有“小”字,的所有名字
  • select name from student where name like "%小%";
  • #查询有两个字的名字
  • select name from student where name like "__";
  • #查询名字至少有2个字的名字
  • select name from student where name like "__%";

范围查询

in, not int,

不连续范围 between ... and ... ,

not between ... and ... 连续范围

空判断: is null

判非空: is not null

  • #查询年龄为18,20,24的学生信息
  • select name,age from student where age = 18 or age=20 or age = 34 ; select name,age from student where age in (18,20,24);
  • #查询年龄不是18,20,24的学生信息
  • select name ,age from student where age not in (18,20,24);
  • #查询年龄在18到24岁之间的所有学生信息
  • select name, age from student where age between 18 and 24;
  • #查询年龄不在18到24岁之间的
  • select * from student where age not between 18 and 24;
  • #查询学生住址为空的学生
  • select * from student where addr is null;

3 、排序

order by 字段 , 默认是升序 从小到大 asc, 需要降序从大到小 ,加上 desc 可以对多个字段进行判断

  • #查询年龄在18岁以上的学生,年龄安从小到大
  • select * from student where age > 18 order by age;
  • #查询年龄在18岁以上的学生,年龄安从大到小
  • select * from student where age > 18 order by age desc;
  • #查询年龄在18 到24之间的学生,按照年龄从小到大,身高从高到低排序
  • select * from student where (age between 18 and 34 ) order by age asc, height desc;

4 、聚合函数

count() 总数, max() 最大值, min() 最小值, sum()求和, avg() 平均值, round()四舍五入

  • #查询男生有多少人
  • select count(*) from student where gender='男';
  • #查询最大年龄
  • select max(age) from student;
  • #查询年龄最小值
  • select min(age) from student;
  • #计算所有人的年龄总和
  • select sum(age) from student;
  • #计算平均年龄
  • select avg(age) from student; 或 select sum(age) / count(*) from student;
  • #算平均年龄,设置平均年龄的小数位数
  • select round(sum(age) / count(*),2) from student;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/458719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BM38-在二叉树中找到两个节点的最近公共祖先

题目 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2&#xff0c;请找到 o1 和 o2 的最近公共祖先节点。 数据范围&#xff1a;树上节点数满足 1≤n≤10^5 , 节点值val满足区间 [0,n) 要求&#xff1a;时间复杂度 O(n) 注&#xff1a;本题保证二叉树…

深入理解Javascript事件处理机制

深入理解javascript事件处理机制 前言 在开发web应用程序时&#xff0c;事件处理机制是javascript中至关重要的一部分。许多高级特性&#xff0c;如事件冒泡、事件捕获和事件委托&#xff0c;都是通过事件处理来实现的。熟练掌握这些技术可以帮助我们更好地组织代码、提高代码…

腾讯多媒体实验室画质增强技术的前沿应用

全真互联时代&#xff0c;音视频技术内核不断更新迭代&#xff0c;LiveVideoStackCon 2022 北京站邀请到腾讯多媒体实验室视频技术研发负责人——夏珍&#xff0c;与大家分享画质增强技术的一些前沿探索和应用研究&#xff0c;在经典影像中非常重要的画质提升技术人脸修复和去压…

告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 服务器软件&#xff1a;apache-tomcat-8.5.27 目录 一. Servlet、Filter、Listener的注解方式是什么&#xff1f;二. 为什么要使用Servlet、Filter、Listener的注解方式&#xff1f;三…

【架构】互联网应用开发架构演进历程

文章目录 一、背景二、技术架构演进史三、架构演进一: 早期雏形四、架构演进二: 数据库开发&#xff08;LAMP特长&#xff09;五、架构演进三: javaweb的雏形六、架构演进四: javaweb的集群发展​七、架构演进五: javaweb的分布式发展八、架构演进六: javaweb的微服务发展​8.1…

开源 AI 辅助编程工具 AutoDev 现已上架 Jetbrains 插件市场

我们非常高兴地宣布 AutoDev v0.2.0 的发布&#xff01;AutoDev 是一款强大的 AI 辅助编程工具&#xff0c;可以与 Jetbrains 系列 IDE 无缝集成&#xff08;VS Code 支持正在开发中&#xff09;。通过与需求管理系统&#xff08;如 Github Issue 等&#xff09;直接对接&#…

WPF教程(八)--数据绑定(1)--基础概述

使用WPF可以很方便的设计出强大的用户界面&#xff0c;同时 WPF提供了数据绑定功能。WPF的数据绑定跟Winform与ASP.NET中的数据绑定功能类似&#xff0c;但也有所不同&#xff0c;在 WPF中以通过后台代码绑定、前台XAML中进行绑定&#xff0c;或者两者组合的方式进行数据绑定。…

用python制作剪刀石头布的小游戏

1 问题 在python中我们学习了条件语句&#xff0c;那么我们是否可以通过python中条件判断的功能来写出可以判断胜负的剪刀石头布小游戏呢? 2 方法 导入随机函数&#xff0c;保证胜负的随机性 设置对应数值&#xff0c;写好判断输赢的条件语句 运行并查看结果 代码清单 1 impor…

斯坦福| ChatGPT用于生成式搜索引擎的可行性

文&#xff5c;智商掉了一地 随着 ChatGPT 在文本生成领域迈出了重要一步&#xff0c;Bing 浏览器也接入了聊天机器人功能&#xff0c;因此如何保证 Bing Chat 等搜索引擎结果的精确率和真实性也成为了搜索领域的热门话题之一。 当我们使用搜索引擎时&#xff0c;往往希望搜索结…

教你如何进行DNS域名解析

目录 一:DNS系统介绍 1.DNS服务概述 2.DNS域名空间介绍 3.DNS 域名结构 4.DNS解析方式 5.DNS查询方式 &#xff08;1&#xff09;递归查询 &#xff08;2&#xff09;迭代查询 6.DNS服务器类型&#xff1a; (1)主域名服务器 (2)从域名服务器 (3)缓存域名服务器 (4)…

Android进阶宝典 -- 解读Handler机制核心源码,让ANR无处可藏

其实ANR核心本质就是让UI线程&#xff08;主线程&#xff09;等了太久&#xff0c;导致系统判定在主线程做了耗时操作导致ANR。当我们执行任何一个任务的时候&#xff0c;在Framework底层是通过消息机制来维护任务的分发&#xff0c;从下面这个日志可以看到&#xff0c; "…

thrift、go与php

学习一下thrift。 环境 mac m1&#xff0c;go 1.20&#xff0c;php 7.4&#xff0c;thrift 0.18.1 要学习thrift&#xff0c;第一步得先安装 $ brew install thrift学习的计划是用go作为server&#xff0c;php作为client&#xff0c;通过thrift的方式完成一次请求demo。 建…

Java语言的特点和八大基本类型

“byte和short两兄弟去找int问long去哪了” “int摇摇头说不知道” “此时float和double两兄弟也来凑热闹” “共同商议后决定去找char询问” “char面对五人的询问只好说boolean知道” “六人来到boolean的住处发现long竟然在玩猜真假游戏” Java语言的特点 1.简单易学…

个性化学习路径推荐综述

源自&#xff1a;软件学报 作者&#xff1a;云岳 代欢 张育培 尚学群 李战怀 摘 要 近年来, 伴随着现代信息技术的迅猛发展, 以人工智能为代表的新兴技术在教育领域得到了广泛应用, 引发了学习理念和方式的深刻变革. 在这种大背景下, 在线学习超越了时空的限制,…

2023年电信推出新套餐:月租19元=135G流量+长期套餐+无合约期!

在三大运营商推出的流量卡当中&#xff0c;电信可以说是性价比最高的一个&#xff0c;相对于其他两家运营商&#xff0c;完全符合我们低月租&#xff0c;大流量的要求&#xff0c;所以&#xff0c;今天小编介绍的还是电信流量卡。 在这里说一下&#xff0c;小编推荐的卡都是免…

教你怎样用PXE高效的批量网络装机

目录 一&#xff1a;PXE介绍 1.XPE概述 2.PXE批量部署的优点 3.搭建PXE各部作用 &#xff08;1&#xff09;PXE(Preboot eXcution Environment) &#xff08;2&#xff09;服务端 &#xff08;3&#xff09;客户端 二&#xff1a;部署PXE服务 1.安装并启用TFTP服务 2.安…

Tiktok/抖音旋转验证码

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 抖音系的旋转验证码,跟得物一样,都是内外圈一起…

blast的-max_target_seqs?

Shah, N., Nute, M.G., Warnow, T., and Pop, M. (2018). Misunderstood parameter of NCBI BLAST impacts the correctness of bioinformatics workflows. Bioinformatics. 杂志Bioinformatics以letter to the editor的形式刊发了来自美国马里兰大学计算机系的Nidhi Shah等人…

基于html+css的图展示42

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

安卓设备远程管理软件

现在&#xff0c;安卓设备广泛应用于各类智能硬件&#xff0c;有时候我们需要远程管理这些安卓设备。远程管理软件使 IT 管理员能够从任何地方控制和管理安卓设备&#xff0c;确保它们安全、最新并以最佳水平运行。在本文中&#xff0c;我们将介绍一些当前主流的安卓设备远程管…