MYSQL查询语句的使用及添加约束
2018-03-20 21:23
781 查看
mysql语句之查询
SELECT sal,comm,sal+comm AS total FROM emp;
结果:
任何数值和null值相加 都是null值
IFNULL 这时需要过滤空值 如果该值是空的就当做0来处理
SELECT sal,comm,sal + IFNULL(comm, 0) AS total FROM emp;
结果:
ORDER BY 排序 默认是升序的 ASC升序 | DESC降序
SELECT * FROM 表名 ORDER BY 字段名 ASC|DESC; SELECT * FROM 表名 ORDER BY 字段名1 ASC|DESC,字段名2 ASC|DESC;
聚合函数
聚合函数是用来做纵向运算的函数(COUNT、MAX、MIN、SUM、AVG)COUNT():统计指定列不为NULL的记录行数; MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算; MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算; SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0; AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
当需要纵向统计时使用COUNT:
查询表中所有记录数: SELECT COUNT(*) FROM 表名; 查询表中某个字段的个数: SELECT COUNT(字段名) FROM 表名; 查询表中多个字段的个数: SELECT COUNT(字段1),COUNT(字段2) FROM 表名; 注意:使用COUNT查询的是不为null的记录数
SUM和AVG(自动过滤空值)
查询表中某个字段的总和: SELECT SUM(字段名) FROM 表名; 查询表中多个字段的总和: SELECT SUM(字段名1),SUM(字段名2) FROM 表名; 查询表中某个字段的平均值: SELECT AVG(字段名) FROM 表名;
MAX和MIN
查询表中某个字段最高和最低的值: SELECT MAX(字段名),MIN(字段名) FROM 表名;
分组查询
当需要分组查询时需要使用GROUP BY子句例如查询每个部门的工资和,这说明要使用部门来分组。 实例如下: 查询每个部门的部门编号和每个部门的工资和: SELECT deptno,SUM(sal) FROM emp GROUP BY deptno; 查询每个部门的部门编号以及每个部门的人数: SELECT deptno,COUNT(*) FROM emp GROUP BY deptno; 查询每个部门的部门编号以及每个部门工资大于1500的人数: SELECT deptno,COUNT(*) FROM emp WHERE sal>1500 GROUP BY deptno; 注意:凡是和聚合函数同时出现的字段名,一定要写在GROUP BY之后
HAVING子句(分组后使用的条件)
HAVING与WHERE的区别: 1.HAVING是在分组之后对数据进行筛选,WHERE是在分组之前对数据进行筛选 2.HAVING后面可以使用聚合函数,WHERE后面不可以使用聚合函数 例如: 查询工资总和大于9000的部门编号以及工资和: SELECT deptno,SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal)>9000;
分页查询
LIMIT 参数1代表起始页 参数2代表一共显示几条记录例如: SELECT * FROM 表名 LIMIT 0,5; 表示查询5行记录,起始从0开始(即从第一行开始)
模糊查询
模糊查询使用关键字 LIKE通配符: _ 代表任意一个字符 % 代表任意0~n个字符 例如: // 代表查询到的是包含w的结果 SELECT * < 4000 span class="hljs-keyword">FROM 表名 WHERE 字段名 LIKE '%w%'; // 代表查询到的是以w开头的两个字符 SELECT * FROM 表名 WHERE 字段名 LIKE 'w_';
数据的完整性
作用:保证用户输入的数据保存到数据库中是正确的确保数据的完整性 = 在创建表时给表中添加约束
实体完整性:
实体即表中的一行(一条记录)代表一个实体
实体完整性的作用:标识每一行数据不重复
约束类型:主键约束(PRIMARY KEY) 唯一约束(UNIQUE) 自动增长列(auto_increment)
主键约束(PRIMARY KEY): 注意:每个表都要有一个主键 特点:数据唯一且不能为null 第一种添加方式: CREATE TABLE student( id int PRIMARY KEY, name varchar(50) ); 第二种添加方式:(好处:可以添加联合主键) CREATE TABLE student1( id int, name varchar(50), PRIMARY KEY(id) ); 联合主键是一个主键 只要两个字段不完全一致就可以都插入到数据库中 CREATE TABLE student2( classid int, stuid int, name varchar(100), PRIMARY KEY(classid,stuid) ); 第三种添加方式: CREATE TABLE student3( id int, name varchar(100) ); // 通过修改表结构 添加主键约束 ALTER TABLE student3 ADD CONSTRAINT PRIMARY KEY (id);
唯一约束(UNIQUE) 特点:数据不能重复,可以有空值 CREATE TABLE student4( id int PRIMARY KEY, name varchar(100) UNIQUE );
自动增长列(auto_increment) 给主键添加自动增长的数值,列只能是整数类型 注意:数据被删除了也会按照原来的数进行增长 不是主键也能添加自动增长列 CREATE TABLE student5( id int PRIMARY KEY auto_increment, name varchar(100) ); // 给主键插入空值,会自动给字段添加值 INSERT INTO student5 VALUES(NULL,'zs'); INSERT INTO student5 VALUES(NULL,'ls');
域完整性 限制单元格的数据内容
域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较
非空约束 (not null) 和 默认值 (default)
CREATE TABLE student6( id int PRIMARY KEY, name varchar(50) not null, sex varchar(50) DEFAULT '男' ); // 错误插入 值不能为空 // INSERT INTO student6 VALUES(1,NULL,'男'); // 性别默认为男 INSERT INTO student6 (id,name) VALUES(3,'wl'); // 给null 会把null插入进去 INSERT INTO student6 VALUES(2,'wl',NULL);
引用完整性 (外键约束 让表与表之间通过字段建立联系)
外键约束: FOREIGN KEY
CREATE TABLE student7( sid int PRIMARY KEY, name varchar(100) ); CREATE TABLE score( score int, sid int, // 第一种创建外键 // 建立表联系 FOREIGN KEY(当前表的字段) CONSTRAINT fk_score_sid FOREIGN KEY(sid) REFERENCES student7(sid) ); 第二种创建方式: CREATE TABLE score1( score int, sid int ); ALTER TABLE score1 ADD CONSTRAINT fk_score_sid FOREIGN KEY(sid) REFERENCES student7(id);
相关文章推荐
- JAVA连接MYSQL,使用PreparedStatement 写查询,修改,添加,删除,语句
- 使用MySQL Query Browser最基本查询语句的注释
- Mysql中使用UNION语句进行多表连接查询
- 合理使用MySQL索引建立高质量查询语句
- MYSQL:使用慢查询日志定位效率较低的SQL语句
- 使用SQL语句添加和删除约束
- MySQL中使用case when 语句实现多条件查询的方法
- 【MySQL】如何使用C#+MySQL实现一条MySQL语句进行多表查询
- JAVA连接MYSQL,查询 ,添加,删除,语句
- 基于mysql查询语句的使用详解
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- thinkphp 使用原生mysql语句 联合查询
- JAVA连接MYSQL,查询 ,添加,删除,语句
- mySql查询语句Limit使用
- ylb:使用sql语句实现添加、删除约束
- JAVA连接MYSQL,查询 ,添加,删除,语句
- 使用过的MySql查询语句[待续...]
- MYSQL5下查询语句CASE WHEN 子查询的使用
- 使用SQL语句查询Mysql日志存放位置
- MYSQL:使用慢查询日志定位效率较低的SQL语句