MySQL 常用命令 高级使用

目录

列约束

唯一约束——  inuque

唯一约束与主键约束

相同

不同

检查约束——check

默认值约束——default

外键约束

主键自增长——auto_increment

查询数据表

查询表中指定的字段

设置别名——as(可以省略)

 过滤重复数据——distinct

查询结果排序——order by asc(默认)|| desc(降序)

条件查询

is null

逻辑运算符

模糊查询

分页查询

 聚合查询

内连接(推荐)


列约束

唯一约束——  inuque

  1. 指所有记录中字段的值不能重复出现
  2. 唯一约束可以在创建表时直接设置,通常设置在除了主键以外的其它列上
  3. 唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值

唯一约束与主键约束

相同

  1. 唯一约束与主键约束相似的是它们都可以确保列的唯一性

不同

  1. 唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值
  2. 主键约束在一个表中只能有一个,且不允许有空值

检查约束——check

  1. 自定义约束, 用户可以自己添加约束条件
  2. 指定某列中的值必须满足布尔表达式
/* 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,'标题六');

外键约束

声明外键约束的列,插入值必须在另一个表的主键中出现过,使得两张表建立关联

  1. 外键列和主键列类型保持一致
  2. 主键表建立在外键约束之前
-- 添加外键约束
-- 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;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值