本章节主要介绍从增删改查数据
1.ID (列名)
ID 为一数据类型是整型 int
2.uname (列名)
uname 数据类型,可变长字符串,最大长度为25
3.gander(列名)
gander 定长字符串,长度为2
即如下
create table first_table(
id int, -- 列名:id,数据类型是整型int
uname varchar(25), -- 列名:uname,数据类型,可变长字符串,最大长度25
gander char(2) -- 列名:gender(性别),定长字符串,长度为2
);
增删改查
1.插入数据(增)insert
即
insert into first_table(id ,uname,gender)values(1,'张三','m');
insert into first_table(id,uname,gender)values(2,'李四','f'),
-- male(男)
--famale(女)
用其首字母代替
2.更新数据(改)update
即
update first_table set uname='老六',gender='f' where id = 1;
3.删除数据(改)delete
即
delete from first_table where id = 1 ;
4.查询数据(查)select
其中查询数据有多种
即 查询 限量查询(行)列查询 (列)别名查询 模糊查询 升降序排列 分组查询 聚合查询 去重查询 分页查询 内查询 外查询 左外查询 右外查询 嵌套查询 视图操作
1.查询
select * from first_table;
--登录,显示库、表,创建库、表,删(结构)库、表,数据增删改查
2.限量查询
SELECT * from product LIMIT 5;
3.列查询
SELECT username,Address,Phone from user;
4.别名查询
SELECT username as 用户名,Address as 地址,Phone as 手机号 from user;
5.模糊查询
SELECT *from user where username like '%i%';--'%(多字) _(单字)'任意位置有个字母'i'
SELECT *from user where username like '_o%;--第二个位置有个字符'o';'_'代表一个字符
SELECT *from user where username like '__i%';--第三个位置有个字符'i';
6.升降序排列
SELECT ProductName,Stock from product ORDER BY stock ASC;--Stock(库存)升序排列
SELECT ProductName,Stock from product ORDER BY stock DESC;--降序排列
7.分组查询 聚合查询
一般查找产品大类的种类和总库存
SELECT ProductName,ProductID,Description FROM PRODUCT GROUP BY ProductName,Description,ProductID;
SELECT ProductName,COUNT(*) as '大类',SUM(Stock)as '总库存' FROM product GROUP BY ProductName;
8.去重查询
SELECT DISTINCT ProductName FROM product;
9.分页查询
SELECT *from product LIMIT 5 OFFSET 7;
查找用户ID为1的订单信息
select o.OrderID,u.UserName,o.OrderDate,o.State,o.UserID,u.UserName,u.Email,u.Address,u.Phone
from orders o,user u where o.UserID = u.UserID AND u.UserID=1;
10.内查询
(查找用户ID为1的订单信息为类似内查询)
内查询,和关联查询功能一致,但效率比普通的关联查询高
(可改变排列顺序)
select o.OrderID,u.UserName,o.OrderDate,o.State,o.UserID,u.UserName,u.Email,u.Address,u.Phone
FROM orders o inner join user u on o.userID = u.userid AND u.UserID =1
11.外查询
左外查询,左边的表所有满足的数据都找出来,右表没有的数据留空
查找所有订单的用户信息,用户不存在留空
左外查询,左边是主表。主表是orders,次表是user.查找所有主表信息,此表信息不存在留空
select o.OrderID,u.UserName,o.OrderDate,o.State,o.UserID,u.UserName,u.Email,u.Address,u.Phone
FROM orders o left join user u on o.userID = u.userid
12.右外查询
右外查询,右表所有满足的数据都找出来,左表没有的数据留空
查找所有用户的订单信息
右外查询,右边是主表。主表是user,次表是orders。查找所有主表信息,次表信息不存在留空
select o.OrderID,u.UserName,o.OrderDate,o.State,o.UserID,u.UserName,u.Email,u.Address,u.Phone
FROM orders o right join user u on o.userID = u.userid
ORDER BY u.UserID,o.OrderID
13.嵌套查询
把一次查询的结果(可以是多表,可以是单表)的结果当作一个临时表,并再次查询
select *from
(select u.UserID,u.UserName,u.Email,u.Address,u.Phone,o.OrderDate,o.State,o.OrderID
FROM orders o right join user u on o.userID = u.userid
ORDER BY u.UserID,o.OrderID) c where c.UserName ='Alice';
14.视图操作
将常用的查询结果作为一个临时表(执行查询时才会生成数据;不存在硬盘上)
不建议直接对临时表(视图)做增删改的操作:数据来源于真实的表,内容随之改变;
CREATE VIEW view_order_user AS
(select u.UserID,u.UserName,u.Email,u.Address,u.Phone,o.OrderDate,o.State,o.OrderID
FROM orders o right join user u on o.userID = u.userid
ORDER BY u.UserID,o.OrderID LIMIT 5);
简单增删改查
如下
mysql -u root -p
show databases
use mytest;
show tables;
create table first_table(
id int,
uname varchar(25),
gender char(2)
);
show tables;
insert into first_table(id,uname,gender) values(1,'张三','m');
select * from first_table;
update first_table set uname = '老六' , gender='f' where id = 1;
select *from first_table;
delete from first_table where id =1;
select * from first_table;
drop table first_table;
exit;(退出)
如下图
总结
如下图