基本的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; //按时间降序,即最新的在第一行,越往下越旧。
分组
直接在你的sql命令最后加 group by 分组条件 即可
group by的原理如图所示:
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的表