sql语句总结
总结内容
1. 基本概念
-
数据库的概念 1)结构化查询语言(Structured Query Language)简称SQL; 2)数据库管理系统(Database Management System)简称DBMS; 3)数据库管理员(Database Administration)简称DBA,功能是确保DBMS的正常高效运行; -
SQL常用的3个部分 1)数据查询语言(DQL):其语句也称“数据库检索语句”,用以从表中获得数据,保留字SELECT经常使用,DQL也是所有SQL中用的最多的,其他保留字还有WHERE, ORDER BY, GROUP BY和HAVING这些保留字还与DML一起使用; 2)数据操作语言(DML):其余局包括动词INSERT,UPDATE和DELETE。他们分别用于添加,修改和删除表中的行。也称动作语言; 3)数据定义语言(DDL):DDL主要用于操作数据库。
2. SQL列的常用类型
MySQL: | Java:
INT | int
BIGINT | long
DECIMAL | BigDecimal
DATE/DATETIME | java.util.Date
VARCHAR | String
3. DDL简单操作
3.1 数据库操作
3.2 表操作
-
表的约束 1)非空约束:NOT NULL,不允许某列的内容为空; 2)设置列的默认值:DEFAULT; 3)唯一约束:UNIQUE,该表中,该列的内容必须唯一; 4)主键约束:PRIMARY KEY,非空且唯一; 5)主键自增长:AUTO_INCREMENT,从1开始,步长为1; 6)外键约束:FOREIGN KEY,A表中的外键列。A表中的外键列的值必须参照于B表中的某一列(B表主键)。 -
建表 1)建表语法: 列名1 列的类型 [约束], 列名2 列的类型 [约束], … 列名N 列的类型 [约束] ); // 注意:最后一行没有逗号
例子:建立一个学生表(t_student) 字段有 id name email age 注意:建表不要使用关键字
## 如果表存在就移除,因为不能存在两个一样名称的表
DROP TABLE IF EXISTS 't_student';
CREATE TABLE t_student(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(25) UNIQUE,
email VARCHAR(25) NOT NULL,
age INT DEFAULT 17
);
-
删除表 1)删表语法: DROP TABLE 表名;
4. DML操作
4.1 修改操作(UPDATE SET)
-
语法 UPDATE 表名 SET 列1 = 值1, 列2 = 值2, … WHERE [条件] -
实战 // 1、将张三改为独孤求败 UPDATE t_student SET name=“独孤求败” WHERE name=“张三”;
注意:不要省略where条件子句,省略的话,全表数据都会被修改。
4.2 插入操作(INSERT INTO VALUE)
-
语法 INSERT INTO 表名 (列1,列2,…) VALUE (值1,值2,…); -
实战 // 1、插入完整数据记录 INSERT INTO t_student (name, email, age) VALUE (“xiaoming”, “xiao@qq.com”, 16); // 2、插入部分数据记录 INSERT INTO t_student (name, age) VALUE (“xiaoming”, 16); // 3、插入查询结果 INSERT INTO t_student(name, email, age) SELECT name,email,age FROM t_student;
4.3 删除操作(DELETE)
注意:Where子句别省略,否则全表的数据都会被删除。
5. DQL操作
被操作的表
5.1 消除重复元素(DISTINCT)
注意:distinct 放在2个字段前,是2个字段组合后重复才去重,放在第一个后会报错
5.2 算术运算符(+,-,*,/)
-
算术运算符的使用范围 1)对 number 型数据可以使用算术运算符(+,-,*,/)对数据进行操作;对date型数据可以使用部分算术运算符(+,-)对数据进行操作。 -
算术运算符的优先级 1)与数学中运算相同 -
实战 // 查询所有货物的id,名称和批发价(折扣价=销售价*折扣) SELECT id, productName, salePrice * disCount From product;
5.3 设置别名(AS)
-
作用 1)改变列的标题头; 2)作为计算结果的含义; 3)作为列的别名; 4)如果别名使用特殊字符(强烈不建议使用特殊字符),或是强制大小写或有空格时都需要加单引号。 -
语法 // 第一种 SELECT 列名 AS 别名 FROM 表名 [WHERE]; // 第二种 SELECT 列名 别名 FROM 表名 [WHERE]; -
实战 // 查询所有货物的id,名称和折扣价价(折扣价=销售价*折扣)(使用别名) SELECT id, productName, salePrice * disCount AS price From product;
5.4 按格式输出(CONCAT)
1)为了方便用户浏览查询结果数据,有时需要设置查询结果的显示格式,可以使用CONCAT函数来连接字符串。
5.5 过滤查询(WHERE)
1)使用WHERE子句限定返回的记录。
-
语法 SELECT FROM 表名 WHERE 条件;
注意:WHERE子句在FROM子句之后。
5.6 比较运算符(=, >, >=, <, <=, !=)
1)不等于:<> 等价 !=;
5.7 逻辑运算符(AND、OR、NOT)
1)AND:如果组合的田间都是 true,返回true; 2)OR:如果组合的条件之一是true,返回true; 3)NOT:如果给出的条件是false,返回true;如果给出的条件是true,则返回false。
5.8 范围和集合(BETWEEN AND)
1)范围匹配:BETWEEN AND 运算符,一般使用在数字类型的范围上。但对于字符数据和日期类型同样可用。 注意:BETWEE AND 使用的是闭区间。
2)集合查询:使用 IN 运算符,判断列的值是否在指定的集合中。
-
语法 WHERE 列名 IN (值1, 值2, …); -
实战 // 查询分类编号为 2,4 的所有货品的 id,货品名称 SELECT id, productName FROM product WHERE dir_id IN (2,4); // 查询分类编号不为 2, 4 的所有货品的 id,货品名称 SELECT id, dir_id, productName FROM product WHERE NOT dir_id IN (2,4);
5.9 判空(IS NULL)
1)IS NULL:判断列的值是否为空值,非空字符串,空字符串使用 == 判断;
结论:使用 = 来判断只能判断空字符串,不能判断 null;而使用 IS NULL 只能判断 null 值,不能判断空字符串。
5.10 模糊匹配查询(LIKE,%,_)
1)LIKE:模糊查询数据使用 LIKE 运算执行通配符; 2)通配符:% 表示可有零个或多个任意字符; _ 便是需要一个任意字符;
5.11 结果排序(ORDER BY)
1)ORDER BY:使用 ORDER BY子句将查询结果进行排序,ORDER BY子句出现在 SELECT 语句的最后; 2)ASC:升序;DESC:降序;
5.12 分组查询(GROUP BY)
1)Group By:分组查询,一般与having一起用,查询的参数只能是统计函数和分组的条件参数,或者是聚合函数,having 后面的条件只能是分组查询的字段或者统计函数;
5.13 DQL字句的执行顺序
1)FROM字句:从哪张表中去查数据; 2)JOIN table:先确定表,在确定关联条件; 3)ON 条件:表绑定条件; 4)WHERE字句:筛选需要的行数据; 5)GROUP BY子句:分组操作; 6)HAVING:对分组后的记录进行聚合; 7)SELECT字句:筛选需要显示的列数据;(对字段 AS 起别名是在这时候,所以 WHERE 中不能用字段的别名,ORDER BY 中可以使用别名); 8)DISTINCT:去重; 9)ORDER BY子句:排序操作; 10)LIMIT子句:限制条件;
6. 统计函数
6.1 常用关键字(COUNT、SUM、MAX、MIN、AVG)
总结
以上就是对 MYSQL的 SQL 语句的总结了,代码仅供参考,欢迎讨论交流。
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
|