一、数据库的概念和相关的语法和规范

1、数据库的概念

数据库:组织,存储,管理数据的仓库。

数据库的管理系统(DBMS):实现对数据有效组织,管理和存取的系统软件。

数据库的种类:

mysql 、oracle 大数据系统一般使用、 sql-server、 MariaDB 也是mysql 也叫mysqld 、 postgreSQL 大象数据库。

2、关系型数据库和非关系型数据库

关系型数据库:mysql oracle postgreSQL

关系型存储的结构:是一张二维的表格,表里面有行和列

列:是对象,字段

行:对象的信息,字段的属性

行+列组成一张表

非关系型数据库:

缓存型数据库:arredis

索引型数据库:ES

文档型数据库:MongoDB

键值对形式存储的结构 key value

关系型数据库和非关系型数据库优缺点:

关系型的优点:表的结构清晰,逻辑容易整理,记录的证据比较完整。

缺点:读写速度比较慢,并发量差,数据迁移比较麻烦。

非关系型数据库:

优点:可以进行高并发读写,对海量数据依旧可以保持高效率的存储和访问,架构可拓展

缺点:键值对形式存储,数据逻辑比较复杂,数据是保存子在缓存(内存)当中的(redis)如果意外重启所有数据都会丢失。

3、mysql的数据类型

char:固定长度的字符类型,用于存储固定长度的字符串。

varchar:可变长度的字符类型,存储的是可变长度的字符串。

char定义好了长度之后,不论写的值多少,都会占用固定长度的字节大小,保存在磁盘上都是接点字节。

varchar 在保存字符串是时,多少就是保存多少,在保存的字符串结尾默认有一个隐藏的结束符,会多占一个字节。

varchar比char节约磁盘。

读写速度方面:

char的读写性能高于varchar,char是连续的磁盘空间,保存的内容是连续的。

varchar在增删改查之后,会产生一个磁盘空间的碎片文件,影响读写性能。

int :存储的数据类型为整数。

float:浮点数,小数点(float(m:d))m表示总位数,d表示小数位数。

double:双精度浮点数,(double(m:d))m表示总位数,d表示小数位数。

date类型用于存储日子,YYYY-MM-DD datetime用来存储日期和时间 YYYY-MM-DD HH:MM:SS timestamp和dateime类型,但是他可以自动记录当前时间。

decimal(5,2)存储浮点数,压精度的浮点数,5表示总数位,2表示小数位。

4、数据库的管理

增删改查-----------sql语句

sql中的名词:

数据库:database

表:table

行:row

列:column

索引:index

视图:view

用户:user

权限:privilege

存储过程:procedure

存储函数:function

调度器:exent

5、sql的语言规范

在数据库系统中,sql语言不区分大小写的,但是建议用大写。

sql语句可以单行也可以多行,但是必须要以“;”结尾。

命名规范:库名,表名,列的名字,必须都是字母开头,后面可以数字。后面也可以跟上特殊符号。

不要使用mysql的保留字,table select show。

数据库,表面,用户名严格区分大小写。

6、sql语言的分类

1、DDL 数据库定义语言:创建数据的对象语言,库,表和索引等等

create drop

2、DML:数据库操作语言,对表里面的数据进行管理

select update insert delete

3、DQL:数据库查询语言,数据的查询语句

select

4、DCL数据控制语言,控制和管理数据用户的角色和权限。

grant 赋权 revoke取消权限

5、tcl事务控制语言,用来管理的数据库的事务,脚本开发,存储过程等等

commit rollback savepoint

二、数据库安装

安装使用的是绿色硬盘版本,无需额外安装依赖环境,也不需要麻烦的编译安装,因为比较简单

将安装包拖进/opt目录下

cd /opt
tar -xf mysql安装包
mv 解压出的目录 /usr/local/mysql
#创建程序用户
useradd -M -s /sbin/nologin mysql
#mysql的主配置文件设定所属用户和组
chown -R mysql.mysql /usr/local/mysql/
chown mysql.mysql /etc/my.cnf

修改配置文件

vim /etc/my.cnf
[client]
port = 3306
#客户端访问的端口
socket=/usr/local/mysql/mysql.sock
#指定MySQL的通信套接字文件

[mysqld]
user = mysql
basedir=/usr/local/mysql
#MySQL的安装目录
datadir=/usr/local/mysql/data
#MySQL数据保存的目录
port = 3306
#服务端的端口
character-set-server=utf8
#字符集的编码
pid-file = /usr/local/mysql/mysqld.pid
#pid文件位置
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
#表示任意地址都可以访问数据库
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
#MySQL默认的存储引擎
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#MySQL支持的数据类型和相关的模块

  设置环境变量,声明/宣告MySQL命令便于系统识别:

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

  初始化数据库:

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

  设置系统识别,进行操作:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl daemon-reload
systemctl restart mysqld

这样一个数据库就安装成功了。

三、使用数据库(增删改查)

1、基础操作

初始化数据库密码:

mysqladmin -u root -p password "123456"
#在交互界面直接回车,不要输入!

进入数据库:

mysql -u root -p123456
#进入数据库交互界面
show databases;
#创建用户并设置密码
create user 'root'@"%" identified by '123456';
#赋予远程连接的权限
grant all privileges on *.* to 'root'@'%';
#刷新生效
flush privileges;
#修改加密方式,可以进行远程连接
alter user 'root'@'%' identified with mysql_native_password by "123456";
exit;

这就可以使用本地的数据库软件进行连接。

创建一个表

CREATE table stu03(
#表名是stu03
id int(5),
name char(10),
date_time date not null,
#不能为空
data_times datetime,
date_time1 timestamp not null,
PRIMARY KEY (id)
);

 添加一条数据

INSERT into stu03 VALUES(1,2,'2024-07-08','2024-09-08 09:09:00',NOW());#插入数据

 查看效果

删除表

DROP TABLE stu03;

创建表 

CREATE TABLE stu (
id int(4) not null,
name CHAR(10) not null,
score decimal(5,2)
);

查看

2、insert插入数据

语法1

insert into 表名(字段1,字段2,字段3)values (值1,值2,值3);

insert into stu (id,name,score) VALUES (1,'zhangsan',87.5);

字符串需要使用单引号引起来。

语法2

insert into 表名 values(1,'lisi',88.7);

查看全部内容

SELECT * from stu; 查询所有

null和空值之间的区别:

null就是啥也没有,就是为空

空值也是值,只是值是空的

3、修改和更新update

update 表名 set 列名=值where 条件;

UPDATE stu set score=90 WHERE id=3;

4、删除delete表的数据

delete from 表面 where 条件;

删除lisi字段

DELETE from student WHERE id=2;

 查看

SELECT * from student;

5、 DQL语句,select查询语句

 只看name 和score所在列  

查看指定行limit  

SELECT * from student LIMIT 1,3;

 表示查询你从第一行开始的后面是三行,包括自己

去重查询

SELECT DISTINCT name FROM student; 

 去重

不能多个去重  

SELECT DISTINCT name,score FROM student; 

 

根据一个条件进行查找  

SELECT * from student WHERE id=7;

多个条件逻辑或,只需要有一个成立即可  

SELECT * from student WHERE id=7 or score=99;

多个条件逻辑且,必须同时满足,否则为空  

SELECT * from student WHERE id=7 and score=99;

 

SELECT * from student WHERE id=8 and score=99;

 

模糊查询like

 

select * from student where name like '王%'; 查询以王为开头的
select * from student where name like '%二'; 以二为结尾
select * from student where name like '%王%'; 包含有王字的

 

6、 更新alter

alter修改表面和修改表结构

 

 

alter table student rename stu;

 

 

修改表结构

给表添加一个列

ALTER TABLE stu add address VARCHAR(50) DEFAULT '地址不详';

查看修改字段的数据类型 

desc stu;

 

ALTER TABLE stu MODIFY COLUMN address CHAR(10);
desc stu;

 

 删除列

ALTER TABLE stu DROP address;

修改name列的名称  

ALTER TABLE stu change name uname char(10);

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部