数据库命令速记

  • 大的原则

前提:登录数据库后才能执行下面的操作

  • 两种登录方式:
    • mysql –uroot –p
    • mysql –h121.234.324.324 –P3306 –uroot –p
  1. 操作数据库:增、删、查、进入
  2. 操作数据库中的表:增、删、改、查
  3. 操作表中的数据:增、删、改、查
项目
数据库create databasedrop database [数据库名称];use [数据库名称]; (进入数据库)show databases;
数据库中的表create tabledrop tablealter table [数据表名称] modify/change [列名] [数据格式];show/desc
表中的数据insert into [表名]delete from [表名]update [表名]select from

一、操作数据库

1. 创建数据库(create database)
编号动作命令格式举例
1创建数据库create database [数据库名称];create database crm9;
2创建数据库,并指定编码方式create database [数据库名称] character set [编码方式];create database crm9 character set utf8;
3创建数据库,并指定编码方式和排序规则create database [数据库名称] character set [编码方式] collate [排序规则];create database crm9 character set utf8 collate utf8_general_ci;
2. 查看数据库(show databases)
编号动作命令格式举例
1查看数据库show databases;show databases;
2模糊查询数据库show databases like ‘模糊匹配字符’;show databases like ‘%crm%’;
3查询某个数据库的创建语句、编码方式show create database [数据库名称];show create database crm9;
3. 删除数据库(drop database)
编号动作命令格式举例
1删除数据库drop database [数据库名称];drop database crm9;
4. 进入(使用)数据库(use)
编号动作命令格式举例
1进入数据库use [数据库名称];use crm9;

二、操作数据库中的表

1. 创建表(create table)
  • 命令格式
CREATE TABLE 表名
(
[列名1] [数据类型1] [约束条件1],
[列名2] [数据类型2] [约束条件2],
[列名3] [数据类型3] [约束条件3]
);
编号数据类型含义
1int(size)默认11位,数值范围: -2147483648 到 2147483647
2float(size,d)带有浮动小数点的小数字,在括号中规定最大位数size,在 d 参数中规定小数点右侧的最大位数
3double(size,d)带有浮动小数点的大数字,在括号中规定最大位数size,在 d 参数中规定小数点右侧的最大位数
4decimal(size,d)使用最多,作为字符串存储的 DOUBLE 类型,允许固定的小数点
5char(size)不论存储值长度是多少,都会占用()里设置的字节数,适用于长度确定的字段
6varchar(size)占用实际长度+1个字节,适用于长度不确定的字段
7datetime()日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS ,范围: ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’
8timestamp()时间戳。格式:YYYY-MM-DD HH:MM:SS ,范围: ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC
编号约束条件含义
1unsigned无符号,从0开始,无负数
2zerofill零填充,当数据显示长度不够时可以使用0填充至指定长度,字段会自动添加unsigned
3not null非空约束
4default如果插入数据时没有给该字段赋值,就使用默认值
5primary key主键约束,表示唯一标识,不能为空,且一个表只能有一个主键
6auto_increment自增,只能用于数值列,默认起始值为1,每次增长1
7unitque key唯一值,表示该字段不可重复,可以为空,可以有多个
8comment描述

备注:

  • 如果一列的约束条件同时有unsigned、zerofill、not null,则unsigned、zerofill必须在not null前面

  • primary key(主键)一般放在表的最下面

  • 举例说明

create table order_table(
    order_id int unsigned zerofill not null,
    price decimal(10,2) not null,
    order_status varchar(30) not null,
    product_id int not null,
    created datetime default '2019-01-01 00:00:00',
    user_id int not null,
    primary key(order_id)
     );
2. 查看表(show/desc)
编号动作命令格式举例
1查看当前数据库中所有表show tables;show tables;
2查看某张表的列属性(列名、数据类型、约束)desc [数据表名称];desc user_info_table;
3. 删除表(drop table)
编号动作命令格式举例
1删除表drop table [数据表名称];drop table user_info_table;
4. 修改表(alter table)
编号动作命令格式举例
1向数据表中添加一列(默认添加在末尾)alter table [数据表名称] add [列名] [列的数据类型] [约束];alter table user_info_table add age int unsigned;
2删除数据表的某一列alter table [数据表名称] drop [列名];alter table user_info_table drop age;
3修改列的类型和名称(列名不变,其他要变)alter table [数据表名称] modify [列名] [数据格式];alter table user_info_table modify age bigint unsigned;
4修改列的类型和名称(列名改变,其他要变)alter table [数据表名称] change [旧列名] [新列名] [数据格式];alter table user_info_table change age agenew int not null;

三、操作表中的数据

1. 新增数据(insert)
  • 命令格式
insert into [表名] (列1,列2) values
(值1-1,值2-1),
(值1-2,值2-2),
(值1-3,值2-3);
  • 举例说明
insert into user_info_table values
    (1,'zhangsan','abc123','zhangsanfeng',124567894651329785),
    (2,'lisi','122bbb','limochou',124567894651324567),
    (3,'wangwu','123aaa','wangbaiwan',214567894651324567),
    (4,'liuqi','12aaa','liuchuanfeng',214563356651324567),
    (5,'zhangliu','12aaa','zhangwuji',214563356658966567);

如果列名没有写,则说明是所有列名

2. 删除数据(delete)
编号命令格式含义举例
1delete from [表名] where [条件];删除满足where条件的数据delete from user_info_table where user_id=2;
2delete user_info_table;删除整个表
3truncate user_info_table;删除整个表
  • delete语句不能删除某一列的值(可使用update)
  • 使用delete语句仅删除符合where条件的行的数据,不删除表中其他行和表本身
3. 修改数据(update)
编号命令格式含义举例
1update [表名] set [列名]=[新值] where [列名]=[某值];修改表中某一列的数据update user_info_table set user_name=‘tester’,agenew=‘93’ where user_id=8;
4. 查找数据(select)
编号命令格式含义举例
1select * from [表名]查找表的所有列;select * from user_info_table;
2select [列名1],[列名2] from [表名]查找表的指定列;select age,user_name from user_info_table;
3select [列名] as [别名] from [表名]临时改变列名;select age as age_bieming from user_info_table;

四、where子句

在这里插入图片描述

五、数据表的排序、聚合、分组

1. 排序(order by)
序号排序方式举例
1对查询结果升序排列(asc),默认升序select * from order_table where user_id in(1,4) order by price;
2对查询结果降序排列(desc)select * from order_table where user_id in(1,4) order by price desc;
2. 聚合命令(distinct/count/max/limit)
编号命令含义格式
1distinct对某一列数据去重select distinct [列名] from [表名];
2count统计总行数count(*)或count(1):统计所有列;count(列名):统计指定列;count(distinct 列名):统计指定列的不重复行数
3max最大值select max(列名) from [表名];
4min最小值select min(列名) from [表名];
5avg平均值select avg(列名) from [表名];
6sum求和select sum(列名) from [表名];
7limit行数显示限制,从m+1行开始,显示n行数据select * from [表名] limit m,n
3. 分组(group by)
编号分组方式格式举例
1不加having过滤select 列名,聚合函数 from 表名 where 子句 group by 列名;select sum(price),count(user_id),product_id from order_table group by product_id;
2加having进行二次过滤select 列名,聚合函数 from 表名 where 子句 group by 列名 having 聚合函数 过滤条件;select sum(price),count(user_id),product_id from order_table group by product_id having count(user_id)>2;

六、数据表的连接查询、子查询

编号连接方式含义命令格式举例
1内连接(inner join)连接2张表,共有的项(如user_id)合并,其余项全部显示,匹配不上的显示nullselect * from [表名] a inner join [表名] b on a.[列名]=b.[列名];select * from user_info_table a INNER JOIN order_table b on a.user_id=b.user_id;
2左连接(left join)显示左表全部信息,右表与左表相同的项(如user_id)展示,匹配不上的显示nullselect * from 表名a left join 表名b on a.列名=b.列名select * from user_info_table a LEFT JOIN order_table b on a.user_id=b.user_id;
3右连接(right join)显示右表全部信息,左表与右表相同的项(如user_id)展示,匹配不上的显示nullselect * from 表名a right join 表名b on a.列名=b.列名select * from user_info_table a RIGHT JOIN order_table b on a.user_id=b.user_id;
4子查询嵌套在其他查询中的查询,程序一般先运行嵌套在最内层的语句,再运行外层select 列名1 from 表1 where 列名2 in (select 列名2 from表2 where 列名3=某某);select user_name from user_info_table where user_id in (select user_id from order_table where price>10);