数据库笔记02 SQL语句(下)+MySQL约束

数据库笔记02 SQL语句(下)+MySQL约束

一.SQL中查询语句语法详解:

  • 查询表中所有数据:
select * from 表 
-- 实际上建议将所有字段的名字全部写出来
  • 查询个别字段:
select 字段名1,字段名2 from 表
  • 条件查询:
select 字段 from 表 where 查询条件
-- where子句的相关内容将在下一部分介绍
  • 给字段起别名:
select 字段 as newname1,字段2 as newname2 from 表
-- 起别名仅仅只是在展示的时候使用别名而不是实地去改名
  • 字段运算:
select 字段,字段运算 as 临时字段展示 from 表
-- 假设在运算过程中多个字段运算时出现NULL,结果也会出现NULL
  • 对于NULL进行处理:
select IFNULL(字段运算,希望替换NULL的值) as 临时字段展示 from 表
  • 去除重复记录:
select distinct 字段 from 表 where 去重条件
-- 去重时注意在字段组合时必须完全一样才可以去除
  • 模糊查询 / 字符匹配
    应用场景,如:百度搜索引擎,搜s会显示所有第一个为s的信息):需要使用通配符%和_
    匹配任意多个字符% 匹配任意单个字符_
select * from 表 where 字段 like 's%'
-- 以s开头的所有字符串

通配格式:’%N’以N结尾’%R%'包含R'a%'第二个字符是a ’ _ _ _ _'5个字符组成

  • 排序查询:
select * from order by 需要排序的字段
-- 默认升序:从小到大)
-- 降序查询:
order by 排序的字段 DESC
-- 默认升序可以也在后面加ASC
  • 多个排序字段:order by 排序字段1 ASC,排序字段2 DESC
select 字段 from 表 where condition order by 字段 排序方式
  • 完整语法:
select后面出现顺序:where, group by, having, order by, limit
  • 聚集函数:
    聚集函数通常会配合分组group by来使用,如:select 分组字段AVG(字段) from 表 group by 分组字段
    分组字段在前后都必须出现
    where在分组前可以进行一个过滤,对于分组后的结果再次筛选要使用having
  • limit分页查询:
    每多少条数据作为一页进行分页查询:
select * from 表 limit 第几条所在的页,多少条数据一页

第几条所在的页从0开始,若4条一页则,4表示第二页,8表示第三页等等,每一页的起始索引是:(当前页面-1)* 每页条数

二.where条件子句:

where条件子句中对于查询条件的筛选除了基本的 = ,!= ,< ,>等等之外还有其他的表达:

  • 注意NULL值不能用等号来判断条件
  • 判断NULL时选择is null
select 字段 from 表 where 需要查询的信息 is null

不等于NULL的判断对应上面的is null有is not null
NULL的判断可以使用<=>运算符进行判断

  • 查询多个信息的或:使用OR
    where condition1 or condition2
    上面的简要记法:
    若condition对应的查询字段相同,使用where 字段 in(value1,value2…)
  • 查询多个条件的且对应的信息:使用and
    范围查询,例如大于等于1000小于等于2000:
where 字段>=1000 and 字段<-2000

上面的写法可以换成:

where 字段 between 1000 and 2000

三.聚集函数:

MySQL中的聚集函数是对于列进行运算的,大致有以下几种:

  • 查询字段对应的元素个数,使用==count(字段)==用来统计个数:
select count(字段) as 临时字段显示 from 表

注意: NULL值不参与count()函数的统计,一般统计个数选择值是唯一的字段进行统计

  • 统计一列中的总和,使用sum(字段)
select sum(字段) as 临时字段显示 from 表
  • 统计一列中的平均,使用avg(字段)
select avg(字段) as 临时字段显示 from 表

针对平均值,由于平均值计算公式等于总和除以数目,因此也可以写成:sum(字段)/count(字段)

  • 统计一列中的最大值和最小值:max(字段) 和 min(字段)
select max(字段) as 临时字段显示 from 表
select max(字段) as 临时字段显示 from 表

四.case when then end进行条件选择控制:

MySQL中在where子句进行条件控制时可以使用case when then end语句来修改不同分组中信息的取值:

select 需要显示的信息 as 原来的数据,
case 需要分组的列字段 
when '分组1' then 工资+500
...多个when
else 其余上面未提及的分组的改变
end as 变化后的数据

案例演示:
将学生的成绩按区间进行划分,60分以上显示及格,60分以下显示不及格:

select sname,sno,sclass,sgrade from test.sc 
where case sgrade
when sgrade>= 60 then sgrade = '及格'
else sgrade = '不及格'
end;

五.SQL中的约束:

  • 约束:一种束缚和规则,数据库中约束,就是字段的值,进行规则方面的一种限定
  • 数据库中常见的约束如下:
主键约束:PRIMARY KEY
自增长约束:AUTO_INCREMENT
非空约束:NOT NULL
唯一约束:UNIQUE
外键约束:FOREIGN KEY

主键约束:

主键约束是非空且唯一的,强烈建议一张表中要提供一个主键字段,且一张表中能且只能有一个主键字段
1)添加主键的语法(新建表时):

CREATE TABLE test(
	username VARCHAR(15) PRIMARY KEY, 
	-- 标明username为主键
	age INT
    -- 上面语法另一种写法,在建表最后:PRIMARY KEY(username)
)
-- 两种写法实际上没有太大区别,只是前者是列级主键,后者是表级主键

注意: 主键元素不能重复且不能为NULL
2)通过修改表也可以添加主键:

ALTER TABLE test ADD PRIMARY KEY(username) 
-- 已经建表了,修改时加上

3)联合主键:将列中的多个列作为主键,其写法只能遵循上面的第二种写法:

PRIMARY KEY(username,age)

联合主键是将多个列字段看成一个整体作为主键


非空约束:

非空约束指的是数据库中的某列中出现的字段中不允许某个字段为NULL,在创建表时后面加上NOT NULL

CREATE TABLE test(
	username VARCHAR(15) PRIMARY KEY, 
	age INT NOT NULL
)

唯一约束:

唯一约束指的是数据库中的某列中不允许某个字段值重复,在创建表时后面加上UNIQUE:

CREATE TABLE test(
	username VARCHAR(15) PRIMARY KEY, 
	age INT UNIQUE
)

1)唯一约束对于NULL值没有作用
2)可以将非空约束唯一约束一起用,但是实际上与主键还是有差别的


枚举类型:

MySQL中的枚举类型可以起到约束的作用,但不是约束
在创建表中字段时加上ENUM(value1,value2) 约束次字段取值只能为value1或value2:

CREATE TABLE test(
	username VARCHAR(15) PRIMARY KEY, 
	age INT ENUM(18,19)
)

非负约束:

在创建表时加入字段UNSIGNED 字段中无法出现负值:

CREATE TABLE test(
	username VARCHAR(15) PRIMARY KEY, 
	age INT UNSIGNED
)

自增长约束:

自增长约束通常结合主键约束,常称为自增长主键约束,一般对于数据的自增可以定义id int结合PRIMARY KEY AUTO INCREMENT
,一般主键自增长类型用在整数类型
的字段,配合主键约束一起使用,甚至可以结合非负。
在建表时经常会给每张表加这个id,而且在每张表中添加对应的值时不需要加id的值,生成时自动会递增1个:

CREATE TABLE test(
	id INT PRIMARY KEY AUTO INCREMENT,
	username VARCHAR(15), 
	age INT UNIQUE
)

删除主键约束:
ALTER table 表 drop 对应约束

如果约束多的话多句话每句删一个约束

CREATE TABLE test(
	id INT PRIMARY KEY AUTO INCREMENT,
	username VARCHAR(15), 
	age INT UNIQUE
)
-- 将建好表的id这一列的数据去除自增约束
ALTER table test drop AUTO INCREMENT 
-- 将建好表的id这一列的数据去除主键约束
ALTER table test drop PRIMARY KEY
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值