数据库的基本使用

一、数据库的简介

RDBMS简介:

Relational Database Management System,通过表来表示关系类型。当前主要使用两种类型的数据库:关系型数据库和非关系型数据库。所谓的关系型数据库RDBMS是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关系型数据库的主要产品:
oracle:在以前的大型项目中使用,银行,电信等项目;
mysql:web时代使用最广泛的关系型数据库;
my sql server:在微软项目中使用;
sqlite:轻量级数据库,主要应用在移动平台。
在这里插入图片描述

RDBMS包含很多具体的数据库工具:

还有就是mysql,redis,monggodb;
mysql:一般用于网站,存储一些数据;
redis:一般用来缓存;
mongodb:一般用来存储非关系数据结构比如爬虫用

SQL语言:

是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过SQL操作oracle,sql server,mysql,sqlite等所有的关系型数据库

SQL语句主要分为:

DQL:数据查询语言,用于对数据进行查询,如select;
DML:数据操作语言,对数据进行增加、修改、删除,如insert/update/delete;
TPL:事务处理语言,如begin transaction/commit/rollback;
DCL:数据控制语言,进行权限与授权回收,如grant/revoke;
DDL:数据定义语言,进行数据库、表的管理如create/drop等;
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
SQL语言不区分大小写,支持多种数据库工具。

二、Mysql

Mysql简介:

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,现在属于Oracle公司。它是最流行的开源数据库之一,广泛应用于网页应用软件,特别是用于构建动态网站和在线交易系统等基于网络的应用。

MySQL的主要特点包括:

开源:MySQL是开源的,这意味着任何人都可以下载和使用它,而且可以查看和修改其源代码。

性能高:MySQL使用了许多优化技术来提供高性能、高吞吐量的数据读写。

可扩展性强:MySQL可以处理包含上亿条记录的大型数据库,同时也适用于较小的应用程序。

易于使用:MySQL易于安装,并且提供了大量的工具和库来帮助开发者和数据库管理员。

支持多种数据类型:MySQL支持多种数据类型,包括数值、日期和时间、字符串等。

安全性:MySQL提供了一套完整的权限管理系统,可以对用户在每个数据库上的权限进行细粒度的控制。

跨平台:MySQL可以在多种操作系统上运行,包括Linux、Windows、Mac OS等。

因此,无论是在企业级应用还是在个人项目中,MySQL都是一个非常好的关系型数据库选择。

Ubuntu虚拟机安装好,查看采用如下linux命令

在这里插入图片描述

这就登陆上了

在这里插入图片描述

查看版本命令

在这里插入图片描述

调好了,以后输入sudo mysql -u root即可登录mysql

三、Navicat

下载完运行,试用14天
在这里插入图片描述
改了密码,登录,双击变绿连上了
在这里插入图片描述

新建数据库

建好之后双击即可启动连接该数据库(变绿),然后里面的表是最重要的,可以右键teble新建,新建之后可以输入数据,后面有一个钥匙的符号,钥匙就意味着这个字段就是主键主键作用:唯一标记每个记录。
按照一个excel创建表格
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当数据表里数据量巨大的时候,增删改查都将变的很难搞,所以用到sql语句

四、SQL语句

数据库要保证数据的完整性,数据类型的原则是够用就行,尽量使用取值范围小的,而不用大的,这样可以更多节省存储空间。
常用的数据类型:整数:int,bit;
小数:decimal(eg:decimal(5,2)表示共存5位数,小数占两位);
字符串:varchar(eg:varchar(3)表示如果存储‘ab’那么就存储‘ab’),char(eg:char(3)表示如果填充了‘ab’会自动在后面补个空格);
日期时间:data,time,datetime;
枚举类型(比如男女):enum;
字符串text表示存储大文本,当字符大于4000时推荐使用。
对于图片、音频、视频等文件不存在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径。
更全的数据类型可参考:http://blog.csdn.net/anxpp/artical/details/51284106

约束:

1.主键primary key:物理上存储的顺序;
2.非空not null:此字段不允许填写空值;
3.唯一unique:此字段不允许重复;
4.默认default:当不填写此值时会使用默认值,如果填写时以填写为主;
5.外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。
说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增删改查)时都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证?答:可以在逻辑层进行控制。

命令行脚本对数据库进行操作:

mysql -u root -p(连接数据库);

exit/quit/ctrl+d(退出数据库);

show databases;(展示数据库内容分号别忘了写!!!);

在这里插入图片描述

显示当前数据库时间:select now();

在这里插入图片描述

显示数据库版本:select version();

在这里插入图片描述

创建数据库

:create database
你要创建的数据库名称 charset=utf8;
在这里插入图片描述
在这里插入图片描述
查看创建数据库的语句,可以看看当时创建用的是不是utf-8的设定啥的:show create database python04;
在这里插入图片描述

删除数据库

:drop database 数据库名;如果没有反应那就试试在数据库名加两边各加一个`,键盘左上角那个
在这里插入图片描述
使用数据库:use 数据库名称;
不管你现在何处都可以
查看当前使用的数据库:select database();
在这里插入图片描述

数据表(表设计)操作:

查看当前数据库中所有的表:show tables;

在这里插入图片描述

创建一个数据表

:create table 数据表名字 (字段 类型 约束[,z字段 类型 约束]);
也可以这么写:create table xxx(id int primary key not null auto_increment,name varchar(30))
在这里插入图片描述

查看一个表的结构

:desc 数据表名字;
在这里插入图片描述
创建一个students表:create table students(id int unsigned非负 然后写约束not null auto_increment 主键primary key,name varchar(30),age tinyint unsign default 0,high decimal(5,2),gender enum(“男”,“女”,“保密”) default "保密"默认值,cls_id int unsigned);
–xxxxx前面两个横杠是注释的意思
在这里插入图片描述
在这里插入图片描述

往表里插入数据:

insert into students values(0,“淅淅”,10,188.88,“女”,2201);
查看表中数据:select * from students;
在这里插入图片描述

修改表结构:

添加字段

:alter table 表名 add 列名 类型;(eg:alter table students add birthday datetime;)

修改字段重命名

:alter table 表名 modify 列名 类型及约束;(eg:alter table students change birthday birth datetime not null;)

修改字段不重命名

:alter table 表名 modify 列名 类型及约束;(eg:alter table students modify birth date not null;)

删除字段

:alter table 表名 drop 列名;(eg:alter table students drop birthday;)

删除表

:drop table 表名;(eg:drop table students;)

查看表的创建语句

:show create table 表名;
添加
在这里插入图片描述
修改不重命名
在这里插入图片描述
修改重命名
在这里插入图片描述
删除字段
在这里插入图片描述
删除表
在这里插入图片描述

数据表内数据的增删改查(curd–create.update.retrieve.delect)

查询所有列

select *from 表名;(eg:select *from classes;)
select *from students where name=“道”;

查询name为道的所有信息

select *from students where id>2;

查询指定列

select 列1,列2,… from 表名;(eg:select id,name from classes;)
可以用as为列或表指定别名:select name as 姓名,gender as 性别 from students;

增,插入,insert into 表名 values(…)

没有指明给那个列插入就默认全部插入
部分插入:insert into students(name,gender) values (“道”,2);
多行插入:insert into students(name,gender) values (“风信子”,1),(“多肉”,3);
在这里插入图片描述

部分插入

在这里插入图片描述

多行插入

在这里插入图片描述

修改

update 表名 set 列名=1 where name/id=”你要改的数据“;
update students set gender=1;全改;update students set gender=1 where name=“道”;只要name是道的全改;update students set gender=1 where id=3;id为3的进行修改;update students set age=22,gender=1 where id=3;只要id是3的进行修改。
在这里插入图片描述

删除数据

物理删除

delete from 表名 where 条件
delete from students;–清空数据表
delete from students where name=“风信子”;

逻辑删除

用一个字段来表示,这条信息是否已经不能再用,给students表添加一个is_delete字段bit类型
alter table students add is_delete bit default 0;
想删第5条就可以:update students set is_delete=1 where id=5;
然后就可以用is_delete=1/0进行筛选
在这里插入图片描述

相关推荐

  1. Sqlite数据库基本使用

    2024-04-08 04:30:02       10 阅读
  2. Linux中MongoDB数据库安装配置和基本使用

    2024-04-08 04:30:02       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 04:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 04:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 04:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 04:30:02       18 阅读

热门阅读

  1. C++20 semaphore(信号量) 详解

    2024-04-08 04:30:02       13 阅读
  2. P1162 填涂颜色

    2024-04-08 04:30:02       18 阅读
  3. make命令简介

    2024-04-08 04:30:02       14 阅读
  4. 大学课堂点名程序

    2024-04-08 04:30:02       13 阅读
  5. Docker 入门

    2024-04-08 04:30:02       13 阅读
  6. 【Qt\C++】二维图形化故障树

    2024-04-08 04:30:02       12 阅读
  7. 洛谷 P3512 [POI2010] PIL-Pilots

    2024-04-08 04:30:02       12 阅读
  8. 06-kafka配置

    2024-04-08 04:30:02       10 阅读
  9. 出国留学哪个国家好又便宜

    2024-04-08 04:30:02       46 阅读