首页 > 数据库 >SQL语句简单入门

SQL语句简单入门

时间:2023-03-23 09:01:53浏览次数:30  
标签:语句 入门 表名 字段 字段名 SQL where 主键 select

SQL语句速查

  • 创建部门表
deptno dname location
1 技术部 23楼
create table dept			--dept部门
(
	deptno int primary key,	--deptno部门编号,primary key主键
    dename varchar(9),		--dname部门名称,varchar长度变化的字符串
    loc varchar(10)			--loc部门位置
);							--varchar是最长多少,char是固定的长度
  • 创建员工表
empno name deptno manager hiredate salary
001 张三 1 2 2023-03-04 4444.00
create table employees
(
	empno int primary key,
    name char(10) not null,		--not null 不能为空
    deptno int,
    manager int,
    hiredate date,
    salary numeric(7,2)			--总长7位,保留小数点后2两位
);
  • 创建经理表
员工号 头衔
2 技术部经理
9 总裁
create table manager
(
	empno int primary key,
    title varchar(16)
);

  • 常用数据类型
数据类型 说明
int 整数类型
char(n) 字符/字符串,固定长度为n
varchar(n) 字符/字符串,可变长度,最大长度为n
numeric(a,b) 精确数值,总位数=a,小数点后位数=b
date 存储年月日,yyyy-mm-dd
  • insert:用于向表中插入新纪录,有两种用法

    • 为表中所有字段添加值时不需要字段名称,但要确保值的顺序与表中字段顺序相同
    insert into 表名 values(字段1的值,字段2的值,....);
    
    • 为指定的字段插入数据时,腰包字段名和字段值都列出来,并一一对应
    insert into 表名 (字段1,字段2,...) values(字段1的值,字段2的值,...);
    
  • 主键:主键的全称是主键约束,表的主键由表中一个或多个字段组成,主键唯一代表表中一条记录,关系数据库中通常每个表都有一个主键,没有主键的表通常是不严谨的设计的产物,主键有以下特点:

    • 每个表只能定义一个主键
    • 主键值必须唯一标识表中的每一记录,且不能为null。即表中不可能存在有相同主键值的两条记录
    • 一个字段名只能在联合主键字段中出现一次
    • 联合主键不能包含不必要的多余字段,当联合主键的某一字段删除后,剩下的字段不能唯一代表一条记录
  • select

--查询表中所有的字段
select * from 表名;

--查询表中指定的字段
select 字段1,字段2,... from 表名;
  • distinct 去重:同一字段中可能会出现重复值,使用关键字distinct去掉重复值
select distinct 字段名 from 表名;
  • where 条件过滤:如果要从表中选取指定的数据,将where子句添加到select语句
select 字段名 from 表名 where 字段 运算符 值;
  • and 和 or 运算符
select 字段名 from 表名 where 字段n 运算符 值n and|or 字段m 运算符 值m;
  • like 搜索匹配的字符串:在where子句中使用like运算符来搜索匹配字符串中的指定模式,百分号%匹配零个、一个或多个字符。
select 字段名 from 表名 where 字段 like 字符串;
  • in 匹配多个值:在where子句中指定多个搜索条件可以匹配的值,in实际是多个 or条件 的合并
select 字段名 from 表名 where 字段名 in (值1,值2,...);
  • between 指定范围:值可以实数字、字符串或日期
select 字段名 from 表名 where 字段名 between 值1 and 值2;
  • order by 排序:asc 升序,desc 降序
select 字段名 from 表名 order by 字段名1,字段名2,... asc|desc;
  • update 更新数据
update 表名 set 字段1=值1,字段2=值2,... where 子句;
--where 子句指定记录更新,没有where将更新表中所有记录
  • delete 删除记录:用于删除表中记录
delete from 表名 where 子句;
--where 子句指定记录更新,没有where将更新表中所有记录
  • view 视图
    • 视图是基于SQL语句的结果集的可视化表,视图中的字段就是来自一个或多个数据库中的正式的表中的字段
    • 视图总是显示当前的数据,每当用户查询视图时,数据库引擎通过使用SQL语句来重建数据
create view 视图名 as select 语句;
  • null:NULL值代表遗漏的未知数据,它的作用是未知的或不适用的值的占位符。
    • 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以NULL值保存。
    • 字段值是否是NULL的判断只能用 is null 或 is not null 。不能用=和!=
  • 字段 和 表的别名:在SQL语句中可以为表名或字段名指定临时使用的别名(Alias),别名只在当前的SQL语句中生效,它通常比字段名更具有可读性。别名有以下应用场景:
    • 字段名过长或可读性差
    • 涉及多个表,且多个表中有相同的字段名
    • 代表查询函数的结果
select 字段名 as 别名 from 表名 as 别名; --as可以省略
  • join连接:是基于多个表之间的共同字段把他们结合起来进行查询的一种方法:
    • 内连接:列出两个表中都存在的记录
    • 左连接:即使没有匹配也列出左表中的所有记录
    • 右连接:即使没有匹配也列出右表中的所有记录
select 字段名 from 表1 join 表2 where 子句;
  • SubQuery子查询:也称为嵌套查询,是一种嵌套在其他SQL语句的where子句中的查询,子查询用于为主查询返回其所需数据或对检索数据进行进一步限制
select 字段1,字段2,... from 表名 where 字段名 操作符(子查询);

  • count 函数
    • 统计符合条件的记录数
    • count(*) 统计表中的记录总数
    • count(字段名) 统计指定字段不为null的记录数
select count(*) from employee;
select count(deptno) from employee;
  • max函数:返回所选字段的最大值,用法是 max(字段名);

  • min函数:返回所选字段的最小值,用法是 min(字段名);

  • avg函数:返回所选字段的平均值,用法是 avg(字段名);

  • sum函数:返回所选字段的合计值,用法是 sum(字段名);

  • group by 分组:用于结合统计函数,更加一个或多个列对结果集进行分组

select 字段名,统计函数 from 表名 where子句 group by 字段名;
  • having 过滤分组:与where类似,但它们的过滤对象不同,where 对被选择的列进行过滤,having 子句对group by 产生的分组进行过滤

  • SQL语句的书写顺序:

select from where group by  having order by limit;

标签:语句,入门,表名,字段,字段名,SQL,where,主键,select
From: https://www.cnblogs.com/benbenlzw/p/17246161.html

相关文章

  • mysql科学计数法问题
    1.在mysql数据库中,我这里遇到的,dynamic类型的数据,小数点后多余四位后会以科学计数法来进行表示2.3.例如:20000.2342E24.5.6.首先这个问题是由于在sql......
  • Google Guice 入门教程05 - AOP(面向切面编程)
    2AOP面向切面编程2.1AOP入门在前面的章节主要讲Guice的依赖注入,有了依赖注入的基础后我们再来看Guice的AOP。我们先从一个例子入手,深入浅出的去理解Guice的AOP的原理和实......
  • Google Guice 入门教程07 - 整合第三方组件(1)
    4整合第三方组件在《GoogleGuice入门教程06 –Web和Servlet》中我们看到了Guice整合Struts2的应用。本章节继续讨论Guice整合其它第三方组件的应用。本章节重点谈G......
  • 为什么OS已经有了页面置换机制,MySQL中的Buffer Pool还需要再实现一遍?
    问题引入舍友最近在找实习,简历上有CMU15-445经典数据库项目。在面试时被问到:操作系统已经有页面置换算法,为什么BufferPool中还需要自己实现呢?操作系统中的页面置换......
  • mysql多实例批量部署script
    一、背景最近一个项目上,一台linux需要部署mysql8.0多实例,为了加快部署的速度,写了一个脚本。二、解决方案#!/bin/bash#downloadmysqlpackagepackage="mysql-8.0.31......
  • MySQL 知识点
    SQL语句--DDL CREATEDATABASE库名字 CREATETABLE表名字( ) ALTERTABLE表名字ADD//增 ALTERTABLE表名字DROP//删 ALTERTABLE表名字MODIFY//修改 A......
  • Java入门_一维数组_第二题_随机生成数
    前提小白一个,啥都不会,欢迎指点。题目随机生成10个整数(1-100的范围),保存到数组,并倒序打印以及求平均值,求最大值和最大值的下标,并查找里面知否有8。思路随机生成--......
  • Dbeaver22.0.3 连线配置mysql8版本
    编辑驱动新建连接,选则mysql库选中本地的jar文件点击编辑驱动后,选中库页签,添加文件,选中本地jar包参考https://www.cnblogs.com/jinci2022/p/16525548.html......
  • SQL函数大全
    文章目录概述1、聚合函数2、转换函数Cast和Convert的区别3、日期函数4、数字函数5、字符串函数6、系统函数7、文本和图像函数概述SQL中包含以下七种类型的函数:聚合函数:返......
  • sqli-labs-Less-1
    主要工具:hackbar,firefox、bpLess-1根据提示输入id(hackbar工具)输入1成功输入1'失败错误信息YouhaveanerrorinyourSQLsyntax;checkthemanualthat......