MySQL快速入门1

MySQL指令

  1. 启动:net start mysql(管理员方式进命令行)
  2. 登录:-uroot -p123456(或者p后回车输密码别人看不到)
  3. 退出:exit 关闭服务:net stop mysql

SQL通用语法

结构化查询语言

  • 单行或多行书写,分号结尾
  • 可用空格和缩进,不区分大小写(建议关键字大写)
  • 三种注释
    • --(空格–)
    • # mysql特有
    • /* */ 多行

SQL分类

目录结构:数据库–>表–>数据记录

  • DDL:定义操作数据库、表
  • DML:增删改表中的数据
  • DQL:查询表中的数据
  • DCL:授权
DDL语法
  1. 操作数据库(CRUD)

    1. create:创建

      • 创建数据库:create database;
      • 判断不存在,再创建:create database if not exists 数据库名称;
      • 创建数据库并指定字符集:create database 数据库名称 character set 字符集名;
    2. retrieve:查询

      • 查询所有数据库名称:show databases;
      • 查询某个数据库的创建语句(字符集):show create database 数据库名称;
    3. update:修改

      • 修改数据库的字符集:alter database 数据库名 character set 字符集;
    4. delete:删除

      • 删除数据库:drop database 数据库名
      • 判断数据库存在,再删除:drop database if exists 数据库名
    5. 使用数据库

      • 查询当前正在使用的数据库名称:select database();

      • 使用数据库:use 数据库名称;

        tips:按上下键可以查找自己的输入记录

  2. 操作表

    1. 创建

      • 语法
      create table 表名(
          列名1 数据类型1,
          列名2 数据类型2,
          ···
          列名n 数据类型n -- 最后一列不加逗号
      );
      
      • 数据库类型

        1. int:整数类型
        2. double(m,n):小数,共m位保留n位
        3. date:日期,只包含年月日,yyyy-MM-dd
        4. datetime:日期,包含年月日时分秒,yyyy-MM-dd HH:mm:ss
        5. timestamp:时间戳,格式同上,若不给该字段赋值或赋null,将默认使用系统时间自动赋值
        6. varchar(n):字符串,最多n个字符
      • 创建表

        create table student(
            ->          name varchar(10),
            ->          number int,
            ->          score double(12,2),
            ->          insert_time timestamp,
            ->          birthday date
            -> );
        
      • 复制表:create table 表名 like 被复制表名;

    2. 查询(先use该数据库)

      • 查询某个数据库中所有表名称:show tables;
      • 查询表结构:desc 表名;
    3. 修改

      • 修改表名:alter table 表名 rename to 新表名;

      • 修改表的字符集:alter table 表名 character set 字符集名称;

      • 添加一列:alter table 表名 add 列名 数据类型;

      • 修改列名及类型:alter table 表名 change 列名 新列名 新数据类型;

        alter table 表名 modify 列名 新数据类型;(仅更改数据类型)

      • 删除列:alter table 表名 drop 列名;

    4. 删除

      • drop table 表名;
      • drop table if exists 表名;
DML语法
  1. 添加数据:insert into 表名(列名1,列名2,...列名n) values(值1,...值n);
    • 列名和值要一一对应,当要给所有列添加值时可不写列名表名 values(值1,...值n);
    • 除数字类型外,其他类型要使用引号(单双)括起来
  2. 删除数据:delete from 表名 where 条件
    • 若不加条件,则删除表中所有记录
    • 删除所有记录,truncate table 表名,先删除表,再创一张相同的空表
  3. 修改数据:update 表名 set 列名1 = 值1,列名2 = 值2,...where 条件;
  4. 查询数据:
    1. 排序查询:order by 排序字段1 排序方式1,排序字段2 排序方式2...
      • 排序方式:ASC升序(默认)、DESC降序,当前面条件值一样时才会判断第二条件
    2. 聚合函数:将一列数据作为一个整体,进行纵向计算(排除null值或ifnull语句)
      • count(一般选择非空的列,主键),max,min,sum,avg
    3. 分组查询:group by 分组字段;
      • wherehaving判定条件:where在分组前进行限定,不满足则不参与分组;having在分组后进行限定,不满足则不会被查询出来,且其后可跟聚合函数判断
    4. 分页查询:limit 本页开始的索引,每页查询的条数(mysql方言)
      1. 开始索引 = (当前页码 - 1)*每页显示条数
DQL语法
  1. 语法:select 字段列表 from 表名 where group by having limit

  2. 基础查询:

    • 多字段:select 字段名1,字段名2...from 表名;(查询所有字段可用*代替字段列表)

      查询表中记录:select * from 表名;

    • 去重复:distinct修饰字段

    • 计算列:使用四则运算对列之间进行计算,ifnull(去空的列名,0)

    • 起别名:as,亦可用空格代替

  3. 条件查询:

    • 子句后跟where+条件
    • 运算符:andorbetween and(区间)、in(集合)is(not)(针对非数值)、=(数值相等)
    • 模糊查询:like
      • 占位符:_:单个任意字符,%:多个任意字符

表的约束
  1. 非空约束:not null

    • 创建表时添加约束:id int not null,
    • 创建完后添加:alter table stu modify id int not null;
    • 删除约束:alter table stu modify id int;
  2. 唯一约束:unique

    • 创建时或之后在字段后加unique,形式同上

    • 删除:alter table stu drop index id;

  3. 主键约束:primary key

    • 概述:非空且唯一,一张表只能有一个字段,表中记录的唯一标识

    • 创建表时或之后添加:跟primary key

    • 删除主键:alter table stu drop primary key;

    • 自动增长:主键后再跟auto increment,若仅删除自增用modify

  4. 外键约束:foreign key

    • 概述:让表与表产生联系,从而保证数据准确性
    • 添加外键:constraint 外键名 foreign key (外键列名) references 主表名称(主表列名)
      • 可在创建表时直接添加(记得给上条语句加逗号),或在创建表后再alter
      • 外键可为null但不能为不存在的值,null和null也不相等
    • 删除:alter table 表名 drop foreign key 外键名;
    • 级联:添加外键的语句后直接跟如下语句,谨慎使用
      • 级联跟新:on update cascade
      • 级联删除:on delete cascade
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值