mysql常用语句

基本的3步

step 1: 登录

mysql -u root -p

然后输密码

step 2: 进入database

1) show databases;

2) select dbname;

step 3: 进入table

1) show tables;

2) select tbname;


以下是一些常用的

筛选

select * from tbname where 字段名=’值‘ 

排序

升序: select * from tbname order by 字段名 ASC;

降序: select * from tbname order by 字段名 DESC;

e.g, 获取最新一条数据select * from tbname order by time DESC limit 1;  //按时间降序,即最新的在第一行,越往下越旧。

注:mysql limit 使用规范

分组

直接在你的sql命令最后加  group by 分组条件   即可

group by的原理如图所示:

mysql常用语句

group by 的作用是把一张表分类为多个小表格,select 出每个小表格中符合条件的行。

有一些mysql的函数,经常和group by搭配使用 :

 group by DATE(类型为date或是datetime的字段):

举例:

select MAX(worktime) from tablename where id-'1111' group by DATE('time')   #意思是 筛选出每天最大的worktime,会返回一个只有一个名为“MAX(worktime)” 字段的表。

修改

update tbname set 字段名=’将要改的值‘ where ....='值’;

注:1. update两个字段的时候,不能用AND连接,只能用逗号。否则命令无效,但是不会报错(这算是mysql的隐藏bug吧)

2. 字段值中包含斜杠(/)时不用加转义符啥的;包含反斜杠(\)时要加转义符,用``(Tab上面那个键)或[ ]把反斜杠包起来,百度有好几种解决方法。

例如:

❌ update tbname set field1="value1" AND field2="value2"  where field3="value3" and field4="value4";

✔ update tbname set field1="value1",field2="value2"  where field3="value3" and field4="value4";

    把表里已有的某个字段设置成自增

     alter table tbname change 字段名 not null AUTO_INCREMENT;

    在表里新增一个自增字段

     注:使用auto_increment来创建自增属性时,该字段必须被指定索引,或者被设置成主键。不然会报错!

     在设置自增字段前,先设置普通索引:alter table tbname add index (`字段名`) after 某个已有字段; 

     设置自增字段并设成主键:alter table tbname add COLUMN 字段名 int AUTO_INCREMENT primary key; 

    挪字段顺序

         把某一列挪到最前面

         ALTER TABLE tbname MODIFY 字段名 int FIRST;  //字段名后面要写其属性

        把B挪到A的后面 

        alter table tbname modify B varchar(50) after A;   //B要写属性,A不用写

        修改字段默认值为null

        alter table tbname modify 字段名 字段类型(字段长度) default null;


查看字段名及其属性

SELECT column_name,data_type FROM information_schema.columns WHERE table_schema='dbname' AND table_name='tbname';

删除

    删除某一行数据

     delete from tbname where 字段名=‘值’;

    删除整个表的数据

      truncate table table_name; 或 delete from table_name;

      区别:truncate能够快速清空一个表,并且重置auto_increment的值。delete不会删auto_increment的值

   删除表

    drop table Tablename;

移植database(用mysqldump)

参考: mysqldump使用

分为两步:从旧的数据库里导出,再导入新的数据库

    导出

        导出数据库(结构和数据)

          mysqldump -u root -p dbname > dbname.dump

        只导出数据库结构

          mysqldump --no-data databases dbname> dbname.dump

          数据库有密码的话 mysqldump -u root -p --no-data databases dbname> dbname.dump

    导入

      mysql [database name] < [backup file name]

移植table

    导出结构和数据

      mysqldump -u root -p dbname tbname>tbname.sql

    只导出表结构

    看仔细这细微的差别:

       mysqldump -u root -p -d dbname tbname>tbname.sql

    导入

      先进入某个database,然后

      source tbname.sql;

     你就导入了一个名为tbname的表