SQL增删改查基本操作:
-- 增INSERT [INTO] 表名 [(字段列表)] VALUES (值列表)[, (值列表), ...]-- 如果要插入的值列表包含所有字段并且顺序一致,则可以省略字段列表。-- 可同时插入多条数据记录!REPLACE 与 INSERT 完全一样,可互换。INSERT [INTO] 表名 SET 字段名=值[, 字段名=值, ...]-- 查SELECT 字段列表 FROM 表名[ 其他子句]-- 可来自多个表的多个字段-- 其他子句可以不使用-- 字段列表可以用*代替,表示所有字段-- 删DELETE FROM 表名[ 删除条件子句]没有条件子句,则会删除全部-- 改UPDATE 表名 SET 字段名=新值[, 字段名=新值] [更新条件]
表的约束:
表的约束(针对于某一列,约束这一列的行为: 能否为空,是否有默认值....):
1.非空约束:NOT NULL(NK),不允许某列的内容为空。
2.设置列的默认值:DEFAULT。
3.唯一约束:UNIQUE(UK),在该表中,该列的内容必须唯一。
4.主键约束:PRIMARY KEY(PK), 非空且唯一。
5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。(MySQL特有)
6.外键约束:FOREIGN KEY(FK),A表中的外键列的值必须参照于B表中的某一列(B表主键)。
非空,唯一,默认值
create table t_student(id bigint NOT NULL UNIQUE, name varchar(20), age int DEFAULT 18);
主键, 自增长
create table t_student(id bigint PRIMARY KEY AUTO_INCREMENT, name varchar(20), age int DEFAULT 18);
主键设计:
1:单列主键,单列作为主键,建议使用。
复合主键,使用多列充当主键,不建议。
2:主键分为两种:
1)自然主键:使用有业务含义的列作为主键(不推荐使用);
2)代理主键:使用没有业务含义的列作为主键(推荐使用);
数据操作:
数据操作语言( ML):
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
对于DDL 操作来说, sql执行结果会返回一个受影响的行数. 返回的是 0.
对于DML 操作来说,sql执行结果会返回一个受影响的行数. 返回的真正起作用的行数.
对于DQL 操作来说,sql执行的结果还是一个表(临时表).
保存操作:
插入语句:一次插入操作只插入一行.其含义是把哪些值插入到哪个表的哪些列中
INSERT INTO table_name (column1,column2,column3...)VALUES (value1,value2,value3...);
1.插入完整数据记录/空值
2.插入数据记录一部分
要插入的列和值一定要一一对应.(时间和字符串一定要使用单引号)
更新操作
更新操作:含义更新哪个表设置哪些列的等于哪些值条件是什么....
UPDATE 哪张表 SET 列名= 值[, columnName = value, ...][WHERE condition];
如果省略了where子句,则全表的数据都会被修改。
删除操作
删除操作:含义从哪个表中删除数据
DELETE FROM tablename [WHERE condition];
如果省略了where子句,则全表的数据都会被删除
简单查询(重点)
数据查询语言(DQL):
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
基本语法:
SELECT {*, column [alias],...} FROM table_name [where...];
说明:
SELECT 选择查询列表,列与列之间用逗号隔开
FROM 提供数据源(表、视图或其他的数据源)
如果为 * 和创建表时的顺序一致。
可以自己调整顺序,在select后边加上要查询的列名。
消除结果中重复的数据
语法:
SELECT DISTINCT 列名,... FROM table_name;
数学运算:对NUMBER型数据可以使用算数操作符创建表达式(+ - * /)
对DATE型数据可以使用部分算数操作符创建表达式 (+ -)
运算符优先级:
1、乘法和除法的优先级高于加法和减法
2、同级运算的顺序是从左到右
3、表达式中使用"括号"可强行改变优先级的运算顺序
设置显示格式:
需求: 查询'xx的售价是xx'
一旦遇到变量和常量拼接就必须使用CONCAT函数
把多个值以字符串拼接的形式拼在一起,可以使用函数concat(...)
设置列名的别名:AS ,AS可以省略.
1、改变表的名字;
2、用于表示计算结果的含义;
3、作为列的别名;
4、如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加引号;别名以后都不加引号.加了引号的别名导致排序失效.
过滤查询
比较运算符 含义
= 等于
> 大于
>= 大于或等于
< 小于
<= 小于或等于
!=(<>) 不等于
思考:使用where后面使用别名不行,总结select和where的执行顺序

注意:字符串和日期要用单引号扩起来.
要让MySQL查询区分大小写,可以:(了解)
SELECT * FROM table_name WHERE BINARY productName='g9x'SELECT * FROM table_name WHERE BINARY productName='G9X'
逻辑运算符
逻辑运算符 含义
-------------------------------------------------------------
AND(&&) 如果组合的条件都是TRUE,返回TRUE
OR(||) 如果组合的条件之一是TRUE,返回TRUE
NOT(!) 如果下面的条件是FALSE,返回TRUE
运算优先级 运算符
-------------------------------------------
1 所有比较运算符
2 NOT
3 AND
4 OR
注意:括号将跨越所有优先级规则
分析SQL:
SELECT * FROM product WHERE (NOT productName='逻辑M90' AND salePrice > 100) OR (dir_id = 2)
范围查询
使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。
格式:
SELECT <columnList> FROM table_nameWHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。
注:范围查询,小值和大值的关系是AND的关系.结果包含minvalue 和maxvalue两个临界值
集合查询
使用IN运算符,判断列的值是否在指定的集合中。
格式:
WHERE 列名 IN (值1,值2....);
注:集合查询,值与值之间是OR的关系.
空值查询
IS NULL:判断列的值是否为空。is not null
空值是特指没有值的列
格式:
WHERE 列名 IS NULL;
模糊查询
使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:
%通配符:可表示任意个数的任意字符。
_通配符:可表示一个任意字符。
通配符:用来实现匹配部分值得特殊字符。
注意: 模糊查询不是搜索引擎.
结果集排序
使用ORDER BY子句将记录排序(先有结果,再排序)
ASC : 升序,缺省。
DESC: 降序。
ORDER BY 子句出现在SELECT语句的最后。
格式:
SELECT <selectList> FROM table_name WHERE 条件 ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]...;
注意:别名用于排序时不能加引号,否则,排序失效。
SELECT语句执行顺序:
先执行FROM--->接着执行WHERE--->再执行SELECT--->最后执行ORDER BY
分页查询
分页设计:
假分页(内存分页/逻辑分页):所有数据已经存在内容中,只是显示部分而已,
优点:每次翻页时都从内存中取数据,翻页速度极快,简单
缺点:消耗内存大,容易内存溢出
真分页(数据库分页/物理分页):每次翻页都去数据库查询数据
优点:设计合理的情况下, 不会造成内存溢出
缺点:翻页较慢,复杂
语法:
LIMIT ?, ?
参数1: 起始索引. 从0开始
参数2: 每次获取多少条数据(每一页的条数)
想要分页,后台必须要知道的两个条件: 当前页 currentPage, 每一页多少条数据 pageSize.
起始索引: startIndex ===> (当前页- 1) * 每一页的条数.
select * from product limit (currentPage - 1) * pageSize, pageSize;
聚合函数
什么是分组函数/聚合函数/统计函数/聚集函数:
分组函数作用于一组数据,并对一组数据返回一条记录。
COUNT:统计结果记录数 (COUNT(*))
MAX: 统计计算最大值
MIN: 统计计算最小值
SUM: 统计计算求和
AVG: 统计计算平均值
语法格式:组函数名(列名)
———— e n d ————
觉得文章不错,欢迎点在看和转发,长按识别二维码关注公众号 java学途,了解更多精彩。

点在看,让更多看见。




