Mysql数据库基础以及普通查询和一些方法

一,表的创建

        各个约束的作用

                1,非空 not nul,

                 2,唯一 unique

                3,主键约束 = 非空 + 唯一   PRIMARY KEY 注意:非空和唯一只是主键的属性,并不代表他们二个就表示主键

                4,一个表只能有一个主键主键以外的 都叫 外键

                5,auto_increment 自增长

                6,comment注释

                7,check约束条件

CREATE TABLE t_score(
sid int PRIMARY KEY auto_increment COMMENT '主键',
sname VARCHAR(20) not null unique COMMENT '姓名',
score double(3,1) not null  COMMENT '成绩',
CHECK (score >=0 and score <=100),

)

在上面的建表中,sid 为主键,自增长,sname非空且唯一,score不为空check约束限制了score必须在[0,100]的范围内

这里的数据类型需要注意 double中的3代表需要三个数字,其中的1代表三个数中最少有一位是小数,注意:即使是412.1111111依旧可以当做数传入进去,他会自动保留一位,在这里如果传入的是100依旧是不可以的,因为必须要有一位有效的小数

数据准备

INSERT INTO t_score (sname, score) VALUES ('庆弟', 12.2);
INSERT INTO t_score (sname, score) VALUES ('李庆', 45.3);
INSERT INTO t_score (sname, score) VALUES ('张冠庆戴', 35.2);
INSERT INTO t_score (sname, score) VALUES ('我一点都不困', 67.3);
INSERT INTO t_score (sname, score) VALUES ('庆给给', 55.5);

这里主键自增所以可以不传。

基础的查询和函数 

        1,普通的and查询和or查询
 

SELECT *FROM t_score WHERE score>30 OR score<60;
SELECT *FROM t_score WHERE score>30 AND score<60

        2,between查询(等价于and)

SELECT *FROM t_score WHERE score BETWEEN 35.2 AND 55.5

between的区间是双闭合的

3,模糊匹配 like连接(只说明最常用的)
 

SELECT * from t_score WHERE sname LIKE '庆__';
SELECT * from t_score WHERE sname LIKE '_庆_';
SELECT * from t_score WHERE sname LIKE '庆%';
SELECT * from t_score WHERE sname LIKE '_%庆%_';

 

里面通配符表示的含义为,%表示匹配任意个字符可以是0,_表示只匹配一个字符,并且这个字符不可以被省略,必须要有一个字符 

4,最基础的一些和常用的聚合函数

1,count 求个数 ,

2,max 最大值

3,min 最小值,

4,sum 求和  avg

注意一下非空时候count的计算情况,这里因为做了约束暂时不做处理,之后会展示处理为空的情况

SELECT count(sid)  FROM t_score;
SELECT max(score) as '最大值' FROM t_score;
SELECT min(score) '最小值' FROM t_score;
SELECT sum(score) '所有学生分数总和' FROM t_score;
SELECT avg(score) '平均成绩' FROM t_score;

这里用到了一个别名 格式是 as+别名,as 可以省略。

5,函数

         if函数
 

select *,if(score>=60,'及格','不及格') '结果' from score

if可以理解为计算机语言中的三元运算符,*代表的就是select *from 中的 * 代表的是查出全表的数据

        case when函数

select *,case
WHEN score>=60 THEN '及格'
WHEN score<60 THEN '不及格'
END '成绩'
from score

注意 :case when 需要你去手动去结束函数,否则出错

6,对于一些为空的数据的查询以及聚合函数会出现的问题

聚合函数上的区别

数据准备

DROP TABLE IF EXISTS people;
CREATE TABLE people(
`name` VARCHAR(20),
`age` int
);
INSERT INTO people VALUES('庆弟',12);
INSERT INTO people VALUES('李庆',45);
INSERT INTO people VALUES('张冠庆戴',35);
INSERT INTO people VALUES('我一点都不困',67);
INSERT INTO people VALUES('庆给给',55);
INSERT into people VALUES (null,21);
INSERT into people VALUES (null,25);
INSERT into people VALUES ('null',88);

对他们进行聚合函数操作

SELECT count(name) from people
select count(age) from people

#select avg(age) form people

结果为   可以明显的看到name为6,但是age为 8 这是因为null是无法被聚合到的但是 字符类型的'null'是可以被聚合到的,注意这个区别。

我吧平均数注释掉的原因是因为,一旦存在null那么表内的值就无法聚合平均数

 查询上的区别

SELECT *FROM people where name =NULL

可以看到年龄没有值,但是我们表内是有值的。

注意:想查表内为null的只能用 name is null 而不可以用 name =null

SELECT *FROM people where name is NULL

SELECT *FROM people where name is NOT NULL

注意一下 字符null和null不是一个概念

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值