mysql

mysql

基本操作

启动mysql服务

  • /usr/local/MySQL/bin/mysql -u root -p

数据库语句中不区分大小写,不过关键字最好大写。

单行注释

  • – 或#(–后加空格,#后不用加空格)

多行注释

  • /注释/

语句分类

DDL(操作数据库、表)

  • 操作数据库CRUD

    • C(Create):创建

      • create database db(数据库名);
      • 检测有无重复数据库若没有则创建:create database if not exists db(数据库名);
      • 指定字符集创建:create database db(数据库名) character set gbk(字符集);
    • R(Retrieve):查询

      • 查询所有数据库的名称:SHOW databases;
      • 查看某个数据库的字符集:show create database db(数据库名称);【查询某个数据库创建语句】
    • U(Update):修改

      • 修改数据库字符集:alter database db(数据库名称) character set utf8(字符集名称);
    • D(Delete):删除

      • drop database db(数据库名称);
      • 如果存在则删除:drop database if exists db(数据库名称);
    • 使用数据库

      • 查询当前正咋使用的数据库名称:select database();
      • 使用数据库:use db(数据库名称);
  • 操作表

    • C(Create):创建

      • create table tab(表名)(
        list1(列名) int(数据类型),
        list2 int,

        listn int
        );
      • create table tab1(表名)like tab2(b表名);
    • 数据类型

      • int

        • age int
      • double

        • score double(5.2)[表示最大5位,小数点后保留2位]
      • date:日期,只包含年月日的日期,yyyy-MM-dd

      • datetime:日期,包含年月日时分秒,yyyy-MM-dd HH:mm:ss

      • timestamp:时间错类型,包含年月日时分秒,yyyy-MM-dd HH:mm:ss

        • 如果不给这个字段赋值,或赋值为null,自动使用系统时间赋值。
      • varchar:字符串

        • name varchar(20):姓名最大20个字符
    • R(Retrieve):查询

      • 查询某个数据库中所有表的名称:show tables;
      • 查询表结构:desc tab(表名);
    • U(Update):修改

      • 修改表名

        • alter table tab(表名) rename to tab2(新的表名);
      • 修改表的字符集

        • alter table tab(表名) character set utf8(字符集);
      • 添加一列

        • alter table tab(表名) add list(列名)int(数据类型);
      • 修改列名称 类型

        • alter table tab(表名) change list1(列名) list2 (列名) int(数据类型);
        • 只改类型:alter table tab(表名) modify list(列名) int;
      • 删除列

        • alter table tab(表名) drop list(列名) ;
    • D(Delete):删除

      • drop table if exists tab(表名);

DML(增删改表中的数据)

  • 添加数据

    • insert into tab(表名) (list1(列名),list2,list3,…listn) values (value1(值),value2,value3,…valuen)
    • 如果表名后,不定义列名,则默认给所有列添加值:insert into tab(表名) values (value1(值),value2,value3,…valuen)
    • 除了数字类型,其他类型需要使用引号(单双都可)引起来
  • 删除数据

    • delete from tab(表名)[where 条件]
    • 如果不加条件,会将表中数据全部删除(有多少条就会执行多少次操作,效率较低)
    • 删除表,然后创建一个一样的空表:truncate table tab(表名)(删除全表数据操作,效率更高)
  • 修改数据

    • update tab(表名) set list1(列名) = value1(值名),list2 = value2,…listn = valuen[where 条件];
    • 如果不加条件,会将表中记录全部修改

DQL(查询表中的数据)

  • 查询表中的记录

    • select field(字段列表) from tab(表名列表)where(条件列表) group by field(分组字段) having cond(分组之后的条件) order by sort (排序) limit page(分页)

    • select field(字段列表)

    • from tab(表名列表)

    • where(条件列表)

      • 运算符

        • 、<、<=、>=、=、<>

          • <>在 SQL 中表示不等于,在 mysql 中也可以使用!= 没有==
        • BETWEEN…AND

          • 在一个范围之内,如:between 100 and 200 相当于条件在 100 到 200 之间,包头又包尾
        • IN(集合)

          • 集合表示多个值,使用逗号分隔
        • LIKE ‘张%’

          • 占位符:_:单个任意字符
          • 占位符:%:任意占位符
        • IS NULL

          • 查询某一列为 NULL 的值,注:不能写=NULL
        • IS NOT NULL

          • 查询某一列不为 NULL 的值,注:不能写!=NULL
      • 逻辑运算符

        • and 或 &&

          • 与,SQL 中建议使用前者,后者并不通用。
        • or 或 ||

        • not 或 !

    • group by field(分组字段)

    • having cond(分组之后的条件)

    • order by sort (排序)

    • limit page(分页)

  • 如果不查询表中所有的列,尽量避免使用 SELECT *,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络IO开销。

  • 基础查询

    • 多字段查询

      • select field1(字段名),field2,…fieldn from tab(表名)
    • 去除重复

      • select distinct field1(字段名),field2,…fieldn from tab(表名)
    • 计算列

      • 一般可以使用四则运算计算一些列的值
      • null参与的运算,结果均为null:ifnull(field(需要判断是否为null的字段名),value(如果该字段为null的替换值))
    • 别名

      • field(字段名或表达式)as name(别名)
      • 也可省略as:field(字段名或表达式)name(别名)

DCL(授权)

  • grant授予
  • revoke收回
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值