数据库知识点汇总

1.创建数据库
create DATABASE 数据库名
2.显示数据库
show DATABASES
show CREATE DATABASE 数据库名
3.删除数据库:
drop DATABASE bd4
4.创建表
create table xx(
列名 列类型 not null auto_increment ,
列名 列类型, primary key(1)
列名 列类型
)
主键约束(primary key(id主键列))(2)
约束条件:
注:auto_increment 自增 通常和 主键约束(primary key(id主键列)) 搭配使用 目的是 不重复 给每行数据 一个唯一标识
5.删除表
drop table xx;
6.插入信息(增)
insert into 表名 values(要插入的信息)
例:insert into pet values( 1,‘旺财’,‘公’,‘牧羊犬’,2 );
insert into pet(pname,psex,type,age ) values( ‘旺财’,‘公’,‘牧羊犬’,2 );
7.更新操作(改)
Update表名set 更改内容 where条件
例:(1)update pet set pname=‘旺财2’ where pid=2
(2)所有的宠物 年龄加1
update pet set age=age+1
8.删除
Delete from 表名 where 条件
例:删除 id 是4 的数据
delete from pet where pid=4
9.查询(*)
(1)简单查询
select 列 ,列… from 表 where 条件
例:select pid,pname ,psex ,age from pet where age>=5 ;
select * from pet;
起别名
列 as ‘别名’ as 可以省略 ‘’ 或 “” 都行
例:select pid ,pname ‘姓名’ ,pname from pet
select pid ,pname as “姓名” ,pname from pet
select stu.sno from s_student as stu

排序
order by 列 asc(升序) / desc(降序)
通常 放在查询的最后面 默认是 asc
例: 先按照性别排序 然后相同性别的情况下,再根据年龄排序
select * from pet order by psex DESC , age asc
关键字
1.where 后面 可以 加的条件
(> < >= <= 不等于 : != ,<>)
例:所有公的
select * from pet where psex !=‘母’
select * from pet where psex <> ‘母’
2.and 并且 or 或者
例:查询 公的 并且 年龄大于5岁的宠物
select * from pet where psex=‘公’ and age>5
distinct 去重
3.查询空不空is null is not null
例:查询 所有 没有 生日的 宠物
select * from pet where birthday is null;
select * from pet where birthday is not null;
4.查询不连续的有限个数的值in : 列 in (值1,值2,值3…)
例:查询 宠物年龄 是 3 5 7 的 记录
select * from pet where age =3 or age=5 or age=7
select * from pet where age in (3,5,7)
将 pet 表 添加 一列 birthday date 类型
ALTER table pet add COLUMN birthday date;
5.like 模糊查询
列 like ‘%值%’
% 代表任意个任意字符0~无穷
_ 代表任意一个字符
例:查询 姓曾的 人
select * from s_student where sname like ‘曾%’
(2)函数
聚合函数:将多行 汇总 变成一行
avg() max() min() sum() count()
分组 group by
单行函数:每一行 都会执行一次的 函数
CHAR_LENGTH(列) 获取 列 的值的字符长度
例:select pname,CHAR_LENGTH(pname)
from pet where char_length(pname)>2
分类
1.数值
round(值,保留几位) 四舍五入 保留小数
select round(123.956,2)-- 123.96
select round(123.956)-- 124
select round(153.956,-2)-- 200
truncate() 截断 不四舍五入
select TRUNCATE(123.956,2)-- 123.95
select TRUNCATE(123.956,-2)-- 100
符号 代表方向
2.字符型
substr(str,起始位置,截取长度) 进行字符串截取 将截取之后的信息展示出来
1234567
select SUBSTR(‘abcdefg’,3,4) – cdef
select SUBSTR(‘abcdefg’,-5,4)–cdef
-代表 从后往前数 ,4 代表 往后截取的长度
length() 字节长度
char_length() 字符长度
例:select length(‘中国’); – 6
select CHAR_LENGTH(‘中国’); – 2
trim(要去掉的字符from 原来的字符串) 去掉两端 指定的字符
例:select TRIM(’ ’ from ’ a b c d ‘);-- a b c d
select TRIM(‘a’ from ‘a b c d ‘);-- b c d
replace(str, 老串,新串)
例:select REPLACE(‘abcadeafg’,‘a’,‘q’) – qbcqdeqfg
instr(串,子串)在串中查找子串第一次出现的位置如果没有则返回0
例:123456
select INSTR(‘abcabc’,‘b’) 2
例:第二次出现b 的位置
Select INSTR(substr(‘abcabc’,INSTR(‘abcabc’,‘b’)+1),‘b’)
+INSTR(‘abcabc’,‘b’)
3.日期型
now() 当前日期时间
select year(now()) 年
select month(now()) 月
select day(now()) 日
select date(now()) 2019-04-16
select HOUR(now());
select MINUTE(now());
select SECOND(now());
select ADDDATE(now(),2)加两天
select SUBDATE(now(),2)减两天
select date(now())+2;
4.转换函数
隐式转换:自动就转了不用管
insert into pet (age) values(‘20’)
insert into pet (birthday) values(‘2019-09-08’);
显式转换:
将 字符串 转换为日期类型
str_to_date(str,’%Y-%m-%d %H:%i:%s’ )
select STR_TO_DATE(‘2019-09-08’,’%Y-%m-%d %h%i%s’)
将日期转换为字符串
date_format(now(),’%Y-%m-%d %H:%i:%s’)
select date_format(now(),’%Y-%m-%d %H:%i:%s’)
单行函数
1.数值
round(x,-2) truncate
2.字符
3.截取 substr( 列,起始位置,长度)
4.长度 length() char_length()
5.trim() 去掉两端的指定 字符
6.replace(列,‘老’,‘新’ )
7.instr(列,值) 在列中 从左往右找第一次出现的索引位置
8.日期
now()
year() month() day() date() hour() minute() second() adddate();

9.转换
str_to_date(列,’%Y-%m-%d %H:%i:%s’ );
date_format(列,’%Y-%m-%d %H:%i:%s’ );
(3)多表链接
1 对 1
1 对 多
多 对 多
1.等值连接 内连接
例:select * from pet,emp
where pet.ren=emp.empno ;
2.内连接
inner join on
3…左联接
表1left join 表2 on等值条件(左联看左表)
展示出左面的表中的所有内容,与之相对应的另外一面有匹配的就显示没有匹配的就null。
例:查看 所有 员工 及其 宠物信息
select * from emp e left join pet p
ON e.empno=p.ren
4.右联接
right join on
例: select * from pet p right join emp e
ON e.empno=p.ren
5.全联接
mysql 没有全连接
union 关键字将左联和右联合在一起从而达到全连接的目的
例:select * from emp e left join pet p
ON e.empno=p.ren
UNION
select * from emp e right join pet p
ON e.empno=p.ren
(4) 嵌套查询
将查询语句嵌入到某个查询中
例:查询 张三 所拥有的宠物信息
select * from pet where ren =
( select empno from emp where ename=‘张三’)
10.索引 index
加快 查询速度
例:ADD INDEX
Index_pname(pname);
11.创建视图
例:create view vs
as select sno,sname,ssex,classes from s_student;
注:
多表的视图不能增删改
单表的视图增删改查都可以
13.事务 transaction
数据库操作的最小单元
例:transaction
转账 a --> b 100元
a 账户 -100
update account set money=money-100 where id=‘a’
b 账户 +100
update account set money=money+100 where id=‘b’
特征 A 原子性 事务 中 的 多个操作作为整体不可分割
C 一致性 要么全成功 要么全失败
I 隔离性 事务和 事务 之间相互 独立 互不影响
D 持久性 事务提交后 则 数据永久生效
12.
commit; – 提交 数据
rollback;-- 撤销
13.约束 constraint
限定
唯一 unique 限定的列 的值 不能重复 可以有多个
主键 primary key 特殊的 唯一约束 不重复 而且 每个表 只能有一个
非空 not null 列的值不能为null
外键 foreign key 从表中 列的值 只能是 主表的主键列的值 或者是null
ALTER TABLE pet ADD CONSTRAINT fk_emp FOREIGN KEY (ren) REFERENCES emp (empno);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值