数据库学习

数据库:

SQL:

DDL:

数据定义语言,主要对数据库,数据表,字段进行定义:
SHOW DATABASE ;
查询所有数据库
在这里插入图片描述
SELECT DATABASE() ;
查询当前数据库在这里插入图片描述
创建数据库:
create database plus;
在这里插入图片描述
创建条件的加入:
create database if not exists plus;------表示如果不存在则创建
create database if not exists sb default charset utf8mb4;—表示创建一张sb表字符集为utf8mb4;
在这里插入图片描述
删除数据库:
drop database plus;
在这里插入图片描述
切换数据库:
use mybatis;
mybatis是数据库名
show tables
查看本数据库中的数据表
在这里插入图片描述
具体的创建表:
create table user( id int comment '编号', name varchar(50) comment '姓名', age int comment '年龄', gender varchar(20) comment '性别' ) comment '用户表';
注意最后一个字段没有逗号,而且给字段起名字的时候用的是英文单引号。
不然会创建失败。
在这里插入图片描述
查看表中的字段信息:
desc user;
在这里插入图片描述查看详细字段信息:
show create table user;

在这里插入图片描述

注意databases,和database。
tables和table。

DDL

表的修改操作:
给表的添加字段:
alter table user add pwd varchar(50) comment '密码';
需要注意alter和alert,不一样.pwd是我想添加的字段名称。user是我想要修改的表名。
在这里插入图片描述
可以使用desc user查看字段。
修改:
alter table user change pwd password varchar(50) comment'密码';
修改字段名pwd为password,如果也想修改类型在我以上语句的基础上,把varchar(50)改成你想要的数据类型就好。
在这里插入图片描述
如果只想修改数据类型:
alter table user modify password int;

修改表名:
alter table user rename to tb_user;
user改为tb_user;

to前是
删除:
alter table user drop password;
在这里插入图片描述
删除表
drop table if exists user;
删除user表,if exists可以去掉;
在这里插入图片描述

清空数据:
truncate table user;
就是删除表并重新创建和原来一样的表。
注意我这里的user已经被删除了,所以他不可以再删除并创建和之前一样的标了。
在这里插入图片描述
一般借助提醒化界面工具提高开发效率
常用的有:sqlyog,navicat,dataGrip
我用的Navicat.

DML:

完成数据的增删改;
insert(增加
update(更新
delete(删除
1.给指定字段添加数据
insert into user (bookid,bookname,type,price) value (20,'花间酒','古风',40)
在这里插入图片描述
插入成功
在这里插入图片描述

2.给全部字段添加数据
INSERT INTO book VALUE (21,'人间月','古风',40)
在这里插入图片描述
插入成功:
在这里插入图片描述
3.批量添加数据
两种形式:
1:
INSERT INTO book VALUE (23,'匆匆那年','爱情',60),(22,'三生三世十里桃花','古风',50)
2:
INSERT INTO book (bookid,bookname,type,price) VALUE (24,'边城','爱情',60),(25,'古剑奇谭','古风',50)
在这里插入图片描述

在这里插入图片描述
修改数据:
UPDATE book SET bookname='特战荣耀',type='军事' WHERE bookid=17
注意,如果不带where条件,将改变整张表的此字段信息。
在这里插入图片描述
删除数据:
DELETE FROM book WHERE bookid = 16
注意,delete是删除整行,所以不能按字段删除,你可以使用update去修改指定字段的值。
如果不带where条件,那你讲删除表中的所有数据。
在这里插入图片描述

DQL

查询数据表记录。
SELECT字段列表
FROM表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING分组后条件列表
ORDER BY 排序字段列表
LIMIT分页参数

基本查询

根据字段查询:
SELECT bookid,bookname,type,price FROM book
查询所有:
SELECT *FROM book
在这里插入图片描述
设置别名
SELECT bookid,bookname,type AS book_type,price AS book_price FROM book
给type设置别名:book_type
给price设置别名:book_price
在这里插入图片描述
去除重复数据查询:DISTINCT
SELECT DISTINCT bookname,type,price from book
在这里插入图片描述

条件查询

SELECT 字段列表 FROM 表名 WHERE 条件列表

在这里插入图片描述
举几个例子:
第一个简单条件查询:
等于
SELECT * from book WHERE price=30
在这里插入图片描述
小于:
SELECT * from book WHERE price<50
在这里插入图片描述
小于等于:
SELECT * from book WHERE price<=50
在这里插入图片描述
查询没有类型的书籍信息:
is null
SELECT * from book WHERE type IS NULL
在这里插入图片描述
is not null:
SELECT * from book WHERE type IS NOT NULL
在这里插入图片描述
不等于:
两种写法:
SELECT * from book WHERE price<>50
SELECT * from book WHERE price!=50
在这里插入图片描述
复合条件查询:
SELECT * from book WHERE price<=100 && price>=50
SELECT * from book WHERE price<=100 and price>=50
SELECT * from book WHERE price between 50 and 100
在这里插入图片描述
or
SELECT * from book WHERE price =20 or price=50 OR price=100
还有另外一种写法:使用in关键字
SELECT* FROM book WHERE price in(20,50,100)
在这里插入图片描述
模糊匹配:
LIKE
SELECT * from book WHERE bookname LIKE '___'
表示查询书名为三个字的数据信息
SELECT * from book WHERE bookname LIKE '%我'
表示查询书名最后一个字为“我”的书籍信息
在这里插入图片描述

聚合函数

count-----统计数量
max------求最大值
min--------求最小值
avg--------平均值
sum--------求和
使用方法:
SELECT 聚合函数(字段列表)FROM 表名
具体使用:

SELECT * FROM book WHERE bookname LIKE'%间%'
SELECT COUNT(bookid) FROM book

SELECT AVG(price) FROM book

SELECT MAX(price) FROM book
SELECT MIN(price) FROM book
SELECT SUM(price) FROM book WHERE bookname LIKE '%间%'
最后一句表示模糊查询间的书籍,并求他们的价格综合

在这里插入图片描述

分组查询:GROUP BY

直接使用:
SELECT type, COUNT(*) FROM book GROUP BY type
根据书籍类型查询,每种类型有多少本书。
思路:
先分组写查询:
SELECT* FROM book GROUP BY type
再使用聚聚函数计算数量:
SELECT COUNT(*) FROM book GROUP BY type
这样得出的信息只有count一列,你并不知道他对应的是什么数据
所以type也参与查询在这里插入图片描述
其他分组查询类似。
再举一个例子:
SELECT type,AVG(price),SUM(price)FROM book GROUP BY type
意思是根据类型分组,在分别对组的价值进行求品均值,求和。在这里插入图片描述
一个比较复杂的查询:having
SELECT type,AVG(price),SUM(price)FROM book GROUP BY type HAVING AVG(price)<50
在之前的条件上加一个,要求分组内的价格平均值小于50.

where是对表中所有数据进行判断,having是根据组内条件判断. where不能对聚合函数进行判断,而having可以

在这里插入图片描述

排序查询 :oder by

SELECT * FROM book ORDER BY price ASC
根据价格进行升序排序
SELECT * FROM book ORDER BY price ASC,bookid DESC
根据价格进行升序排序,如果价格相同的情况下按照bookid进行降序排序。
在这里插入图片描述

分页查询:LIMIT

SELECT * FROM book LIMIT 10,10
表示查询第二页的10条数据
在这里插入图片描述

DQL语句的执行顺序
1.from
2.where
3.group by having
4.select
5.order by
6.limit

DCL

控制数据库的访问权限

函数

字符串函数

在这里插入图片描述
举个例子:

SELECT LOWER('HELLO')
//表示大写变小写
SELECT LPAD('01',5,'*')
//表示01左边添加若干个*到达5个字符
SELECT RPAD('02',5,'#')
//表示02右边添加若干个#到达五个字符

数值函数

在这里插入图片描述
举个例子:
SELECT LPAD(ROUND(RAND()*1000000,0),6,'0')
意思是生成6位随机数,验证码。

日期函数

在这里插入图片描述
举个例子:
SELECT name ,DATEDIFF(CURDATE(),entrydate) FROM emp
意思是查询员工工作了多少时间,curdate()是当前日期,entrydate是入职日期的字段使用datediff进行相减得到工作时间。

流程控制函数

在这里插入图片描述
例子:
SELECT id,name, (CASE WHEN math >=85 THEN '优秀' WHEN math>=60 THEN '及格' ELSE '不及格' END)AS '数学' FROM stu
意思是查询stu表,返回
分数>=85为优秀,
分数>60为及格
其余为不及格。

约束

约束是作用于表的字段上的。为的是保证数据完整性。
在这里插入图片描述
建立外键:
ALTER TABLE emp add CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES dept(id)
删除外键:
ALTER TABLE emp drop FOREIGN KEY fk_emp_dept_id

在这里插入图片描述
好了,明天继续。。累了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值