目录
查询结果排序——order by asc(默认)|| desc(降序)
列约束
唯一约束—— inuque
- 指所有记录中字段的值不能重复出现
- 唯一约束可以在创建表时直接设置,通常设置在除了主键以外的其它列上
- 唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值
唯一约束与主键约束
相同
- 唯一约束与主键约束相似的是它们都可以确保列的唯一性
不同
- 唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值
- 主键约束在一个表中只能有一个,且不允许有空值
检查约束——check
- 自定义约束, 用户可以自己添加约束条件
- 指定某列中的值必须满足布尔表达式
/* check——检查约束 */
USE testdb;
CREATE TABLE IF NOT EXISTS parts (
part_no VARCHAR(18) PRIMARY KEY,
description VARCHAR(40),
cost DECIMAL(10 , 2 ) NOT NULL CHECK(cost > 0),
price DECIMAL (10,2) NOT NULL
);
默认值约束——default
通常用在已经设置了非空约束的列,这样能够防止数据表在录入数据时出现错误
/* 创建新闻数据表 */
create table
ht_news(
nid int primary key,
title varchar(32) unique not null,
ctime date default '2022-10-1', -- 设置默认时间
detial varchar(10000),
isindex boolean,
cat_id int
);
/* 方案一:插入数据,使用默认值 */
insert into ht_news values(5,'标题五',default,'标题五详情,,,,,',1,50);
/* 方案二(推荐):给列提供特定值 ,没有出现的列自动应用默认值*/
insert into ht_news(nid,title) values(6,'标题六');
外键约束
声明外键约束的列,插入值必须在另一个表的主键中出现过,使得两张表建立关联
- 外键列和主键列类型保持一致
- 主键表建立在外键约束之前
-- 添加外键约束
-- cat_id:外键列
-- cid:主键列
foreign key(cat_id) references ht_cat(cid)
主键自增长——auto_increment
AUTO_INCREMENT 的初始值是 1,每新增一条记录,字段值自动加 1
插入值设置为null
查询数据表
查询表中指定的字段
/* 查询特定列 */
/* 查询出所有员工编号和姓名 */
select eid,ename from emp;
select 列名 from 表名;
设置别名——as(可以省略)
/* 设置别名 */
/* 查询所有员工的编号和姓名,设置别名*/
select eid as a,ename as b from tedu.emp;
过滤重复数据——distinct
/* 显示不同的记录,过滤重复数据*/
/* 查询员工部门 */
select distinct deptid from tedu.emp;
查询结果排序——order by asc(默认)|| desc(降序)
/* 查询结果排序 */
/* 查询所有部分,结果编码升序排列,默认升序排列 */
select *from tedu.dept order by did;
条件查询
/* 查询姓名为King的男员工 */
select *from tedu.emp where sex=1 and ename='king';
is null
/* 查询出部门为null的员工 is null is not null*/
select *from tedu.emp where deptid is NULL;
逻辑运算符
/* 查询出部门编号为20或30的员工 */
select *from tedu.emp where deptid=20 || deptid=30;
/* 简写(推荐)in() not in() */
select *from tedu.emp where deptid in(20,30);
模糊查询
* 模糊查询 ,常用于搜索功能*/
/* 查询出员工姓名中含字母e */
-- % 匹配任意数量的字符
-- _ 匹配任意1个字符
select *from tedu.emp where ename like '%e%';
/* 员工姓名中倒数第二个字符为e */
select *from tedu.emp where ename like '%e_';
分页查询
/* 简单查询——分页查询 */
/* 已知条件:current(页数),pageSize(每页条数) */
/* 开始查询的值=(当前current-1)*pageSize */
/* select *from emp limit 开始查询的值,每页数据量 */
/* 注意!!!
1、开始查询的值,不能写运算
2、开始查询的值和每页数据量,不能加引号 */
select *from emp limit 0,5;
聚合查询
/* 聚合查询/分组查询 */
select count(X),sum(X),max(X),min(x),avg(X) from 表名;
内连接(推荐)
/* 内连接 (推荐)*/
/* 查询所有的员工姓名及其部门名称,别名,防止列相同 */
select emp.ename, dept.dname from tedu.emp inner join dept on emp.deptid = dept.did;