数据库提供一个存储空间用于存放各种数据(其中包括整型、文本、小数、日期等),我们可以将数据库看作是一个存储数据的容器。
RDBMS:
Mysql
Oracle
SQlserver
nosql: not only sql 应用于云计算/大数据方面
1 看 是否 是 二维表!
1命令:
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 | 办公自动化系统 |
邮箱系统 | |
BOS | 商务操作系统 |
EHR | 人力资源管理 |
权限管理系统最少要有五张表:
表一 | 表二 | 表三 | 表四 | 表五 |
---|---|---|---|---|
用户 | 权限 | 角色 | 用户_角色 | 权限_角色 |
约束信息:
约束名称 | 中文名称 | 描述 |
---|---|---|
主键 | primary key | 表里的唯一标识、自动递增 auto_increment |
外键 | foreign key | 表与表之间关联关系 |
非空 | not null | 不许为空 |
唯一 | unique | 数据唯一性 |
检查 | check | |
默认/缺省 | defaulte | 默认值 |
-- 删除数据库 如果存在则删除 否则跳过!
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 注释:
--
/*
开头、*/
结尾 示例代码:/**/
#
格式:
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');
格式:
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 ;
select * from users ;
在查询中尽量避免使用 `*` 符号
需求: 查询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' ;
需求: 在用户表进行查询性别为男且类型是管理员的用户信息
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 可以使用括号进行修整优先级顺序
关键字 | 中文描述 |
---|---|
Max | 最大值函数 |
Min | 最小值函数 |
Sum | 求和函数 |
Avg | 平均值函数 |
Count | 统计函数 |
☆ 数据库集群!!!
负载均衡
扩展:Oracle 数据类型: