Mysql常用命令

1. 数据库相关

1.1 创建数据库

create database database_name;

1.2 选择数据库

show databases;           #显示所有的数据库
use database_name;        #使用指定的数据库

1.3 删除数据库

drop database database_name;

2. 表的操作

2.1 创建表

create table table_name(
  属性名  数据类型,
  属性名  数据类型
)

2.2 查看表结构

describe table_name;               #查看表定义
show create table table_name;      #查看表详细定义

2.3 删除表

#删除表和表结构,立即释放空间,不管是 Innodb 和 MyISAM
drop table table_name;
#删除表全部数据,保留表结构,立刻释放磁盘空间 ,不管是 Innodb 和 MyISAM
truncate table table_name
#删除表全部数据,表结构不变,对于 MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间
delete from table_name

2.4 修改表名

alter table old_table_name rename new_table_name 

2.5 增加字段

alter table table_name
  add 属性名 属性类型;         #在表的最后一个位置增加字段

alter table table_name
  add 属性名 属性类型 first;   #在表的第一个位置增加字段

alter table table_name
  add 属性名 属性类型
    after 属性名              #在表的指定字段之后增加增加字段

2.6 删除字段

alter table table_name
  drop 属性名;

2.7 修改字段

alter table table_name
  modify 属性名 数据类型;                     #修改字段数据类型

alter table table_name
  change 旧属性名 新属性名 旧数据类型           #修改字段名称

alter table table_name
  change 旧属性名 新属性名 新数据类型;         #修改字段名称和数据类型

3. 增删改查

3.1 insert

增加新的数据

insert into table_name(field1, field2, field3,...)
values(value1,value2,value3...)

3.2 delete

delete可以删除特定的数据记录或删除所有数据记录

delete from table_name
    where condition

3.3 update

update可以更新特定数据记录或更新所有数据记录

update table_name          #更新特定数据
    set field1=value1,
        field2=value2,
        field3=value3,
    where condition;

3.4 select

查询操作,支持四则运算(+,-,*,/,%)

select field1, field2... from table_name;

2.4.1避免重复查询

select distinct field1, field2... from table_name;

2.4.2 as修改字段名

select field1 as name1, field2 as name2... from table_name;

2.4.3 条件查询

条件查询语句包含如下功能:

  • 带关系运算符和逻辑运算符的条件查询
比较运算符描述
>
<
=
!=(<>)
>=
<=
逻辑运算符描述
and(&&)
or(ll)
xor逻辑异或
not(!)逻辑非
  • 带between and关键字条件查询

判定字段数值在指定范围的条件查询

select field1,field2...
    from table_name
        where fidle between value1 and value2;
  • 带is null关键字条件查询
  • 带in关键字条件查询

判断数值在指定集合的条件查询

select field1,field2...
    from table_name
        where field in(value1,value2...);
  • 带like关键字条件查询

like可以实现模糊查询,通过字符串和通配符组合的方式查询字段,字符串必须加上单引号或双引号,"_“匹配单个字符,”%"匹配任意长度字符

select field1, fidld2...
    frome table_name
        where field [not] like value; 

2.4.4 排序

可以按照单字段或者多字段排序,多字段排序的过程为首先按照第一个字段进行排序,如果遇到值相同的字段则会按照第二个字段进行排序

select field1, fidld2...
    from table_name
        where condition
            order by field1 [asc|desc][,field2[asc|desc]];

2.4.5 限制查询数量

select field1, field2...
    from table_name
        where condition
            limit offset_start,row_count;    #offset_start代表初始值,row_count代表行数

limit经常与order by配合使用,即先对查询结果进行排序,然后显示其中部分数据

select field1, field2...
    from table_name
        where condition
            order by field limit offset_start,row_count;

2.4.6 统计函数

  • count():统计表中记录的条数
  • avg():统计字段的平均值
  • sum():统计字段的总和
  • max():查询字段值的最大值
  • min():查询字段值的最小值
select function(field)
    from table_name
        where condition;

2.4.7 分组查询

分组所依据的字段值一定要具有重复性,否则没有任何意义,建议与统计函数一起使用

select function()
    from table_name
        where condition
            group by field;  #根据field中的字段分组,并显示每组中的一条数据

function可以使用

group_concat(field)  #合并同组的所有字段并用,分隔后显示
count(field)  #显示字段数量

多个字段分组查询的过程是首先按照字段field1进行分组,然后针对每组按照字段field2进行分组

select group_concat(field),function(field)
    from table_name
        where condition
            group by field1,field2...;

HAVING字句限定分组查询
因为where主要是用来实现条件限制数据记录,在条件限制分组记录中要使用having

select function(field)
    from table_name
        where condition
        group by field1,field2...
        having condition;

4. 触发器

数据库对象触发器(trigger)是用来实现由一些表事件触发的某个操作,他所响应的事件有:

  • delete
  • update
  • insert

4.1 创建有一条执行语句的触发器

建议触发器命名为trigger_xxx,before和after指定了触发器执行时间,trigger_event表示触发事件有delete、insert、update语句,for each row表示任何一条记录上的操作满足触发条件都会触发该触发器。

create trigger trigger_name
    before|after trigger_event
        on table_name for each row trigger_stmt

4.2 创建有多条执行语句的触发器

需要注意的是多条语句需要用;隔开,所以在触发器前后用delimiter将结束符暂时设置为$$,在结束后再修改为;

delimiter $$
create trigger trigger_name
    before|after trigger_event
        on table_name for each row 
            begin
                stmt1;
                stmt2;
                ...;
            end
        $$
delimiter ;

4.3 NEW和OLD

MySQL 中定义了 NEW 和 OLD,用来表示触发器的所在表中,触发了触发器的那一行数据,来引用触发器中发生变化的记录内容,具体地:

  • 在INSERT型触发器中,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据;
  • 在UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;
  • 在DELETE型触发器中,OLD用来表示将要或已经被删除的原数据;

使用方法:NEW.columnName(columnName为相应数据表某一列名)另外,OLD是只读的,而NEW则可以在触发器中使用 SET 赋值,这样不会再次触发触发器,造成循环调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值