数据库:

什么是数据库?

数据库提供一个存储空间用于存放各种数据(其中包括整型、文本、小数、日期等),我们可以将数据库看作是一个存储数据的容器。

数据管理管理系统:

专门用于创建和管理数据库的一套软件。介于操作系统和编程应用程序项目之间。数据库管理系统

  • Access 微软出品, 按键精灵、易语言
  • Sqlite 嵌入式数据 Android 51仿真、 C++(QT)
  • MsSql SqlServer 微软出品 Asp、Asp.net(C#)



  • MySQL 最早是一个大学生组织开发。 而后被德国的AB公司收购! 目前被Oracle收购!

  • 免费开源
  • 6.x之后进行商业收费!
    MySQL5.0 是myisam引擎
    MySQL5.5.5.65.7 是Innodb引擎

  • informax IBM 银行
  • Oracle 甲骨文 大型数据库:
  • 地位:

  • 全球第一大数据库厂商
  • 第二大软件供应商

  • Db2


RDBMS:

关系型数据库

Mysql

Oracle

SQlserver

非关系型数据库

nosql: not only sql 应用于云计算/大数据方面

关系型数据库和非关系型数据库的区别?

1 看 是否 是 二维表!

  • 有无元组
  • 行和列

下载数据库

安装数据库


1命令:


  1. 查询所有数据库
    ​show databases; ​
  2. 选择数据库
    ​use 0315; ​
  3. 查询该数据库内 所有的表
    ​show tables ​


Sql语言划分:

DDL 数据定义语言 Data Definition Language

关键字

描述

create

创建

alter

修改

drop

删除

DCL 数据控制语言 Data Control Language

关键字

描述

grant

赋予权限

revoke

撤销权限


DML 数据操纵语言 Data Manipulation Language

关键字

描述

insert

插入表数据

update

更新表数据

delete[荐 ]/ truncate

删除表数据


DQL 数据查询语言 Data Query Language

关键字

描述

select

查询


TCL 事务控制语言 Transaction Control Language

关键字

描述

begin transaction/savePoint

开启事务/保存点

rollback

回滚

commit

提交


数据库 、 表、 数据 有什么区别?

现有数据库、其次有表、再其次有数据记录


传统类型项目大致有:

缩写

中文描述

ERP

企业资源计划

CRM

客户关系管理

OA

办公自动化系统

MAIL

邮箱系统

BOS

商务操作系统

EHR

人力资源管理

权限管理系统最少要有五张表:

表一

表二

表三

表四

表五

用户

权限

角色

用户_角色

权限_角色


约束信息:

约束名称

中文名称

描述

主键

primary key

表里的唯一标识、自动递增 auto_increment

外键

foreign key

表与表之间关联关系

非空

not null

不许为空

唯一

unique

数据唯一性

检查

check

默认/缺省

defaulte

默认值



1.DDL 数据定义语言。
-- 删除数据库  如果存在则删除 否则跳过!
drop database if EXISTS `crm01`;

create database crm01;

use crm01;
-- 删除用户表 如果存在则删除 否则跳过!
drop table if EXISTS user;

CREATE TABLE user(

id int primary key auto_increment,
name VARCHAR(60) not null unique,
pwd VARCHAR(60) not null,
sex char(6),
birthday date,
type varchar(50) default '普通用户'
);

需求: 需要在刚才的user表再加入一列 如: address

ALTER table user add `address` VARCHAR(255);

需求: 需要在user表基础上更改表名称位users{ 很少用!}

RENAME table user [to] users;

需求: 需要在刚才的user表的一列 addess 更改为 address

alter TABLE users CHANGE  addess  address varchar(50);

需求: 需要在刚才的user表的一列 address 长度更改为200

alter TABLE users MODIFY  address VARCHAR(200);

需求: 创建用户 用户名称叫 旺财! wangcai

create user  wangcai;

需求: 更改用户名称 原用户名称叫 旺财! wangcai 新为小强 xiaoqiang

rename user  wangcai to xiaoqiang ;

需求: 赋予小强权限 查询权限

-- *.* 是一个对象
-- 第一个* 表示任意数据库
-- 第二个* 表示任意表
GRANT SELECT ON *.* to xiaoqiang;

需求: 赋予小强权限

REVOKE SELECT ON *.* from xiaoqiang;

需求: 删除users表

drop table user;

需求:查询表中的所有数据

-- 固定格式: select * from  表的名称
-- `*` 代表的是表中的所有行和所有列
select * from users;

需求: 查询user表的表结构

-- 第一种方式
desc user
-- 第二种方式
show columns from users;

MySQL 注释:


  • 减号 减号 空格 ​​--​
  • 多行注释 以​​/*​​​开头、​​*/​​​结尾 示例代码:​​/**/​
  • 注释代码: ​​#​

DML 数据操纵语言。
插入语句:

格式:

​insert into 表名(字段1,字段2...) values ('字段1的值','字段2的值'...)​

|–- 全部插入语句: 顾名思义 全部的字段

eg

insert [into] users values ('1','jack','123','男','1999-09-09','管理员');

|–- 部分插入语句: 顾名思义 部分的字段

eg: 注意:[] 不可以运用在语句中!

insert into users(name,pwd) values ('rose','1456');
insert into users(name,pwd) values ('王轩','1456');
insert into users(name,pwd) values ('李旺','1456');
insert into users(name,pwd) values ('孙王娃','1456');
insert into users(name,pwd) values ('赵钱孙','1456');
insert into users(name,pwd) values ('冯陈褚','1456');

MySQL学习笔记_数据库

更新语句

格式:

​update 表名 set 字段1 = 字段1新的值 ,字段2 = 字段2新的值 where id = 被修改数据的id​

update users set birthday = '2000-02-02' , sex = '女'  where id = 2;
删除语句
delete  from users where id = 3 ;
DQL 数据查询语言。
单表查询:
查询语句:
select *  from users  ;
SQL优化:
在查询中尽量避免使用 `*` 符号
条件查询语句

需求: 查询id为2号的用户信息

select *   from users where id = 2 ;

需求:查询用户成绩在60~80区间
select * from users where grade BETWEEN 60 and 80;
空值查询语句

需求: 查询出生日期为空的用户的信息

select * from users where birthday  is  null  ;
去重查询语句 – > 多表查询 根据 用户性别查询各自信息

需求: 查询不重复显示用户性别的信息

select *   from users ;
排序查询语句

需求: 在用户表进行安装id倒序排序查询

select  *   from users order by id desc ;

需求: 在用户表进行安装id升序排序查询

select  *   from users order by id asc ;
模糊查询语句

``_​​叫做占位符。 代表任意一位数据​​%` 叫做通配符。代表任意长度、任意数据

需求: 在用户表进行查询姓王的用户信息

select * from users where name like '王%' ;

需求: 在用户表进行查询姓名是五位长度的用户信息

select * from users where name like '_____' ;

需求: 在用户表进行查询姓j,名称最后为y的用户信息

select * from users where name like 'j%y' ;
多条件查询 | And | Or

需求: 在用户表进行查询性别为男且类型是管理员的用户信息

select * from users where sex ='男' and type = '管理员';

需求: 在用户表进行查询性别为女或类型是管理员的用户信息

select * from users where sex ='女' or type = '管理员';

需求: 在用户表进行查询性别为女或类型是管理员 并且出生日期为空 的用户信息(性别为女且出生日期为空 | 类型是管理员且出生日期为空)

select * from users where (sex ='女' or type = '管理员') and birthday is null;

And 和Or 同用。MySQL中,AND的执行优先级高于OR 可以使用括号进行修整优先级顺序

函数
单行函数
连接符函数
-- 创建用户个人信息表
CREATE TABLE users(
id INT ,
NAME VARCHAR(20),
phone VARCHAR(20),
PRIMARY KEY(id)
);
-- 插入用户
INSERT users VALUES('1001','张三','13497854715'),('1002','张三','18505545515');

SELECT * FROM users;

-- 需求: 将个人信息进行"加密"显示
SELECT NAME,phone,CONCAT(LEFT(phone,3),'****',RIGHT(phone,4)) AS newPhone FROM users;

显示结果:

MySQL学习笔记_数据库_02

左填充[ lpad ] | 右填充 [ rpad ]
截取字符串函数 [ substring ]
替换函数 [ replace ]
聚合函数/组函数

关键字

中文描述

Max

最大值函数

Min

最小值函数

Sum

求和函数

Avg

平均值函数

Count

统计函数



☆ 数据库集群!!!

负载均衡


扩展:Oracle 数据类型:


  1. 数值型
    ​1. 整数和浮点 1. number(5) 表示一共有五位数、 其区间是 -99999~99999 2. number(5,2) 表示一共有五位数、小数部分占据两位数 其区间是 -999.99~999.99 ​
  2. 字符串类型
    ​1. char 固定长度 2. varchar2 可变长度 ​
  3. 日期
    ​1. date 2. 时间戳 ​
  4. lob(大对象数据类型)
    blob 存储二进制类型的Lob ;适用于 存放图片、音频、视频等资源 最大可存放的空间是4G
    clob