cgb2107-day02
Posted cgblpx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cgb2107-day02相关的知识,希望对你有一定的参考价值。
一,字段约束
QQ: 2250432165
–1,概述
当表里的字段值想要添加约束条件时,就可以使用各种字段约束
常见的有: 主键约束 非空约束 唯一约束
通常,在创建表时已经确定了,哪些字段要添加哪种约束
–2,测试
#字段约束
#1.主键约束:给字段添加主键约束时,字段的值必须唯一且非空
#自增策略:AUTO_INCREMENT把主键的值交给数据库维护,值是自增
CREATE TABLE a(id INT)
CREATE TABLE b(id INT PRIMARY KEY)#主键(唯一+非空)
CREATE TABLE c(id INT PRIMARY KEY AUTO_INCREMENT)#主键且自增
#2.非空约束:not null,给字段加了非空约束,字段值不能为空
CREATE TABLE d(NAME VARCHAR(10))
CREATE TABLE e(NAME VARCHAR(10) NOT NULL)
INSERT INTO e VALUES()#报错,必须有值
INSERT INTO e VALUES(NULL)#报错,必须有值
#3.唯一约束:unique,给字段添加唯一约束,字段的值不能相同
CREATE TABLE f(tel VARCHAR(11))
CREATE TABLE g(tel VARCHAR(11) UNIQUE )
二,函数
–1,概述
为了方便的操作数据库里的数据 , mysql提供了很多函数.
常见的有: lower upper length substr concat replace 日期函数 小数的函数
–2,测试
SELECT * FROM emp#查所有列,低效
SELECT ename FROM emp#查指定的列(把*换成字段名),高效
SELECT ename,empno FROM emp#查询结果和查询顺序一样的
#基础函数:
#lower:全转小写 upper:全转大写
SELECT ename,empno,LOWER(ename),UPPER(ename) FROM emp
#length:获取长度,一个字母或数字长度为1,一个汉字长度是3
SELECT * FROM dept
SELECT dname,LENGTH(dname),loc,LENGTH(loc) FROM dept#查部门名称
#concat:拼接字符串,第一个参数是字段名,后面的参数都是要拼接的数据
SELECT dname,CONCAT(dname,'hello') FROM dept
SELECT dname,CONCAT(dname,'hello',123,789) FROM dept
#substr(1,2):截取字符串,1是字段名,2是从哪个字符开始
SELECT dname,SUBSTR(dname,3) FROM dept
#substr(1,2,3):1是字段名,2是从哪个字符开始,3是截取长度
SELECT dname,SUBSTR(dname,5,3) FROM dept
#replace(1,2,3):1是字段名,是要把2换成3
SELECT dname,REPLACE(dname,'a','666') FROM dept
#ifnull(1,2):1是字段名,判断1如果是null就换成2
SELECT comm,IFNULL(comm,200) FROM emp
SELECT * FROM emp
#计算月薪
SELECT sal,comm,sal+IFNULL(comm,0) FROM emp
SELECT sal,comm,sal+IFNULL(comm,0),sal*12+IFNULL(comm,0)*12 FROM emp
#round四舍五入, ceil向上取整 , floor向下取整
SELECT comm,ROUND(comm),CEIL(comm),FLOOR(comm) FROM emp
#日期函数 now当前时间
#year年 month月 day日 hour时 minute分 second秒
SELECT NOW()#2021-08-26 15:39:18
SELECT YEAR( NOW() )
SELECT YEAR('2020-08-26'),MONTH(NOW()),DAY(NOW())
SELECT HOUR(NOW()),MINUTE(NOW()),SECOND(NOW())
#转义符号\\
SELECT 'xi\\'an'
SELECT "xi'an"
三,条件查询
–1,测试
#条件查询
#1. distinct 去重
SELECT DISTINCT loc FROM dept
SELECT * FROM dept
#2. where条件
#查询deptno=1的部门信息
SELECT * FROM dept WHERE deptno=1
#查询deptno=2的部门名称
SELECT dname FROM dept WHERE deptno=2
#查询地址在二区的部门名称
SELECT dname FROM dept WHERE loc='二区'
#多个条件可以用and 或者 or连接
#查询地址在二区,编号是2的部门信息
SELECT * FROM dept WHERE loc='二区' OR deptno=2
#查询编号是2的或者编号是3的 部门信息
SELECT * FROM dept WHERE deptno=2 OR deptno=3
SELECT * FROM dept WHERE deptno IN(2,3)#同上等效
#3. like模糊查询
#%通配符,通配了0~n个字符,_通配符,通配了1个字符
#查名称里包含o的部门信息
SELECT * FROM dept WHERE dname LIKE '%o%'#低效
SELECT * FROM dept WHERE dname LIKE 'o%'#以o开始,高效
SELECT * FROM dept WHERE dname LIKE '%o'#以o结束
SELECT * FROM emp WHERE ename LIKE 'l__'#了解
#4. null操作空数据
SELECT * FROM emp WHERE comm IS NULL#查是null的
SELECT * FROM emp WHERE comm IS NOT NULL#查不是null的
#5. between and 区间范围,是包含的关系
SELECT * FROM emp WHERE sal>3000 AND sal<10000
SELECT * FROM emp WHERE sal BETWEEN 3000 AND 10000
以上是关于cgb2107-day02的主要内容,如果未能解决你的问题,请参考以下文章