字段约束
是通过不同的方式,给不同的字段添加不同的约束,实现不同的效果,目前主要学习l了唯一约束,非空约束,主键约束
1唯一约束:如果为一个列添加了唯一约束那么这个列的值就必须是唯一的(即不能重复),但可以为空。 unique
2.非空约束:非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。 not null
3.主键约束:如果为一个列添加了主键约束,那么这个列的值就不能为空,不可以重复. primary key
主键自增策略 : 当主键为数值类型时,为了方便维护,可以设置添加自增策略auto_increment
基础函数
lower 数据转小写
select 'ABC',lower (ABC) form dept; //因为dept表中没有 大写ABC 满足不了转小写的任务要求 直接 查找 'ABC',然后通过lower转换
upper 数据转大写
select upper(dname) from dept //将dept中的dname 表头 转化为大写
length 数据的长度
select length (dname) from dept
substr 数据的截取
select dname , substr(1,3) from dept //从1截取 截取3个
concat 数据的拼接
select danme ,concat(dname,'abc') from dept //把dname 的数据都拼接 'abc'
replace 数据的替换
select dname ,replace(dname,'a','ccc')from dept // 把a数据替换成ccc
ifnull 数据替换null 如果是null 替换成想替换的数据
select comm(null,0)comm from dept // comm(null,0) 将数据中存在的null 转为0 后面的comm 因为是 "空格"行为,所以是改名字
round&ceil&floor
1round 四舍五入
select comm ,round (comm) from emp //四舍五入取整
select comm ,round (comm,1) from emp //四舍五入并保留一位小数
ceil 向上取整
select comm,ceil(comm) from emp
floor 向下取整
select comm,floor(comm) from emp
now
now 是获取系统当前时间
select now()
year 是获取系统当前年
select year(now())
year&month&day
hour()时 minute() 分 second() 秒
select now(),hour(now()),minute(now()),second(now()) from emp;
year & month &dat
select now(),year(now()),month(now()),day(now()) from emp;
转义字符
作为sql 语句.内容中出现单撇就会乱套,进行转义即可
select 'ab'cd' -- 单引号是一个SQL语句的特殊字符
select 'ab\'cd' --数据中有单引号时,用一个\转义变成普通字符
条件查询
distinct 去重 去掉重复的记录行
select distinct xxx from dept; 将dept表中的xxx标头中的重复记录行去掉
where 根据判断条件查询目标
查询 *=所有 表名 查询条件
select*from dept where deptno=0
select ename dept where loc='二区' //查询 dept表中 住在二区的 员工名字
like模糊查询 通常使用& 模糊符: 通配0~n个字符
//比如 查询名字中带有a的员工信息
select*from emp dept where ename like'&a&'
//比如查询 工作岗位中 董字开头的员工姓名
select ename from emp where job like '董&'
//比如查询 工作岗位中 董字结尾的员工姓名
select ename from emp where job like '&董'
null
//查询没有奖金的员工
select*from emp where comn is null
//查询有奖金的员工
select*from emp where comn is not null
//#练习12:查询工资在5000~10000的员工信息
select*from emp where sal>=5000 and sal<=10000 //更加灵活
select*from emp where sal between 5000 and 10000 //效果同上
//#查询2015年至2019年入职的员工信息
select*from emp where hiredate>='2015-1.1'and '2019.12.31'<=hiredate
select*from emp where year(hiredate) between2015 and 2019
扩展
char 和varchar 的区别
char字符串的长度是固定的, char(n) n最大为255 ,
varchar字符串的长度不是固定的,varchar(n) n 最大是65535
char (10) 保存10个字符 , 保存abc 剩余的7个会用空格补齐
varchar(10)保存 10个字符,保存abc 不会发生这种情况
char 浪费资源,但是查询很快
varchar 节约资源,但是查询较慢