目录
操作系统介绍
Linux操作系统有 redhat Centos Deban
国产操作系统有 华为欧拉 阿里龙蜥 银河麒麟 中标麒麟
数据库分为两大类:关系型数据库SQL 非关系型数据库NoSQL
关系型数据库代表有:mysql
一、数据库基本概念
数据:描述事务的符号记录、包括数字,文字,图形,图像,声音,档案记录等
以"记录"形式按统一格式进行存储
表:将不同的记录组织在一起,用来存储具体数据
数据库管理系统(DBMS)
二、当今主流数据库
(1)SQL Server(微软公司产品)
- 面向Windows操作系统
- 简单、易用
(2)Oracle(甲骨文公司产品)
- 面向所以主流平台
- 安全、完善、操作复杂
(3)DB2(IBM公司产品)
- 面向所有主流平台
- 大型、安全、完善
(4)MySQL(甲骨文公司收购)
- 免费、开源、体积小
三、关系型数据库
- 关系数据库系统是基于关系模型的数据库系统
- 关系模型的数据结构使用简单易懂的二维数据表
- 关系模型可用简单的"实体-关系"(E-R)图来表示
- E-R图中包含了实体(数据对象)、关系和属性三个要素
(1)实体
- 也称为实例,对应现实世界中可区别于其他对象的"事件"或事物'
- 如银行客户、银行账户等
(2)属性
- 实体所具有的某一特性,一个实体可以有多个属性。
- 如"银行客户"实体集中的每个实体均具有姓名、住址、电话等属性
(3)联系
- 实体集之间的对应关系称为联系,也称为关系
- 如银行客户和银行账户之间存在"储蓄"的关系
(4)所有实体及实体之间联系的集合构成一个关系数据库
总结:关系型数据库 SQL 存储结构:二维表格 存储的数据:结构化数据 使用场景:用于存储业务数据,账户信息等
对象:库 > 表 > 二维表格形式化的数据
行:(记录)用来描述一个对象的信息
列:(字段)用来描述对象属性
四、非关系型数据库
1、非关系数据库介绍
(1)非关系数据库也被称作NoSQL(Not Only SQL)
(2)存储数据不以关系模型为依据,不需要固定的表格式
(3)非关系型数据库的优点
- 数据库可高并发读写
- ·对海量数据高效率存储与访问
- 数据库具有高扩展性与高可用性
(4)常用的非关系数据库:Redis、mongoDB等
非关系型数据库(Nosql) 存储结构:不同类型的Nosql采用不同的存储结构,比如键值对,文档,索引,时间序列等方式
缓存型数据库:Redis
五、MySQL介绍
分为商业版 社区版
六、mysql得操作
常用得数据类型:int :整型 无符号
float:单精度浮点
double:双精度浮点
char:固定长度字符
varchar:可变长度得字符类型
text:文本
image:图片
注意:char(4)意思就是 固定4个字符 就算输入一个字符 输出得也是4个
varchar(4):意思就是可变得 我输入一个字符他就输出一个字符+一个结束字符
6.1、查看数据库结构
select version(); #查看数据库版本信息
select user(); #查看用户信息及连接名
6.2、查看当前服务器中的数据库
show database; #查看当前服务器中的数据库 大小写不区分
user 数据库名; #切换到库
show tables; #查看所有表
use 数据库名
desc 数据库名.表名 #查看表结构 另一种方式 desc 表名
6.3、sql语句
SQL语言分类:
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
6.4、创建及删除数据库和表
create database 库名; #创建库名
create table 表名(字段1 数据类型1,字段2 数据类型2......,primary key(主键名)); #创建表名 一个表只有一个主键 且不能为空
例子:create database ll; #创建ll数据库名
create table student(id int,name char(5),sex char(2),age int,primary key(id));
#创建一个student的表名 字段有 id name sex age 主键是id
#删除指定的数据表
use 表名;
drop table 表名;
#删除指定的数据库
drop database 数据库名;
6.5、插入语句
#向数据表中插入新的数据记录
insert into 表名(字段1,字段2...)valuse(值1,值2...);
或者
insert into 表名 valuse(值1,值2...);这样就按照字段顺序插入
6.6、查询语句
#查询语句
select * from 表; #查询所有
select 字段 from 表 where 条件表达式
列:
select id,name from 表名 where id=2;
#分页查询
select * from 表名 limit 2;#只显示前2行
select * from 表名 limit 2,2 #直显示第2行后面的2行
select * from 表名\G #以列的形式显示
6.7、修改语句
#修改更新数据中的记录
update 表名 set 字段1=字段值1 where 条件表达式;
列
update 表名 set name='liliang' where id=1;
6.8、删除语句
#删除表中字段
delect from 表名 where 条件表达式;
列:
delect from 表名 where id=1;
6.9、修改表名和表结构
#修改表名
alter table 旧表名 rename 新表名;
#扩展表结构
alter table 表名 add 字段1 字段类型1,字段2 字段类型2;
#修改字段
alter table 表名 change 旧列名 新列名 数据类型;
#删除字段
alter table 表名 drop 字段名;
七、数据表高级操作
7.1克隆表
#克隆表,将数据表的数据记录生成到新的表中
create table test01 like xy101; #通过 LIKE 方法,复制 xy101 表结构生成 test01 表
#此方法能保证 新表的表结构、表数据 跟旧表都是一致的
insert into test01 select * from xy101;
#此方法创建的新表的表数据和旧表是一样的,但可能会出现新表的表结构和旧表的不一致
CREATE TABLE test02 (SELECT * from xy101);
7.2、清空表数据
#清空test101 所有数据 会返回所有删除的条目 delect 是一行一行删除的 时间长
delete from test01;
#truncate 清空表不会返回条目 格式化表 速度快 id会从1重新开始记录
truncate table test101;
7.3、创建临时表
#临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表
create temporary 表名(字段1 数据类型1,字段2 数据类型2...);
7.4、创建外键约束
外键的定义:如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。
主键表和外键表的理解:
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)
注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
#创建主表 profession
create table profession (pid int(4),proname varchar(50));
#创建从表 student
create table student (id int(4) primary key auto_increment,name varchar(10),age int(3),proid int(4));
#为主表 profession 添加一个主键约束。
alter table profession add constraint primary key (pid);
#插入新的数据记录时,要先主表再从表
insert into profession values(1,'云计算');
insert into profession values(2,'大数据');
insert into student values(1,'zhangsan',18,1);
insert into student values(2,'lisi',19,1);
insert into student values(3,'wangwu',20,2);
#删数数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之关联的表中的记录。
delete from student where proid=1;
delete from profession where pid=1;
#查看和删除外键约束
show create table student;
desc student;
alter table student drop foreign key FK_pro;
alter table student drop key proid;
MySQL中6种常见的约束:
- 主键约束(primary key)
- 外键约束(foreign key)
- 非空约束(not null)
- 唯一性约束(unique [key|index])
- 默认值约束(default)
- 自增约束(auto_increment)
八、数据库用户管理
8.1、新建用户
#新建用户
create user '用户名'@'来源地址' identifiet by '密码'; 明文密码
#加密密码
SELECT PASSWORD('abc123');
CREATE USER 'user2'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
8.2、查看用户信息
#创建后的用户保存在 mysql 数据库的 user 表里
USE mysql;
SELECT User,authentication_string,Host from user;
#查看当前登录用户
select user();
8.3、重命名用户
#重命名用户
rename user 'll'@'localhost' to 'liliang'@'locaclhost';
8.4、删除用户
#删除用户
drop user 'll'@'localhost';
8.5、修改当前登录用户密码
#修改用户密码
set password for 'll'@'localhost' identified by '密码';
#忘记密码修改方式
修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql #直接登录
使用 update 修改 root 密码,刷新数据库
update mysql.user set authentication_string = password('abc123') where user='root';
flush privileges;
quit
mysql -u root -pabc123
注意 密码修改好后 把原来配置里填加的内容删了 要不然一直都是直接登录
8.6、数据库用户授权
#授权所有权限
grant all on 数据库名.表名 to '用户名'@'来源地址' identified by '密码';
注意*.*代表所有数据库.所有表
例子:
#允许用户 zhangsan 在本地查询 mydb 数据库中 所有表的数据记录,但禁止查询其他数据库中的表的记录。
GRANT select ON mydb.* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';
#允许用户 lisi 在所有终端远程连接 mysql ,并拥有所有权限。
GRANT ALL [PRIVILEGES] ON *.* TO 'lisi'@'%' IDENTIFIED BY '123456';
#刷新
flush privileges;
#查看权限
show grants for 用户名@来源地址;
#撤销权限
revoke 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;
例:
revoke all on *.* FROM 'lisi'@'%';