从零开始学习MySQL(基础命令汇总)

数据库概述

理解数据库

  • RDBMS=管理员(manager)+仓库(database)
  • 仓库(database)=N个table
  • table=表结构+表记录

sql语法

  • sql语句可以单行或多行书写,以分号结尾;
  • 使用空格和缩进增强可读性;
  • mysql不区分大小写,建议使用大写。

sql语句分类

  • DDL:数据定义语言

    对数据库或表的结构进行操作

  • DML:数据操作语言

    对标的记录进行更新

  • DCL:数据控制语言

    对用户的创建和授权

  • DQL:数据查询语言

    对表的记录进行查询

DDL

数据库
  • 查看所有数据库:SHOW DATABASES;
  • 切换数据库:USE 数据库名称
  • 创建数据库:CREATE DATABASE 数据库名称;
  • 删除数据库:DROP DATABASE 数据库名称;
  • 修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8;
数据类型
  • int 整型

  • double 浮点型

    double(5,2)表示最多五位,且有两位小数,即最大值为999.99;

  • decimal 浮点型

    钱方面用这个,不会造成精度缺失

  • char 固定长度字符串(最大255)

    char(255)数据长度不足指定长度,则自动补全。(固定长度的数据用固长<身份证号码,时间>)

  • varchar 可变长度字符串类型(最大65535)

    浪费一个字节记录长度

  • text 字符串类型(mySQL独有,标准的叫clob)

    • tinytext_ 2 8 − 1 2^8-1 281
    • text_ 2 16 − 1 2^{16}-1 2161
    • mediumtext_ 2 24 − 1 2^{24}-1 2241
    • longtext_ 2 32 − 1 2^{32}-1 2321
  • blob 字节类型

    • tinyblob_ 2 8 − 1 2^8-1 281
    • blob_ 2 16 − 1 2^{16}-1 2161
    • mediumblob_ 2 24 − 1 2^{24}-1 2241
    • longblob_ 2 32 − 1 2^{32}-1 2321 (4G)
  • data 日期类型

    yyyy-MM-dd

  • time 时间类型

    hh:mm:ss

  • timestamp 时间戳类型

    yyyy-MM-dd hh:mm:ss

实例中表名称为stu
  • 创建表

    mysql> CREATE TABLE stu(
    -> name varchar(50),
    -> age int,
    -> number char(11)
    -> );

  • 查看当前数据库中所有表名称

    SHOW TABLES;

  • 查看表结构

    DESC stu;

  • 删除表

    DROP stu;

  • 修改表

    • 添加列

    ALTER TABLE 表名

    ADD(

    列名 数据类型

    );

    • 修改列类型

    ALTER TABLE 表名

    MODIFY 列名 数据类型

    • 删除列

    ALTER TABLE 表名

    DROP 列名

    • 修改表名称

    ALTER TABLE 表名

    RENAME TO 表名

DML

  • 插入数据(字符串使用单引号)

    //指定列插入

    INSERT INTO stu(

    ​ name,age,num

    )

    VALUES(

    ​ ‘张三’, 18,‘1806020224’

    );

    //插入所有列(按照顺序插入)

    INSERT INTO stu VALUES(

    ​ ‘张三’, 18,‘1806020224’

    );

  • 修改数据

    运算符:=、!=、<>、<=、>=、IN…、BETWEEN … AND…、IS NULL、NOT、OR、AND、

    update stu_1 set age=18, name=‘cql’;//全改

    update stu_1 set age=18 where name=‘xhx’;

    update stu_1 set age=18 where name=‘ldl’ or num=‘1004’;

    update stu_1 set age=age+1 where age>=20 and age<=30;

    update stu_1 set age=age+1 where age between 20 and 40;

    update stu_1 set age=36 where name in (‘name’,‘lisi’);

    update stu_1 set age=age+1 where not age between 20 and 40;

    update stu_1 set age=36 where age is null;//不能是age=null

    update stu_1 set age=36 where age is not null;

  • 删除数据

    DELETE FROM 表名 WHERE name=‘cql’;//删除姓名全为“cql”

    DELETE FROM 表名;//表内数据全删

  • 查询数据

    SELECT * FROM 表名

DCL

  • 创建用户

    CREATE USER 用户@IP地址 IDENTIFIED BY ‘密码’;

    CREATE USER 用户@’%’ IDENTIFIED BY ‘密码’;

  • 给用户授权

    GRANT SELECT,DELETE,INSERT ON stu.* TO 用户@IP地址;

    GRANT ALL ON STU.* 用户@IP地址;

  • 撤销授权

    REVOKE DELETE ON stu.* FROM 用户@IP地址;

  • 查看权限

    SHOW GRANTS FOR 用户@IP地址;

  • 删除用户

    DROP USER 用户@IP地址;

DQL

(select/from/where/group by/having/order by)

  • 字段(列)控制

    • 查询所有列

      SELECT * FROM EMP;

    • 查询指定列

      SELECT ENAME,SAL FROM EMP;

    • 完全重复的记录只查一次

      SELECT DISTINCT * FROM EMP;

      SELECT DISTINCT job FROM emp;

    • 列运算

      • 数量类型可以做加、减、乘、除;

        SELECT SAL*1.5 FROM EMP;

      • 字符串类型可以连续运算//使用concat()函数

        SELECT CONCAT(ENAEM, JOB) FROM emp;

      • 转换NULL值

        SELECT SAL+IFNULL(COMM,0) FROM EMP;

      • 给列起名字

        SELECT CONCAT(ENAEM, JOB) AS 描述 FROM emp;

        SELECT ENAME AS 姓名, JOB AS 工作 FROM EMP;

        SELECT ENAME 姓名, JOB 工作 FROM EMP;

  • 条件控制

    • 条件查询

      SELECT * FROM emp WHERE SAL>100;

      SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000;

      SELECT * FROM emp WHERE comm IS NOT NULL;

      SELECT * FROM emp WHERE job IN (‘SALESMAN’);

    • 模糊查询

      SELECT * FROM emp WHERE ename LIKE ‘a%’;//%代表n个字符

      a%:以a开头的字符串

      %a:以a结尾的字符串

      %a%:字符串中有a的字符串

      a_:‘-’匹配一个字符,查询的是a某

      a__:a某某

  • 排序

    • 升序

      SELECT * FROM emp ORDER BY sal ASC;//ASC可以省略

      SELECT * FROM emp ORDER BY sal ASC, comm DESC;//先依据sal升序排序,如果sal相等则比较comm进行降序排序

    • 降序

      SELECT * FROM emp ORDER BY sal DESC;//DESC可以省略

  • 聚合函数

    SELECT count(*) from emp;

    SELECT sum(SAL) FROM emp;

    SELECT max(SAL) FROM emp;

    SELECT min(SAL) FROM emp;

    SELECT avg(SAL) FROM emp;

  • 分组查询

    SELECT JOB, COUNT(*) 人数, max(sal) 最大 from emp group by job;

    select deptno,count(*) from emp group by deptno;

    select deptno,count(*) from emp WHERE sal>1500 group by deptno;

    select deptno,count() from emp WHERE sal>1500 group by deptno having count()>=3;//工资大于1500的人进行分组,并显示人数大于等于3的组别

  • LIMIT语句

    SELECT * FROM emp LIMIT 0,5;//从第0行开始查五行

posted @ 2020-07-30 20:34  ccql  阅读(2)  评论(0编辑  收藏  举报  来源