数据库常用SQL语句
- 显示所有的数据库
- show databases;
- 新建数据库
- create database if not exists 数据库名 default character set = 'utf8';
- 删除数据库
- drop database (if exists) 数据库名;
- 使用表
- use 数据库名;
- 新建表
- create table if not exists 表名(
id int unsigned primary key auto_increment,
name varchar(10),
gender char(1),
birthday date,
time datatime,
score decimal(4,1)
);
- 删除表
- drop table (if exists) 表名;
- 增加数据
- insert into 表名 (字段1, 字段2, 字段3) values
(字段1值, 字段2值, 字段3值),
(字段1值, 字段2值, 字段3值);
- 修改数据
- update 表名 set 字段1 = ‘字段值1’, 字段2 = ''字段值2 where 条件;
- 删除数据
- delete from 表名 where 条件; # 删除表格里面已有的数据
- truncate table 表名; # 相当于删除表后再建一个同名的空表
- 逻辑删除(标记)
- 添加一个字段isdelete,删除-1,未删除2
- update 表名 set isdelete = 1 where id = 1; # 将id为1的数据的isdelete字段值改为1,即标记为已删除
- select * from 表名 where isdelete = 0; # 查询出未被标记删除的所有数据
- 查询
- select * from 表名; # 简单查询
- select 字段1 (as) 别名1, 字段2 (as) 别名2 from 表名 where 条件; # 别名
- select distinct 字段1, 字段2 from 表名 where 条件 # 去重
- where 条件
> < = !=(<>) <= >= # 比较运算
- and or not # 逻辑运算
- like '孙%' # 以孙开头的任意长度字符(模糊查询)
- like '孙_' # 以孙开头的两个字符(模糊查询)
- in (值1, 值2, 值3) # 范围查询,功能同or
- between 10 and 80 # 范围查询,功能同and
- is (not) null # (不)为空,null表示未填写
- 排序
- order by 字段1 desc/asc, 字段2 desc/asc # desc (降序)、asc(升序,默认)
- order by convert(字段名 using gbk) # 将某个字段按照中文排序
- 聚合函数
- select count(*) from 表名; # 计数, ps:为null的数据不会被统计进去
- select max(字段名) from 表名; # 最大值
- select min(字段名) from 表名; # 最小值
- select avg(字段名) from 表名; # 平均值
- select sum(字段名) from 表名; # 求和
- 分组
- group by 字段名 # 按照某字段进行分组,有去重的作用,一般与聚合函数搭配使用
- 所有select的字段,除聚合函数中的字段,都必须在group by中出现。只要满足这个规则就可以
- 分组后过滤
- select count(*) from 表名 where sex = '男'; # 查询所有男生的人数(方法1---先过滤,在聚合)
- select count(*) from 表名 group by sex having sex = '男'; # 查询所有男生的人数(方法2---先分组聚合再过滤)
- 分页
- select * from 表名 limit 2; # 查询前2条数据,相当于limit 0, 7
- select * from 表名 limit 2, 3; # 跳过前2条,查询其后的3条
- select * from 表名 limit (页数-1) * 每页显示的条数, 每页显示的条数; # 分页功能
- select * from 表1, 表2; # 多表查询,但是会造成 “笛卡尔积”
- select * from 表1, 表2 where 表1.字段名 = 表2.字段名; # 等值连接进行多表查询,先连接另一张表的数据(必然会造成笛卡尔积,产生表1数据 * 表2数据的临时表),再进行where 的过滤判断
- 连接查询(内连接)
- select * from 表1 inner join 表2 on 表1.字段名 = 表2.字段名; # 连接的过程中先判断on条件,再连接另一张表的数据(不会产生临时表,不会生成笛卡尔积,性能高)
- 连接查询(左连接)
- select * from 表1 left join 表2 on 表1.字段名 = 表2.字段名; # 以左边表(表1)的数据为准,即显示全部的表1数据
- 连接查询(右连接)
- select * from 表1 right join 表2 on 表1.字段名 = 表2.字段名; # 以右边表(表2)的数据为准,即显示全部的表2数据
- 自关联
- select * from 表1 s1, 表1 s2 where s1.字段名 = s2.字段名; # 一张表需要用到多次
- 子查询
- 标量子查询(子查询返回的结果是一行一列(一个值))
select * from student where age >
(select avg(age) from student); # 查询出所有年龄大于平均年龄的学生信息
- 列子查询(子查询返回的结果是多行一列(多个值))
select score from 成绩表 where sid in (select sid from 学生表 where age = 18); # 查询出所有年龄为18岁的学生的成绩
- 行子查询(子查询返回的结果是一行多列)
select * from student where (sex, age) = (select sex, age from student where sex = '男' order by age desc limit 1); # 查询出男生中年龄最大的学生的信息
- 表子查询(子查询返回的结果是多行多列(临时表))
select cname, score from 成绩表
inner join
(select * from 课程表 where cname = ('数据库', '系统测试')) as c on 成绩表.课程编号 = c.课程编号; # 查询数据库和系统测试课程的成绩
- 关键字
- in ----------------- 范围
- select score from 成绩表 where sid in (select sid from 学生表 where age = 18); # 查询出所有年龄为18岁的学生的成绩
- (> < =)any/some () ------------------ =any/some 相当于 in ,>any/some 大于最小的,<any/some 小于最大的
- (> < !=)all () ----------------- !=all 相当于not in ,>all 大于最大的,<all小于最小的
- in ----------------- 范围
- 标量子查询(子查询返回的结果是一行一列(一个值))
连接查询(多表查询/等值连接)
数据库常用SQL语句的更多相关文章
- GP数据库 常用SQL语句
GP数据库 常用SQL语句 --1,查看列名以及类型 select upper(column_name) ,data_type from information_schema.columns wher ...
- Oracle数据库常用Sql语句大全
一,数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSE ...
- ios数据库常用sql语句
SQlite常用语句 由于sql语句在程序代码中以字符串的形式存在,没有代码提示,不细心很容易出错,而且不容易被查出来.sql语句字符串是单引号. 写sql语句的时候一定要细心呀.如果写不好可以找公司 ...
- oracle数据库常用SQL语句(11.29更新)
笔者日常工作中常用到的sql语句,现总结如下,留作日后查看. 1.按照两列中的最大值取 ,只取两列其中的一列 SELECT * FROM t_doc T ORDER BY GREATEST(T.Loa ...
- 数据库常用SQL语句(三):子查询
一.为什么会使用子查询 虽然可以通过连接查询来实现多表查询数据记录,但不建议使用,因为连接查询的性能很差,为什么呢?我们来进行分析,例如 我们要查询部门表t_dept 和雇员表t_employee中的 ...
- 数据库常用SQL语句(一):常用的数据库、表操作及单表查询语句
以MySql数据库为例进行说明 1.数据库操作语句 2.表的操作语句 3.表中的字段操作语句 4.MYSQL支持的完整性约束 数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保 ...
- 整理总结数据库常用sql语句,建议收藏,忘记了可以来看一下
第一节课:sql语言介绍(参照PPT)及基本查询sql学习 1.数据库表的介绍 emp表:员工表 dept表:部门表 salgrady:薪资水平表 Balance: 2.基本的查询语句: 知识点: s ...
- oracle数据库常用SQL语句
1)删除表的一列 ALTER TABLE 表名 DROP COLUMN 列名; 2)增加表的一列 且默认值为0 alter table 表名 add 字段名 类型 default '0'; 3)修改表 ...
- Oracle 数据库常用SQL语句(2)查询语句
一.SQL基础查询 1.select语句 格式:select 字段 from 表名; 2.where 用于限制查询的结果. 3.查询条件 > < >= <= = != 4.与 ...
- Oracle 数据库常用SQL语句(1)
一.数据定义语句 CREATE:创建表或其它对象 create database test; //创建test数据库 ),sex )); //创建表 ALTER:修改表或其它对象的结构 )); //为 ...
随机推荐
- Mysql语句优化建议
一.建立索引 1)考虑在 where 及 order by 涉及的列上建立索引 2)对于模糊查询, 建立全文索引 3)对于多主键查询,建立组合索引 二.避免陷阱 然而,一些情况下可能使索引无效: 1) ...
- SSH远程管理服务实战
目录 SSH远程管理服务实战 1.SSH基本概述 2.SSH相关命令 3.Xshell连接不上虚拟机 4.scp命令 5.sftp命令 6.SSH验证方式 7.SSH场景实践 8.SH安全优化 9.交 ...
- php socket简单原理及实现笔记
1.什么是socket? socket:网络上的两个程序通过一个双向的通信连接实现数据的交换,连接的一端称为一个socket. 因此socket运行是置少有2个端组成,一个为服务端一个为客户端(客户端 ...
- 开放融合 | “引擎级”深度对接!POLARDB与SuperMap联合构建首个云原生时空平台
阿里巴巴新一代自研云数据库POLARDB与超图软件SuperMap GIS实现 “引擎级”深度对接,构建了自治.弹性.高可用的云原生时空数据管理平台联合解决方案,推出了业界首个“云原生数据库+云原生G ...
- UNP学习 路由套接口
一.概述 在路由套接口中支持三种类型的操作: 1.进程能通过写路由套接口想内核发消息.举例:路径就是这样增加和删除的. 2.进程能在路由套接口上从内核读消息. 3.进程可以用sysctl函数得到路由表 ...
- Cisco基础(二):三层交换vlan间通信、多交换机vlan间通信、三层交换配置路由、RIP动态路由配置、三层交换配置RIP动态路由
一.三层交换vlan间通信 目标: VLAN实现了广播域的隔离,同时也将VLAN间的通信隔离了.三层交换技术使得VLAN间可以通信. 通过三层交换实现VLAN间通信 方案: 为了解决了传统路由器低速. ...
- AcWing 215. 破译密码 (莫比乌斯反演)打卡
达达正在破解一段密码,他需要回答很多类似的问题: 对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d. 作为达达的同学,达达希望得到你的帮助. ...
- spring restTemplate使用方法
https://github.com/lenve/SimpleSpringCloud/tree/master/RestTemplate在Spring Cloud中服务的发现与消费一文中,当我们从服务消 ...
- Jmeter_Beanshell 返回值中提取参数值
Jmeter_Beanshell 返回值中提取参数值[准备环境]: ①Jmeter版本:5.1,JDK:1.8 ②前置条件:将json.jar包置于..\apache-jmeter-5.1\lib\ ...
- 【IO流】java中文件路径(相对路径、绝对路径)相关类及方法
原文链接:https://blog.csdn.net/Activity_Time/article/details/98034409 1. URL 菜鸟教程:Java URL处理 通常推荐对http等协 ...