mySql笔记

Mysql笔记

一、数据库操作

  1. 创建数据库

    create database 数据库名

  2. 删除数据库

    drop database if exists数据库名


     

二、数据表操作

  1. 创建表

    create table `表名`(

    `列名` 类型[] default '默认值' comment '注释',

    `列名` 类型[] default '默认值' comment '注释',

    、、、

    `列名` 类型[] default '默认值' comment '注释',

    primary key(`列名`)

    )engine= innodb default charset=utf8

    注意

    不要忘记每句句尾的, 最后一句不需要,

  2. 修改表

    • 修改表名

    alter table 旧表名 rename as 新表名

    • 增加表字段

    alter table 表名 add 列名 列属性

    • 修改表字段

    alter table 表名 modify 列名 列属性 -- 修改约束(列属性)

    alter table 表名 change 旧列名 新列名 列属性 --列名重命名

    • 删除表字段

    alter table 表名 drop 列名

  3. 删除表

    drop table if exists 表名


     

三、MySQL数据管理

  1. 外键

    信息表

    CREATE TABLE IF NOT EXISTS `information`(
    `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '学号',
    `classid` INT(10) NOT NULL COMMENT'班级',
    `name` VARCHAR(10) NOT NULL DEFAULT'匿名' COMMENT '姓名',
    `age` INT(3) NOT NULL DEFAULT '18' COMMENT'年龄',
    `sex` VARCHAR(3) NOT NULL DEFAULT'女' COMMENT'性别',
    `address` VARCHAR(100) DEFAULT NULL COMMENT'地址',
    `email` VARCHAR(20) DEFAULT NULL COMMENT'邮箱',
    PRIMARY KEY (`id`)
    )ENGINE=INNODB DEFAULT CHARSET=utf8

    班级表

    CREATE TABLE class(
    classid INT(10) NOT NULL AUTO_INCREMENT COMMENT'班级号',
    classname VARCHAR(20) DEFAULT'1班' COMMENT'班级名',
    PRIMARY KEY(`classid`)
    )ENGINE=INNODB DEFAULT CHARSET=utf

    把班级表设置为信息表的外键约束

    ALTER TABLE `information`
    ADD CONSTRAINT `FK_classid`
    FOREIGN KEY (`classid`) REFERENCES `class` (`classid`)
  2. 通用格式

    alter table 主键表

    add constraint FK_外键主键

    foreign key (外键主键) references 外键表名外键主键

    注意

    主键表中的外键列属性需与外键表中的主键列保持一致

  3. DML 语言(数据管理)

    • 插入语句

      insert into 表名 (列名1,列名2,列名3,...) values ('值1','值2','值3',...),('值1','值2','值3',...),('值1','值2','值3',...),..

      注意

      如果不写列名后面的值必须一一对应,否则会报错

      插入的值用单引号隔开''

    • 修改语句

      update 表名 set 列名 ='值'(变量) where 条件

      不加条件将修改全表

      update `class` set `className` = '软件一班' where `classId` = '0001'
      update `class` set `className` ='软件二班',`classNum` = '45' where `classId` = '0002'
    • 删除语句

      delete from 表名 where [条件]

      不加条件将清空表

      delete from `class` where `classname` = '软件一班'
      delete from `class` where `classnum` > 45

      truncate 和 delete 的区别

      truncate table 表名

      清空表会将表自增归零

      delete from 表名

      清空表不会影响自增

  4. DQL语言(数据查询语言)

  • 简单查询

    语法格式:select * from 表名

    select * from `student`

     

  • 别名

    select 列名 as 别名,列名 as 别名,... from 表名 as 别名

    select `name` as 姓名,`sex` as 性别,`age` as 年龄 from `student` as s
  • 去重

    语法格式:select distinct 列名 from 表名

     SELECT DISTINCT `resultid` AS 成绩编号 FROM `result`
  • 查看版本

    select version()

  • where子句查询

     

    语法含义
    and 或 && 必须同时满足两个条件
    or 或 || 满足其中一个条件即可
    no 或 ! 不满足条件
     SELECT * FROM `student` 
    WHERE `sex`= '男'

    SELECT * FROM `student`
    WHERE `sex`='男' AND age>22
     
    SELECT * FROM `student`
    WHERE NOT sex='男'

     SELECT `name` AS 姓名,`age` AS 年龄 FROM `student`
     WHERE sex='男' or age>18
  • 模糊查询

    语法含义
    between .. and .. 满足范围的值
    like 根据关键字查数据,通常与'%','_'联合使用
    in 精确查询,必须是该字段才出数据
    is null 查询某个值是空的数据
    is not null 查询某个值不是空的数据
      SELECT `name` AS 姓名,`age` AS 年龄 FROM `student`
     WHERE `name` LIKE '刘_'
     
     SELECT `name` AS 姓名,`sex` AS 性别 FROM `student`
     WHERE `name` LIKE '颜%'
     
     SELECT `name`,`age` FROM `student`
     WHERE `address` IS NULL
     
       
     SELECT `name`,`age` FROM `student`
     WHERE `address` IS NOT NULL
  • 拼接字段:concat

      SELECT CONCAT('分数:',score) FROM result
     WHERE score BETWEEN 80 AND 100

    注意

    '%' 匹配0到任意字段的数据,'_'只匹配一个字段连

  • 联表查询

      -- 查询学生的班级名、姓名、性别、年龄、地址
     SELECT `classname`,`name`,`sex`,`age`,`address`
     FROM student AS s
     INNER JOIN class AS c
     WHERE s.classid = c.classid AND classname='1班'

    inner join :查询两个表的交集

    right join: 查询右表所有数据,即使左表没有对应的数据

    left join:与right join 相反,查询左表所有数据,即使右表没有对应的数据

     

posted @ 2021-08-21 09:14  南一川  阅读(192)  评论(0)    收藏  举报