Mysql操作篇

MySql

对数据库的基本操作:

  • DDL(数据库操纵语言):操作库和表结构
  • DML(数据操纵语言):对表中的记录进行更新(增、删、改)
  • DQL(数据查询语言):对表中的数据或者它的子集进行查询

MySQL支持数据类型
1.数值类型

  • tinyint

  • smallint

  • int

  • bigint

  • float(m,n): m表示总位数,n表示小数位数

  • doutble(m,n)

  • decimal:用于精确计算的固定点数,需要指定精度和小数位数

  • char:定长字符串

  • varchar:变长字符串

  • date:用与存储日期,格式为 YYYY-MM-DD

  • time:存储时间,格式为 HH:MM:SS

  • datetime:日期和时间,格式为 YYYY-MM-DD HH:MM:SS

  • year:存储年,格式为YYYY

  • 其他

    • blob:二进制

    • clob:大量字符

约束

  • 默认约束:default 默认值,不给该字符赋值,该字段的值为默认值

  • 非空约束:not null,该字段的值不能为null

  • 主键约束:primary key,该字段非空并且唯一

  • 唯一键:unique,该字段唯一,但是可以为空

  • 外键:foreign key,该字段不是当前表的属性,用于连接另一张表,
    外键肯定是另一张表的主键

  • 自增:auto_incerment,搭配数值类型的主键使用,不设置主键值时,每次自增1

DDL(数据库操纵语言):操作库和表结构

首先打开命令窗口,输入下面命令进入mysql

mysql -u 用户名 -p用户密码

在这里插入图片描述

  • 查看自己有哪些库

    show databases;
    

    在这里插入图片描述

  • 使用库

    use 库名;
    
  • 查表

    show tables;
    

在这里插入图片描述

添加库/添加表 删除库/删除表

中括号为可选选项

  • 新建库

    create database 库名;
    
  • 添加表

    create table 表名(字段名 类型 [约束],...)
    
  • 删库

    drop database 库名;
    
  • 删表

    drop table 表名;
    

DML(数据操纵语言):对表中的记录进行更新(增、删、改)

CRUD:create,read,update,delete

  • insert:新增

    INSERT INTO 表名 VALUES(字段1值,字段2值);
    insert into person value(1,'张三','男',18,9991231);  #例 
    
    # 指定字段增
    insert into 表名 (字段名1,字段名2,...) value (值1,值2,...),(值1,值2,...)...;
    
  • 复制

    • 复制表结构

      create table 表1 like 表2;
      
    • 复制表结构以及表中记录

      create table 表1 like select * from 表2;
      insert into 表1 select * from 表2;
      
  • update

    update 表名 set 字段=新值 [where 条件];
    
  • delete

    使用delete删除表时,删除数据保留表结构

    dalete from 表名 [where 条件];
    

DQL(数据查询语言):对表中的数据或者它的子集进行查询

DQL是最常用的也是最重要的

where和havaing

where是在原表的基础上筛选,可以用于DML
having是在结果集上进筛选,只能用于查询操作,可以结合group by 使用

查询记录

查询所有字段

*表示所有字段
SELECT * FROM 表名;

查询指定的字段
SELECT 字段,字段2,....FROM表名;

查询时为字段起别名(可用as和空格)
SELECT字段AS别名,字段1 别名....FROM 表名

排序

默认升序,asc:升序,desc降序
根多个字段时,先按照第一个字段排序,如果第一个字段值相等,再按照第二个

… order by 字段,字段2, desc,字段3,…

order by 和 where一起用,where必须在order by前面

模糊查询 like
_ : 查询 任意一个字符
%:任意字符串(包括空字符串)
…where 字段 like‘%模糊条件’;

分页查询limit

获取前n条记录
....LIMIT n;
从s行开始(s是从0开始计数),获取n条记录,包含s
....LIMIT s,n;
s=(页码-1)* n

子查询

子查询是一个查询嵌套在另一个查询中的查询语句。它可以在主查询的 WHERE 子句、FROM 子句或 SELECT 子句中使用。

分组查询

group by,一般使用场景 1.统计

                                        2.去重

聚合函数

1.sum(列名):求指定列的和
2.avg(列名):求指定列的平均值
3.max(列名):求指定列的最大值
4.min(列名):求指定列的最小值
5.count(列名):求指定列的行数
注意:NULL不参与聚合函数的统计

合并结果集

结果集合合并:union 前体是被合并部分的字段是一样的
union:合并期间会去掉重复的元素
union all:不会去掉重复的元素

多表联查

  • 保证多张关联表之间数据的完整性,外键

  • 表和表之间的关系:

    • 一对一:根据A中的一条记录,只能查出B中的一条记录;根据B中的一条记录,只能查出A中的一条记录;

    • 一对多:根据A中的一条记录,可以查出B中的多条记录;根据B中的一条记录,只能查出A中的一条记录;

    • 多对多:根据A中的一条记录,可以查出B中的多条记录;根据B中的一条记录,可以查出A中的多条记录;

  • 外键添加

    一对一:
    1.两种表的主键严格保持一致
    2.在任意一张表中增加一列,作为外键,该外键用unique约束
    一对多:
    在多方中,添加一列,作为外键
    多对多:
    中间表:肯定包含A表主键和B表主键的两列

    外键所在的表称之为从表,与之关联的称之为主表

  • join:
    1.cross join(交叉连接):左表中每条记录都有右表中的每条记录连接一次
    2.inner join(内连接):左表中每条记录都有右表中的每条记录连接一次,保留符合on 条件的不符合条件的舍弃
    3.left join(左连接):左表中全部记录,以及右表中符合on条件的记录
    4.right join(右连接):右表中全部记录,以及左表中符合

约束模式

1.strict(严格模式):
1.从表中添加数据时,指定的外键在主表中必须存在
更新外键时,外键的新值在主表中也必须存在
2.主表中更新主键或者删除时,从表中如果有与它关联的记录,该操作就会失败
2.cascade(级联模式):更新主表中的主键时,主表中与之关联的外键也会随之更新
删除主表中的记录时,从表中与之关联的也会被删除
3.set NULL:更新/删除主表中的记录时,从表中与之关联的记录的外键会置为NULL
4.no action:等同于strict

补充mysql函数

IF(表达式,v1,v2)

IFNULL(表达式)

NULLIF(v1,v2):v1和v2相等,结果为NULL;否则结果为v1

ISNULL()

CASE WHEN THEN

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oini19248

有人看都求之不得,还想要打赏?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值