sql笔记01

表记录的常用操作
CRUD
插入记录:insert into a value(1,2);
查询记录:select * from a                                                                                                               修改记录: update a set tel=555;
删除记录:delete from a;
处理数据插入异常,提示数据过长,实际是变成了中文乱码,需要转换
set names gbk;

主键约束:添加primary key
特点是:特点是字段必须唯一,不能是null
insert into a values(10);*成功
insert into a values(10);不成功,因为10已经存在
insert into a values(null);不成功,不能存在null

AUTO_INCREMENT  自增
固定搭配

primary key AUTO_INCREMENT
主键自增策略,是指主键的值不需要程序员数
交给程序自增,给主键增加,AUTO_INCREMENT
表里都应该拥有主键,数字给null,自动维护第一个字段id的值

非空约束
NOT NULL .
CREATE TABLE c(
id INT PRIMARY KEY AUTO_INCREMENT,
pwd VARCHAR(10) NOT NULL
);
insert into c values(null,“123”);//成功
第一个null是id的值,id是主键自动递增
insert into c values(null,null);//不成功,添加非空约束,字段值不能为null

唯一约束
给字段添加unique
值必须唯一
create int primary key auto_increment
不区分大小写,一样报错

查询部门表中的某一项
查询使用字段名代替*
查询多个字段的值时用,号连接
举例子:
select 某一项 from 部门表

四,函数基础、
测试
1.lower变小写

2.upper变大写
例子:select upper(dname) AS X,lower(loc) from dapt;
AS X:设置别名

3.length获取长度
SELECT ename, LENGTH(ename) FROM emp;
一个字母算作一个长度
一个字算作3个长度
长度不固定,通用于utf-8

4.substr(a,b,c)截取字段数据
a:字段姓名
b.从第几个数据开始截取
c.截取长度(不够有多少截多少)

5.concat(a,b,c)拼接
a:字段名
b,c想要拼接的内容
SELECT ename, CONCAT(ename,ename) FROM emp;拼接enam的值和ename的值    

6.replace (a,b,c)
a是字段名
b是原名
c是要替换成的值
select dname ,replace(dname,"web","WE") from dept;

7.ifnull(a,b)
a字段名
b 如果是null替换的值
 SELECT comm ,IFNULL(comm,1000)FROM emp;

SELECT comm ,ROUND(comm),CEIL(comm),FLOOR(comm)FROM emp;
round四舍五入 ceil向上取整 floor 向下取整

获取当前的系统时间
SELECT NOW(),year()
获取当前年月日
SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW());

获取当前时间的小时
SELECT HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());

转义字符
'作为sql语句符号,内容中出现单撇就会乱套,进行转义即可
select 'ab'cd' -- 单引号是一个SQL语句的特殊字符
select 'ab\'cd' --数据中有单引号时,用一个\转义变成普通字符
表示xi'an
"xi'an"  'xi\'an'

条件查询:

常见的业务中,增删改查crud,查询最多
去重 distinct
SELECT  DISTINCT loc  FROM dept; 加载loc前面
where用来引导条件,where的效率比having高效,优先用where,分组前执行where,分组后执行having

SELECT  *  FROM dept WHERE deptno>10 AND loc="beijing";
SELECT  *  FROM dept WHERE deptno IN(10,20,30);in的写法,查询in字句

like模糊查询

查询null数据
SELECT  * FROM emp WHERE comm IS NULL;

between and
SELECT * FROM emp

select * from emp where sal<3000 and sal>10000

select * from emp where sal<=3000 and sal>=10000--等效

select * from emp where sal between 3000 and 10000--等效


limit分页,限制数据展示的条目
展示2条
SELECT *  FROM dept  LIMIT 2,;
从n+1(1+1)条开始展示数据,总共展示2条
SELECT *  FROM dept  LIMIT 1,2;

order by 排序
升序
SELECT *  FROM emp ORDER BY  mgr;
降序
SELECT *  FROM emp ORDER BY  mgr DESC;
按照字母顺序排序
SELECT *  FROM emp ORDER BY  ename ;
按照数字大小排序
SELECT *  FROM emp ORDER BY  hiredate ;
会查utf-8里汉字对应的数字升序排序,字典顺序
SELECT *  FROM emp ORDER BY  job;

聚合函数
二:聚合函数

概述
把一列的所有值聚合起来,然后做数据分析
count 个数
sun求和
max最大值
avg平均数 
测试聚合函数
max  查询最高工资
SELECT MAX(sal)FROM emp
min   查询最低工资
SELECT MIN(sal)FROM emp
sum  查询工资总和

count
SELECT COUNT(1)  FROM emp;固定写法,比里面放*高效,1没有意思 ,用的比较多
SELECT COUNT(*)  FROM emp;低效
SELECT COUNT(sal)  FROM emp;可能有问题,不统计null元素

错误:
sal五行
max(sal)一行
查询结果中,如果出现了非聚合列和聚合列混搭的情况,一定需要分组
SELECT sal, MAX(sal)FROM emp;


分组
group by表示分组
解决混搭,完成需求,
#分组:group by,把数据按照维度分组后,数据分析
#练习,统计每个岗位的平均薪资
SELECT job ,AVG(sal) FROM emp GROUP BY job;  
分组口诀:
什么时候要分组 查询时出现了混合列
按照什么分组,按照非聚合列分组

having过滤
#练习每年入职的人数,只要人数>1的记录
SELECT YEAR(hiredate) a,COUNT(1) b FROM emp GROUP BY a HAVING b>1; 

where 和 having
where高效

事务四个特性acid;
数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

事务的四大特性:
原子性:把多条sql,当做是一个原子密不可分,要么全成功,要么全失败
隔离性:数据库为了保证性能也支持高并发,但是有安全隐患,保证多个操作之间是隔离的
持久性:对数据库的操作是持久生效影响的
一致性:保证数据在多个系统中是一致的
隔离级别:
1.读已提交:安全性最差,可能发生
2.读未提交
3.可重复读
4.串行化

默认约束
CREATE TABLE e (
  id int(11) NOT NULL AUTO_INCREMENT,
  SEX varchar(10) DEFAULT '男'
  PRIMARY KEY (`id`)

检查约束

外键约束:给字段添加外键约束
主表维护了和子表的关系
子表中的主键的值必须取自主键
当主表删除或者修改数据时,子表必须没有相关数据
外键约束:给字段添加外键约束
FOREIGN KEY (user_id) REFERENCES  zhu  (id)

and高效 or低效 尽量用and不用or

主键自带索引,提高查询效率


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值