mysql基础

创建数据表

语法:create table表名

create table user(id int(10) primary key,username char(20) not null,passwd char(20) not null,email char(30) default "123456@qq.com");

删除表

语法:drop table表名

例:drop table student;

增加列 add

添加列:add,alter table user add列名int(12);

例:alter table user add phone int(12);//在user表中添加phone列

修改列的类型或约束:change。

例:alter table user change phone phone int(12) not null ;//把原来user表中的phone,修改类型

删除列:drop

例:alter table user drop phone;

插入语句

语法:insert into表名(列名,列之间用逗号隔 开)values(插入的值,插入的值就用逗号隔开)

例:
insert into sc values(9,4,2,87);//默认表的所有字段按顺序进行插入数据
insert into sc(id,stu_id) values(10,3);//根据制定的列的顺序插入值,其他为表设置的默认值
insert ignore into sc(id,stu_id) values(10,3);//数据存在则跳过

//插入多条语句,只有数据后面添加数据就行,数据用逗号隔开,需要多条,就写多条
insert into sc(id,stu_id,course_id,score) values(12,4,1,46),(13,4,1,5),(14,1,2,3)			

复制表

create table 复制表的表名 as select * from 原表名

例:create table student_copy as select * from student;

还原表中数据

insert into 原表名 select * from 复制表

例:insert into student select * from student_copy;

修改数据

update 表名 set stu_id=5 where stu_id is null;

例:update sc set stu_id=2,course_id=3,score=4 where id=1;

批量更新,适用于两个表直接关联
UPDATE car c SET c.car_model_id =( SELECT car_model_id FROM car_attribute attribute WHERE c.car_attribute_id = attribute.car_attribute_id ) 
WHERE car_brand_id = 0 ;

删除数据

语法:delete from 表名
语法  truncate table 表名 ; //清空表数据,不可恢复,速度快,不可加where条件

例:delete from ecs_goods where goods_id>=140; //满足条件的数据删除

条件语句where

例:
select * from ecs_goods where is_delete=0;
select * from ecs_goods where is_delete=(>,<,>=,<=,!=)0 and(or,not) class ='一班';查询满足条件的数据。

模糊查询like,%匹配所有 ,_匹配单个字符

查询出goods_name包含18K的产品名称
select goods_name from ecs_goods where goods_name like‘%18K%’;

查询出goods_name末字段为18K的产品名称。
select goods_name from ecs_goods where goods_name like‘%18K’;

已知goods_name里有一数据为“金钻石”,但是想不想来全名,查询出goods_name“金钻石”的产品名称。
select goods_name from ecs_goods where goods_name like‘金钻_’;

正则查询

  # ^ 以什么开头
  select id,name,job_title from emp where name regexp "^a";
  # $ 以什么结尾
  select id,name,job_title from emp where name regexp "san$";
  # 匹配指定字符内容
  select id,name,job_title from emp where name regexp "i{1}";

运算符:+,-*,/,mod

例:哪些商品的数量被3整除,并且展示产品的信息。
select goods_name, goods_number mod 3 from ecs_goods where(goods_number MOD 3)=0

排序order by,默认升序,desc为降序

例:查询出产品信息并且用降序排序
select * from ecs_goods order by goods_id desc;

count统计总数

可以理解为统计的是每一行的数据,只要这一行中有数据,就可以将他统计进去,所以一般统计是用*号,表示统计所有列,也是所有行,这样就能保证所有数据被统计,如果只是统计某一列,假如这一列的其中一行为null,其他有值,那就无法被统计,也就可能会失去一条数据。

例:统计ecs_goods总数
select count(*) from ecs_goods;

最大值,最小值,平均值,求和

求某一列的最大,最小,平均,求和
select max(click_count) from ecs_goods;
select min(click_count) from ecs_goods;
select avg(click_count) from ecs_goods;
select sum(click_count) from ecs_goods;

distinct 去重

同一列数据,有相同的数据就合并。
例:select distinct(is_delete) from ecs_goods;

 分组group by,有点类似于去重

例:select is_delete from ecs_goods group by is_delete;
表示is_delete这一列,数据相同的合并,数量不显示,但是可以增加条件来显示同样的数据有多少条,distinct就只是表示把重复的去掉而已。

统计删除与未删除的数量
select count(*),is_delete from ecs_goods group by is_delete;

 条件语句 having

select * from ecs_goods having is_delete=0;
等价于 
select * from ecs_goods where is_delete=0;

但是分组以后只能使用having,表示对group up的分组进行条件约束,having后面可以使用聚合函数,where则不可以。
例:求出未删除的产品热销产品与非热销产品的数量大于2的。
select is_hot,count(*)from ecs_goods where is_delete=0 group by is_hot having count(*)>2;

limit分页,第一行是从0开始数

例:请显示student表格的前5行。
select * from student limit 0,5; //0表示从第一行开始数,5表示一共数5行。

例:请显示student表格的5-10行。
select * from student limit 4,10;

例:当第一个数字大于第二个数字时,表示从第20个值开始展示10条。
select * from student limit 20,10;

例:表示从1条开始,展示10条。
select * from student limit 10 offset 1;

例:删除前100条。
delete from student order_by id desc limit 10;

设置变量

-- 方式一,先查询放到变量,再使用变量
SELECT @driver_id:=`driver_id` FROM driver where phone=13728542050 ;
SELECT* FROM driver where `driver_id`=@driver_id;

-- 方式二,直接设置
SET @driver_id='13728542050';
SELECT* FROM driver where `driver_id`=@driver_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑*杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值