Mysql数据库

  1. 数据库管理软件:DBMS是用于管理数据库的软件。MySQL属于数据库管理软件的一种。可以把数据库管理软件分为2类:

  1. 关系型数据库管理软件:数据是以表的方式存储。常见的有:MySQL/Oracle/SQL Server/DB2等

  1. 非关系型数据库管理软件:数据以文档或字符串等前提非表的方式存储。常见的有:MongoDB/Redis/HBase等

  1. 数据库:DB,长期存储在计算机内的、有组织的、可共享的大量数据的集合。

  1. 数据库系统:DBS,在计算机系统里引入了数据库之后的系统。

  1. SQL:结构化的查询语言。主要包含了4个部分:

  1. DQL 数据查询语言——》查询数据库里的数据。此部分是学习的重点和难点。代表性的关键字:select

  1. DML 数据操纵语言——》改变数据库里的数据。次重点。代表性的关键字:insert/update/delete

  1. DDL 数据定义语言——》用于定义数据的结构。次次重点。我们需要学会基本的建库建表从而检验数据库指令的正确性。代表性的关键字:create/alter/drop

  1. DCL 数据控制语言——》用于控制访问权限。通常由DBA数据库管理员来做

  1. 数据库的常见操作:

  1. 创建数据库

create database 数据库名 default utf-8;
  1. 查看数据库

show databases;
  1. 查看当前连接的数据库

select database();
  1. 连接数据库

use 数据库名;
  1. 删除数据库

drop database数据库名;
  1. 表的常见操作

  1. 简单建表语句

create table 表名(字段名 数据类型 );

  1. mysql常见的数据类型

  1. 整型 int
  1. 浮点型 float double decimal
  1. 字符型 char 定长字符型 varchar 变长字符型
  1. 日期时间型 date time datetime
  1. 枚举型 enum
  1. 常见的约束

  1. 主键约束:primary key 设置了该约束的字段不可以不给值,也不可以给重复的值
  1. 非空约束:not null 设置了该约束的字段不能不给值
  1. 唯一约束:unique 设置了该约束的字段不能给重复的值
  1. 默认值约束:default 默认值 设置了该约束的字段,不给值时用默认值,给值时用给的值
  1. 外键约束:foreign key 通常用在两表之间,反映的是字段之间的参照关系,一旦设置了外键,它的取值就会受到限制,
create table student2(
    sid int primary key,
    sname varchar(10) not null,
    sheight float(3,2) default 1.65,
    semail varchar(50) unique,
    sbirth date
);
外键约束举例:
假设我想针对student2表里的学员,创建一个问题表来收集学员问题:
create table question(
    qid int primary key,
    sid int, -- 如果你希望在往question表插入数据时,禁止录入超出student2表范围的学员编号——》外键约束
    content varchar(100), 
    foreign key(sid) references student2(sid)  -- 设置外键约束
);
  1. 其他常见表的操作(DDL)

  1. 修改表名

alter table 旧表名 rename to 新表名;

  1. 修改字段名

alter table 表名 change 旧字段名 新字段名 字段类型;

  1. 添加字段

alter table 表名 add 新字段名字 字段类型;

  1. 删除字段

alter table 表名 drop 字段名 ;

  1. 删除表

drop table 表名;

  1. 数据的插入

  1. 单条数据插入

insert into 表名(要插入的字段) values(插入的值)

实际工作中要插入的东西很多,字段名很多,所以一定要在表名后面写入字段

  1. 多条数据的插入

insert into 表名(要插入的字段) values(插入的值)(插入的值);

insert into student2(sid,sname) values(6,'qiqi'),(7,'lala'),(8,'qiaqia');

  1. 数据的查询

  1. select * from 表名;
  1. select *|字段名1,字段名2,……,字段名n from 表名,只显示查询的字段
  1. select distinct bj from xsb; -- 可以通过distinct去掉重复的记录
  1. select *|字段名1,字段名2,……,字段名n from 表名 where 条件

where子句里常见的运算符:

1)比较运算符 > >= < <= != <> =

2) 逻辑运算符 not and or

3) 范围运算符 between and 在某个区间范围里 <= >=

in 匹配某个数据集合里的任意一个

4)模糊查询:like _ %

_ 表示一个字符

% 表示多个字符

select * from xsb where xm like '张%';

5) 空值查询:is null is not null

select * from student2 where sbirth is null;

  1. 排序显示
  1. order by asc 升序 desc 降序 默认是升序
  1. 数据的更新

  1. update 表名 set 字段名= ~ where 限制条件;(有条件的更新)
  1. update 表名 set 字段名 (无条件的更新)
  1. 数据的删除

  1. delete from 表名 where 删除条件

delete from cjb where xh='001' and kch='01'(有条件的删除

delete from cjb (数据全部删除,表还在)

  1. 进阶查询

  1. 分组查询

常见的聚合函数

count() 统计个数 ——》2种常见的用法:count(*) count(字段名)

sum() 求和

avg() 求平均值

max() 求最大值

min() 求最小值——》1种常见用法:sum(字段名)

count在统计个数时,空值不会统计在内。count(*)和count(字段名)一样的

相关的sql语句

group by 分组 后面跟分组字段

having 作用:分组之后的进一步过滤(只查询满足条件的分组而不是所有组) 后面跟针 对组的筛选条件

select

from

where

group by 分组字段

order by

各个性别各有多少人?

select xb,count(*) from xsb group by xb;

  1. 子查询

  1. 子查询

select * from xsb where bj=(select bj from xsb where xm='张三') and xm!='张三';
  1. 关联查询(也叫分表查询)

  1. 内连接
select * from xsb,cjb where xsb.xh=cjb.xh;
select * from 表1 inner join 表2 on 关联条件 [where 其他条件];(标准写法)
select x.xh,x.xm,c.kch,c.cj
from xsb x,cjb as c -- 简写方式 表1,表2 where 关联条件 and 其他条件
where x.xh=c.xh and x.xm in('张三','李四');
  1. 外连接
  1. left join on[~=~](左连接)满足关联条件之外,还会将左边的表进行完全的展示
select x.xh,x.xm,c.kch,c.cj
from xsb x left join cjb c -- 完整展示了left join左边的xsb
on x.xh=c.xh;
  1. right join on[~=~](右连接)满足关联条件之外,还会将右边的表进行完全的展示
select x.xh,x.xm,c.kch,c.cj
from cjb c right join xsb x  -- 完整展示right join右边的xsb 
on x.xh=c.xh;
  1. 全连接 union 都显示,显示left join on 和right join on
select x.xh,x.xm,c.kch,c.cj
from cjb c left join xsb x  
on x.xh=c.xh
union
select x.xh,x.xm,c.kch,c.cj
from cjb c right join xsb x  
on x.xh=c.xh;
  1. 限制结果的输出(limit)

查询年龄最大的3个人的信息

select * from xsb order by nl desc limit 3;

  1. select 5
  1. from 1 如果是1张表就将该表数据查出来,如果是多表,则做笛卡尔积运算生成一张大的表查出来
  1. where 2
  1. group by 3
  1. having 4
  1. order by 6
  1. limit 7
  1. 拼接函数

  1. concat()

  1. 功能:将多个字符串/字段拼接在一起。如果字段有取空值的情况,整个concat处理后的结果为空。
  1. 语法格式:concat(str1,str2,...)
  1. concat_ws()

  1. 将多个字符串/字段拼接在一起,使用指定的分隔符。如果字段有取空值的情况,整个结果不会为空,它会忽略空值的内容做后续的拼接。
  1. group_concat()

  1. 功能:将多行的字符串/字段按分组整合成一个字符串,必须配合group by 分组来使用。

  1. 语法格式:group_concat(要连接的字段 【separator '分隔符'】)

  1. 注解:【】里的内容是可选的,如果不指定分隔符,就有一个默认的分隔符:逗号

  1. case when语句

  1. case when 表达式1 then 结果1
  1. when 表达式2 then 结果2
  1. ……
  1. 【else 默认值】
  1. end
  1. 日期函数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值