MySQL基本操作

版权声明:个人学习笔记,参考了其他人资料,请勿转载 https://blog.csdn.net/jiageibuuuyi/article/details/82934376

一、简介

MySQL为关系型数据库,存储方式固定安全,由瑞典MySQL AB 公司开发,目前属于 [Oracle](https://baike.baidu.com/item/Oracle) 旗下产品。MySQL 是最流行的[关系型数据库管理系统](https://baike.baidu.com/item/%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F/696511)之一,在 WEB 应用方面,MySQL是最好的 [RDBMS](https://baike.baidu.com/item/RDBMS/1048260) (Relational Database Management System,关系数据库管理系统) 应用软件。
  • 概念和特点

    1. 关系型数据库管理系统:采用关系模型来组织管理数据的数据库系统。
    2. 把数据保存在不同的表中,而不是将数据放在一个大仓库中。
    3. 可以运行于多个系统上,并且支持多种编程语言,包括C、C++、Python、Java、Perl、PHP、Ruby等。

    注意:MySQL不是数据库,它是数据库管理软件

二、基本操作

初始操作

  • MySQL进入与退出

    mysql –uusername -ppassword /进入

    mysql> exit /退出


    在这里插入图片描述


库级操作

  • 显示所有数据库

    show databases;

  • 创建库

    create database [if not exists] db_name; /【】中内容可加可不加

  • 删除库

    drop database [if exists] db_name;

  • 进入数据库

    use db_name;



在这里插入图片描述


表级基本操作

==注意进行表级操作必须先进入数据库中(use db_name;)==
  • 显示所有表

    show tables;

  • 创建表

    create table [if not exists] tb_name (create definition…); /()填写字段,字段类型,及字段属性

  • 显示创建表信息

    show create table tb_name;

  • 显示表字段属性

    desc tb_name;

  • 删除表

    drop table tb_name;


  • 创建及查看所有表

在这里插入图片描述

注:

  1. create table [if not exists] tb_name (create definition…)

    创建表时括号内必须填写至少一个字段,并且需要说明字段类型,字段属性可不加。

  2. 常见的字段类型:数值类型、字符类型、时间日期类型。

在这里插入图片描述

!在这里插入图片描述

在这里插入图片描述

  • 查看创建表信息,查看表字段信息

在这里插入图片描述

  • 删除已创建表

在这里插入图片描述


表中数据基本操作

  • 插入数据

    1. 指定字段插入

      INSERT INTO tb_name(field_name) VALUES (value_1), (value_2), …;

    2. 全字段插入

      INSERT INTO tb_name VALUES (all_values);

    注意:全字段插入时一定要根据字段的属性判断是否一定要插入,一般情况下需要全部插入根据字段的顺序对应,并且字段类型要一致


  • 指定字段插入

    在这里插入图片描述

    在这里插入图片描述

    注:

    1. select * from student_database; 为查询表内容语句
    2. INSERT INTO tb_name(field_name) VALUES (value_1), (value_2), …;该命令可单行、可多行插入
  • 全字段插入

    在这里插入图片描述


  • 查询数据

    1. 全字段查询

      SELECT * FROM tb_name;

    2. 指定字段查询

      SELECT field_names FROM tb_name;

    3. 条件查询

      SELECT field_names FROM tb_name WHERE conditions;


在这里插入图片描述


  • 修改数据

    1. 修改所有数据

      UPDATE tb_name SET field_1=value_1,field_2=value_2;

    2. 修改满足条件数据

      UPDATE tb_name SET field_1=value_1,field_2=value2 WHERE conditions;

    注意:正常情况下我们不会修改所有数据,所以一定要写where条件,不然会修改表中全部数据


在这里插入图片描述


  • 删除数据

    1. 删除表中所有数据

      DELETE FROM tb_name;

    2. 删除表中满足条件数据

      DELETE FROM tb_name WHERE conditions;

    注意:一定要写where条件,不然会修改表中全部数据


在这里插入图片描述

在这里插入图片描述


三、筛选数据

筛选条件

  • 比较运算符
    1. 等于:=
    2. 大于等于:>=
    3. 不等于:!=或者<>
    4. 小于:<
    5. 大于:>
    6. 小于等于:<=
    7. 空:IS NULL
    8. 非空:IS NOT NULL

在这里插入图片描述


  • 逻辑运算符

    与:and 或:or 非:not


在这里插入图片描述


其他操作

  • 排序 (ORDER BY)

    SELECT * FROM tb_name ORDER BY col [asc/desc] ;

    注:

    1. acs:正序(默认)
    2. desc:反序
  • 限制 (LIMIT)

    SELECT * FROM tb_name LIMIT start, count ;

    注:

    1. start:开始位置
    2. count:总计个数
  • 去重 (DISTINCT)

    SELECT DISTINCT filer_name FROM tb_name;

  • 模糊查询 (like ‘%’’_’

    SELECT * FROM tb_name where FIELD_NAME like ‘%key%

    注意:

    1. %表示任意多字符,_表示一个字符
    2. *可替换为field_name
  • 范围查询

    1. 连续范围: BETWEEN a AND b

      SELECT * FROM tb_name where FIELD_NAME BETWEEN a AND b;

      注意:a<= value <= b

    2. 间隔返回: IN

      SELECT * FROM tb_name where FIELD_NAME in (10, 20, 30 […]);


    在这里插入图片描述在这里插入图片描述


四、聚合与分组

常用聚合函数

  1. 统计个数:COUNT(column)
  2. 求和:SUM(column)
  3. 最大值:MAX(column)
  4. 平均值:AVG(column)
  5. 最小值:MIN(column)
  6. 列出字段全部值:GROUP_CONCAT(column)

查询方法

  • 分组查询 (group by)

    SELECT group_column, aggregations(column) FROM tb_name GROUP BY group_column;

    注意:

    1. 在分组的情况下,只能够出现分组字段和聚合字段其他的字段没有意义,会报错!
    2. select后跟的字段必须同group by后的字段一致
    3. 若group_colum字段过长可使用as取一个别名,后面出现该字段可以用该别名代替该字段

在这里插入图片描述


  • 聚合筛选 (having)

    SELECT group_column, aggregations FROM tb_name GROUP BY group_column HAVING conditions;

    注意:

    若一个查询语句中同时包含了别名(as)、聚合函数、 where以及having,他们会按照一下的顺序先后执行

    1. where
    2. 聚合函数和别名和group by
    3. having

在这里插入图片描述


五、子查询

将一个查询的结果留下来用于下一次查询 (select 中嵌套 select )

注意:

  1. 嵌套在查询内部
  2. 必须始终出现在括号内

在这里插入图片描述


六、连接查询

内连接

  • 无条件内连接

Mysql> select * from student [inner] join grades;

注:

  1. 无条件内连接,又名交叉连接/笛卡尔连接
  2. 第一张表种的每一项会和另一张表的每一项依次组合
  • 有条件内连接

Mysql> select * from student [inner] join grades on number = student_number;

注:

  1. 在无条件内链接的基础上,加上一个on子句
  2. 当连接的时候,筛选出那些有实际意义的记录来进行组合

建立两张表(班级表、学生基本信息表)

在这里插入图片描述

  1. 无条件内连接

在这里插入图片描述

  1. 有条件内连接

    在这里插入图片描述

    注意:join后的表要跟在from后的表后面


外链接

  1. 左外链接

    select * from student left join grades on number=student_number;

    注意:

    两张表做连接的时候,在连接条件不匹配的时候,留下左表中的数据,而右表中的数据以NULL填充

  2. 右外链接

    select * from grades right join student on number=student_number;

    注意:

    两张表做连接的时候,在连接条件不匹配的时候,留下右表中的数据,而做表中的数据以NULL填充



在这里插入图片描述

在这里插入图片描述


七、表结构修改

修改语句

  • 修改表名

    ALTER TABLE tb_name rename to new_name;

  • 修改字段名

    ALTER TABLE tb_name change name new_name data_type;

  • 修改字段类型

    ALTER TABLE tb_name MODIFY field_name data_type;

  • 添加字段

    ALTER TABLE tb_name ADD [COLUMN] field_name data_type;

  • 删除字段

    ALTER TABLE tb_name DROP [COLUMN] field_name;


  1. 修改表名

在这里插入图片描述

  1. 修改字段名

在这里插入图片描述

  1. 修改字段类型

    在这里插入图片描述

    注:

    1. 在修改字段名时即可修改字段类型
    2. 修改后的字段类型必须保证符合表中能够该字段已存在的数据类型
  2. 添加字段

在这里插入图片描述

  1. 删除字段

    在这里插入图片描述


八、约束条件

  • 默认约束

    插入数据的时候,如果没有明确为字段赋值,则自动赋予默认值

    CREATE TABLE tb(id int default 1 ,name varchar(20));

    注:在没有设置默认值的情况下,默认值为NULL

  • 非空约束

    限制一个字段的值不能为空,Insert的时候必须为该字段赋值

    CREATE TABLE tb(id int not null, name varchar(20));

    注:空字符不等于NULL

  • 唯一约束

    限制一个字段的值不重复,该字段的数据不能出现重复的

    CREATE TABLE tb(id int unique key, name varchar(20));

    注:确保字段中值的唯一

  • 主键约束

    通常每张表都需要一个主键来体现唯一性,每张表里面只能有一个主键

    CREATE TABLE tb(id int primary key, name varchar(20));

    注:主键 = 非空 + 唯一

  • 自增长约束

    自动编号,和主键组合使用,一个表里面只能有一个自增长

    CREATE TABLE tb(id int primary key auto_increment, name varchar(20));

    注:auto_increment 要求用在主键上,插入数据时不插入明确的值(即插入null)会自动根据表中其他行最大的值增长,第一行为1

  • 外键约束

    保持数据的一致性,我有的你一定有, 你没有的, 我绝对没有

    CREATE TABLE a(id_a int primary key, name varchar(20));

    CREATE TABLE b(id_b int primary key, name varchar(20) ,foreign key (id_b) references a(id_a));

    注意:

    1. B表中的id_b字段,只能添加id_a中已有的数据
    2. A表中id_a 被参照的数据, 不能被修改和删除
    3. 要删除A表中参照的数据,先要去删除B表中的数据

在这里插入图片描述

注:

主键约束、外键约束详见表关系


九、表关系

一对一关系

一个表的主键与另外一个表主键关联实现这种关系,如上例


创建两张表

在这里插入图片描述

在表stuednt_grade中插入数据

在这里插入图片描述

注:当表student_base不存在id为4时,表student_grade中插入的id为4时会报错,并且该值只能插入一次


一对多关系

一个表的外键与另外一个表主键关联实现这种关系


创建两张表

在这里插入图片描述

在subject表中插入数据

在这里插入图片描述

注:当表student不存在id为4时,表subject中插入的stu_id为4时会报错


多对多关系

对于多对多关系,需要创建中间表实现,中间表使用联合主键


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注:表choose_sub使用联合主键

mysql> create table choose_sub(
-> stu_id int,
-> c_id int,
-> primary key(stu_id,c_id),
-> foreign key(stu_id) references stu(s_id),
-> foreign key(c_id) references sub(sub_id));

!在这里插入图片描述


附:外键约束添加和删除

在这里插入图片描述

注:删除时若不知道foreign key后的字符串,查看创建信息,constraint后跟的字符串即为该外键约束的命名,一般在创建外键约束时可以自定义添加该命名,若不添加则会自动生成一个。

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试