首页 > 数据库 >SQL

SQL

时间:2023-08-20 15:44:30浏览次数:27  
标签:... join 查询 user SQL where select

1.SQL(结构化查询语言)

DDL:数据定义语言

DML:数据操作语言

DCL:数据控制语言

DQL:数据查询语言

 

2.DBMS(数据库管理系统)

RDBMS:关系型数据库管理系统

二元关系模型(表格形式)

Oracle、MYSQL、SQL server、db2

NoSQL:非关系型数据库管理系统

弥补关系型数据库系统的不足

 

3.MYSQL

关系型数据库系统

开源免费

MYSQL数据库管理系统———>创建多个数据库——>创建和管理多个表格

 

4.SQL语言基础

(1)查询

>查询所有:select * from user;

>有条件查询:select * from where a=? and/or b>?

select * from user where a>=10 and a<=20

>范围查询:select * from user where a between 10 and 20

>集合查询:select * from user where b in (1,2,3)  

>查询部分字段:select a,b

>别名(表,字段,结果集)as 别名:select a as 员工编号,select b as 员工工资 from user

>去重操作:select disdinct a from user

>null查询:select  a from user where b is (not) null  

>模糊查询(%:0或多个字符;_:表示一个字符):员工名称以S开头:select *from user where a like ‘s%’

员工名称以e 结尾:select *from user where a like ‘%e’

员工名称包含l:select *from user where a like ‘%l%’

员工名称第二个字符是N:select *from user where a like ‘_l%’

>排序{order by a asc(升序)/desc(降序)}

工资升序,一样,编号降序:select * from user order by a, b desc;

>限制结果查询(limit index,length):select * from user limit 5(选前五条记录)

 (2)分组查询(分组:group by 字段;平均:avg(字段);where:必须在group by 之前且该语句中不能使用聚合函数;having:使用和where基本;在group by 之后,可以使用聚合函数)

>每个部门的部门编号和平均工资:select a, avg(b) from user group by a

>部门的平均工资>2000的部门编号和平均工资:

(3)高级查询

a.内连接:连接表都匹配的记录才会出现结果集;与连接顺序无关

select * from g,h where g.c=h.c

inner join ...on...    :select * from g inner join h on g.c=h.c

inner join... using...    :select * from g inner join h using(c)

b.外连接:以其中一张表为驱动表,与另一张表的每条记录匹配,如果能够匹配,则进行关联并展示,如果匹配不到,则以null进行填充;与连接顺序有关

   >左外连接:left (outer) join...on...   :select * from g left join h on g.c=h.c

>右外连接:right (outer) join...on...

c.自连接:select * from emp e1 left emp e2  join on  e1.q=e2.p

 

标签:...,join,查询,user,SQL,where,select
From: https://www.cnblogs.com/ffxqc/p/17624361.html

相关文章

  • MySql Workbench 迁移工具 migration 提示缺少pyodbc 2.1.8 的解决方法
    想把公司的数据库转到MySQL,所以想装个MySQL测试,发现新版的MySQL(8.0.34)默认安装还是有不少问题,##一、譬如表、字段大小写的问题:lower_case_table_names=0--表名存储为给定的大小和比较是区分大小写的(linux默认)lower_case_table_names=1--表名存储在磁......
  • SQL Server游标
    文章来源:SQLServer游标-张龙豪-博客园(cnblogs.com) --5.利用游标更新删除数据---游标更新删除当前数据---1.声明游标declareorderNum_03_cursorcursorscrollforselectOrderId,userIdfrombigorderwhereorderNum='ZEORD003402'--2.打开游标openorder......
  • 为什么NoSQL不支持事务
    为什么NoSQL不支持事务1.背景看书《Neo4j权威指南》的时候,发现个问题:日常的NoSQL都不支持事务(ACID)。2.问题事务对数据的存储过程是有利的,既然事情是有利的,理论上存储型数据库都应该支持事务。但事实上是只有很少的一部分数据库支持事务,比如MySQL,Neo4j,并且MySQL也只有部分存......
  • rhel 6.5搭建MySQL 5.5.18一主一从高可用架构
    文档课题:rhel6.5搭建MySQL5.5.18一主一从高可用架构.系统:rhel6.564位数据库:MySQL5.5.18数据库安装包:mysql-5.5.18.tar.gzXtrabackup安装包:percona-xtrabackup-24-2.4.6-2.el6.x86_64.rpm架构信息如下:1、主从搭建1.1、前期准备安装两台MySQL数据库主机后,配置好主机IP地......
  • MysSQL 行转列以及列转行(学生的各科成绩,以及总分和平均分)
    一、行转列即将原本同一列下多行的不同内容作为多个字段,输出对应内容。1.建表语句--新建学生成绩表DROPTABLEIFEXISTStb_score;createtabletb_score(idint(11)notnullauto_increment,user_noVARCHAR(32)notnullcomment'学生工号',subject......
  • SQL Server触发器
    文章来源: SQLServer触发器-hoojo-博客园(cnblogs.com)--触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。--而存储过程可以通过存储过程的名称被调用。--触发器对表进行插入、更新、删除的时候会自......
  • Centos安装MySQL数据库
    写在前面本文使用的root账户进行操作,若不是root账户需要在操作前加上sudo大家一定要注意数据库安全问题啊......
  • MySQL中的事务基础
    事务的ACID特性MySQL中的事务指的是在数据库操作中,将一组SQL语句作为一个不可分割的执行单元进行处理的机制。事务具有原子性、一致性、隔离性和持久性的特性(ACID特性)。原子性(Atomicity):事务中的所有操作要么全部成功执行,要么全部失败回滚。如果事务执行过程中发生错误或中断,系统......
  • TiDB dumpling 导出MySQL 数据遇异常
    最近在学习研究TiDB数据库运维,据介绍逻辑导出工具dumpling是可以兼容MySQL数据库的,于是进行了测试数据库版本信息如下: 新建了两张表t1,t2: 利用存储过程批量插入500000行记录:dropPROCEDUREp_load2;delimiter$$createPROCEDUREp_load2(INtbnamevarchar(64),IN......
  • SQL语句优化
    一、操作符优化1.IN、NOTIN操作符IN和EXISTS性能有外表和内表区分的,但是在大数据量的表中推荐用EXISTS代替IN。NotIN不走索引的是绝对不能用的,可以用NOTEXISTS代替2.ISNULL或ISNOTNULL操作 索引是不索引空值的,所以这样的操作不能......