MySQL

  1. MySQL数据模型

是由多张能够相互连接的二维表组成的数据库。

  1. SQL分类(DDL,DML,DQL,DCL)

DDL:对数据库,表,列进行增删改查

操作数据库
  1. 查询数据库

查看所有数据库

show databases;

查看当前数据库

select database()

  1. 创建数据库

create database 名称;

create database if not exists 名称;

  1. 删除数据库

drop database 名称;

  1. 使用数据库

use 名称;

操作表
  1. 创建表

create table 名称 (

字段名1 数据类型1,

字段名1 数据类型

);

  1. 查询表

show tables;

desc 表名称;

  1. 修改表
  1. 修改表名

alter table 表名 rename to

  1. 添加一列

  1. 修改数据类型

  1. 修改列名和数据类型

  1. 删除列

  1. 删除表

drop table 名称;

drop table if exists 表名;

DML:对数据库进行增删改查

inster into 表名 () values ();

delete from 表名 where(条件)

update 表名 set (修改目的) where(条件)

DQL:用来查询数据库
  • 基础查询

select * from 表名;

  • 条件查询

select * from 表名 where (条件)

  • 分组查询

select * from 表名 where (条件) group by (条件)

注意

  1. 执行的顺序:where>聚合函数>having

  1. 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段毫无意义

  • 排序查询 asc (升序排列默认值)desc(降序排序)

select * from 表名 where(条件)group by (条件)order by(条件)

注意

若果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

  • 分页查询

select * from 表名 where(条件)group by(条件) order by(条件)limit (1,5)

例子

数据表:user

-- 查询年龄大于20岁

select * from user where age > 20;

-- 查询年龄等于20岁

select * from user where age = 20;

-- 查询年龄不等于20岁

select * from user where age is not 20;

-- 查询年龄大于等于20 小于等于30

select * from user where age between 20 and 30;

-- 查询年龄22岁,18岁,25岁的信息

select * from user where age in (22,18,25)

-- 查询英语成绩为null

select * from user where english is null;

-- 查询英语成绩不为null

select * from user where english is not null;

-- 查询姓马的有哪些? like

select * from user where name like "马%"

-- 查询姓名第二个字是化的人

select * from user where name like "_化%"

-- 查询姓名是3个字的人

select * from user where name like '___'

-- 查询姓名中包含德的人

select * from user where name like "%德%"

DCL:数据库权限操作

  1. 函数

  • 聚合函数

  • count

  • max

  • min

  • avg

  • cont

  • 字符串函数 (常用)

  • concat 负责字符串的连接

  • lower 字符串转化为小写

  • upper 字符串转化为大写

  • lpad(str, n,pad) 字符串左边进行添加

  • rpad (str, n,pad) 字符串右边进行添加

  • trim 去除字符串左边和右边的空格

  • substring (str,start,len)进行字符串截取

  • 数值函数(常用)

  • ceil 向上取整

  • floor 向下取整

  • mod(x,y) 取模

  • rand() 得到0-1的随机数

  • round(x,y)求参数x的四舍五入的值,保留y位

  • 日期函数(常用)

  • curdate() 当前日期

  • curtime() 当前时间

  • now() 当前日期和时间

  • day(date)

  • month(date)

  • year(date)

  • satediff() 两个日期之差

  • 流程函数

  • if(value,true,false)

  • ifnull(value1,value2)

  • case when then ... end

  1. 约束

  1. 主键约束

  1. 非空约束

  1. 外键约束

  1. 唯一约束

  1. 默认约束

  1. 检查约束

着重分析外键约束

外键用来让两个表的数据之间建立联系,保证数据的一致性和完整性。

  • 添加外键语句

alter table 表名 add constraint (外键名字)forign key (外键字段名称)refernces (主表列名称)

  • 删除约束语句

alter table 表名 drop forign key (外键名字)

  1. 数据库设计

  1. 数据库设计

  • 需求分析

  • 逻辑实现

  • 物理实现

  • 维护分析(1进行新的需求添加。2进行sql优化)

  1. 表关系

  1. 一对一 (用户和用户详情)

实现方式

在任意一方加入外键,指向另一方的主键

  1. 一对多 (部门和员工)

实现方式

多的一方建立外键,指向另一个表的主键

  1. 多对多 (商品和订单)

实现方式

中间建立第三章表,中间表至少关联连个外键,分别是另外连个表的主键

  1. 多表查询

  • 经典错误 (以下默认利用表一 s1 表二 s2)

select * from s1,s2 ;

错误原因 :

产生笛卡尔积。有s1和s2两个集合,取到s1,s2所有组合的情况。

正确写法 :

select * from s1,s2 where s1.id = s2.id;

  • 内连接: 内连接是取到两张表的交集 [inner]可以省略

---隐式内连接

select * from s1,s2 where s1.id = s2.id;

---显示内连接

select * from s1 jion s2 on s1.id = s2.id;

  • 外连接 【outer】可以省略

---左外连接

select * from s1 left join s2 on s1.id = s2.id;

---右外连接

select * from s1 right join s2 on si.id = s2.id;

  • 自连接(sql语句,可能不符合实际常识,表明含义即可)

select * from s1 as a join s2 as b where a.id =b.id;

  • 子查询

  1. 概念:查询中嵌套查询,称为 嵌套查询或者子查询。

  1. 子查询根据查询结果不同,作用不同

  1. 单行单列 :作为条件值,使用 = , !=,>,<等进行条件判定

  1. 多行单列 :作为条件值 使用 in 等关键字

  1. 多行多列 : 作为虚拟表

  1. 联合查询

union : 进行结果去重

union all : 全部结果直接合并返回

  1. 事务

数据库的事务是一种机制,一个操作序列,包含了数据库操作命令。

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值