学习mysql数据库的第二天

Day02

一.回顾Day1知识点(增删改查)

1.1增

创建数据库:create database 库名;

创建表::create table 表名;

1.2删

删除数据库:drop database 库名;

删除表:drop table 表名;

删除字段:alter table 表名 drop 删除的字段名;

1.3改

切换数据库:use 库名;

更改表名 :rename table 旧表名 to 新表名;

增加表中字段:alter table 表名 add 字段名 字段类型;

修改表中字段:alter table 表名 change 旧字段名 新字段名 字段类型;

1.4查

查看所有库:show databases;

查看当前使用的库:select database();

查看指定库的建库语句:show create database 库名;

查看字段(本质就是查看表结构):desc 表名;

查看所有表:show tables ;

查看建表语句:show create table 表名;

二.表中记录操作

2.1插入数据记录

代码:insert into 表名 (字段名,字段名,...)  values (值,值,值,....);

                注意1: 具体值要和前面的字段名以及顺序一一对应上
                注意2: 如果要插入的是所有字段,那么字段名可以省略(默认代表所有列都要插入数据)
                注意3: 如果要插入多条记录,values后多条数据使用 逗号 分隔

2.2修改数据记录

代码:update 表名 set 字段名 = 新值 {where 条件 = 条件};---(where id = 1)

        注意: 如果没有加条件就是修改对应字段的所有数据

2.3删除数据记录

代码:delete from 表名 where 条件 ;

                注意: 如果没有加条件就是删除所有数据

2.3.1清空所有数据

                方式1: delete from 表名;   注意:此方式有警告
                方式2: truncate [table] 表名;  注意: 此方式没有警告 

三.表中约束

3.1主键约束

主键约束关键字: primary key

主键约束特点: 限制主键插入的数据不能为空,不能重复

建表的时候添加主键约束:  create table 表名(主键名 主键类型 primary key , 其他字段...);

注意: 一个表中只能有一个主键

3.1.1添加主键约束的方式

# 添加主键约束方式1: 建表时候添加
create table stu1(
    id varchar(100) PRIMARY KEY,
    name varchar(100),
    age int,
    cls varchar(100)
);


# 添加主键约束方式2: 建表后添加
create table stu2(
    id varchar(100),
    name varchar(100),
    age int,
    cls varchar(100)
);

alter table stu2 add PRIMARY KEY (id);

3.1.2 图示:

3.2主键自增

自增关键字: auto_increment

自增特点: 默认从1开始,每次自动加1  
注意: 如果插入数据的时候指定了id字段,可以使用null或者0占位表示自动使用自增

建表的时候添加主键自增约束:  create table 表名(主键名 主键类型 primary key auto_increment , 其他字段...);

3.2.1图示:

3.3非空约束

非空约束关键字: not null

非空约束特点: 限制对应数据不能为空null

建表的时候添加非空约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 not null , 其他字段...);

注意: 一个表中可以有多个非空约束

3.3.1图示:

3.4唯一约束

唯一约束关键字: unique

唯一约束特点: 限制对应的数据不能重复

建表的时候添加唯一约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 unique, 其他字段...);

注意: 一个表中可以有多个唯一约束

3.4.1图示:

3.5默认约束

默认约束关键字: default

默认约束特点: 可以提前给字段设置默认值

建表的时候添加默认约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 default 默认值, 其他字段...);

注意: 一个表中可以有多个默认约束

3.5.1图示:

四.单表查询

4.1准备数据

#创建库名

create database Day02;


use day02_db;
# 创建商品表
CREATE TABLE product
(
    pid         INT PRIMARY KEY,
    pname       VARCHAR(20),
    price       DOUBLE,
    category_id VARCHAR(32)
);
# 插入数据
INSERT INTO product(pid,pname,price,category_id) VALUES(1,'联想',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海尔',3000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷神',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(4,'杰克琼斯',800,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真维斯',200,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公子',440,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(7,'劲霸',2000,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(8,'香奈儿',800,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本草',200,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(10,'面霸',5,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(11,'好想你枣',56,'c004');
INSERT INTO product(pid,pname,price,category_id) VALUES(12,'香飘飘奶茶',1,'c005');
INSERT INTO product(pid,pname,price,category_id) VALUES(13,'海澜之家',1,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(14,'小米',1999,'');
INSERT INTO product(pid,pname,price,category_id) VALUES(15,'华为',6999,'null');
INSERT INTO product(pid,pname,price,category_id) VALUES(16,'蜜雪冰城',1,null);

4.2基础查询

基础查询关键字: select:查什么    from: 从哪儿查

基础查询格式:  select [distinct] 字段名 as 新字段名 / * from 表名;
             []:可以省略   
              /: 或者
              *: 对应表的所有字段名
              distinct: 去除重复内容
              as  : 可以给表或者字段起别名

例如:select pname as 商品名称 from products;

注意:在平时练习可以使用中文,但是在工作中不太建议使用中文。

4.3条件查询

条件查询关键字:  where 

条件查询基础格式: select 字段名 from 表名 where 条件;

             4.3.1 比较运算符:

                符号:>  <  >=  <=  !=  <>

                a)查询价格大于3000的商品信息
                select * from product where price > 3000;

                b)查询价格小于4000的商品信息
                select * from product where price < 4000;

                c)查询商品价格等于500的商品信息
                select * from product where price = 500;

                d)查询商品价格大于等于3000的商品信息
                select * from product where price >= 3000;
              

                e)查询商品价格不等于2000的商品信息
                select * from product where price != 2000;
                select * from product where price <> 2000;


             4.3.2 逻辑运算符

                符号:and  or  not

                a)统计商品价格大于等于2000并且小于等于5000的商品信息
                select * from product where price >= 2000 and price <=5000;

                b)统计商品价格等于1,或者等于200,或者等于3000的商品信息
                select * from product where price = 1 or price = 200 or price = 3000;

                c)统计商品价格不在 2000-5000之间的商品信息
                select * from product where price < 2000 or price > 5000;
                select * from product where not (price >= 2000 and price <=5000);


              
              4.3.3范围查询

                连续范围:between x and y      

                非连续范围: in(x,y)

                a)统计商品价格大于等于2000并且小于等于5000的商品信息

                select * from product where price BETWEEN 2000 and 5000;

                b)统计商品名称是小米或者华为或者花花公子的商品信息
                select * from product where pname in ('小米','华为','花花公子');

                c) 统计商品价格等于1,或者等于200,或者等于3000的商品信息
                select * from product where price in (1,200,3000);


              
             4.3.4 模糊 查询

              关键字:like   %:0个或者多个字符   _:一个字符   

                a)查找商品名称带'想'字的商品信息
                select * from product where pname like '%想%';

                b)查找商品名称以'海'字开头并且是2个字的商品信息
                select * from product where pname like '海_';

                c)查找商品名称第2个字是'想'字的商品信息
                select * from product where pname like '_想%';


              
              4.3.5非空 判断

              为空: is null    不为空:is not null

                  注意: mysql中的null和空字符串''以及字符串'null'不是一回事
                  mysql中null代表空的,没有任何意义的
                  ''代表空字符串
                  'null'代表具体字符串

                a)查找category_id为空(null)的数据
                select * from product where category_id IS NULL;

                b)查找category_id不为空(null)的数据
                select * from product where category_id IS NOT NULL;

4.4排序查询

关键字: order by

排序查询格式: select 字段名 from 表名 ... order by 字段名 asc|desc;
        asc: 升序 (默认)
        desc: 降序

a)查询所有category_id为c002的商品,并按价格升序排序
select * from product where category_id = 'c002' order by price;

b)查询所有category_id为c002的商品,并按价格降序排序
select * from product where category_id = 'c002' order by price desc;

4.5聚合函数

聚合函数: 又叫统计函数也叫分组函数

常见聚合函数: count()   sum()  avg()  max() min()

注意: 聚合函数(字段名)方式会自动忽略null值


统计数据的时候,即使某条记录为空,依然也算一条数据
如何不忽略null值统计个数?: count(主键)或者count(*)也可以用cont(常量)

例子

a)统计商品总个数
select count(*) from product;

b)统计商品分类id不为空的商品个数
select count(*) from product where category_id is not null;

c)统计所有商品的总价
select sum(price) from product;

d)统计所有商品的平均价格
select avg(price) from product;

e)统计所有商品的最大价格
select max(price) from product;

d)统计所有商品的最大价格
select min(price) from product;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值