视图
视图不是物理表,是一个虚拟表。
创建视图
关联单个表格:
--vu_user 视图名字;
--user 原始表
create view vu_user as
select * from user
where 条件
关联多个表格:
--视图关联多个表格
create view 视图表名
select
t1.name as t1name,
t2.stuid as t2stuid,
t1.class as t1class,
t1.age as t1age,
t2.name as t2name
from
t1,t2
where
条件
--例如:t1.name=t2.name
删除视图
--存在视图,删除
drop view 视图名字
--视图不存在时,删除视图
drop view if exists 视图名字
创建表
create table 表名 (字段);
insert into 表名 (字段) values;(完整插入,可省略(字段),插入个别字段,就不能省略)
-- 创建表
create table student3(
id int,
name varchar(20),
age int,
sex varchar(5),
address varchar(100),
math int,
english int
);
-- 添加数据
insert into students3(id,name,age,sex,address,math,english)
VALUES
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);
数据查询
简单查询
查询所有的:
select * from 表名;(select * from student3)
查询指定列:
select 字段名1,字段名2,.... from 表名;(select id,name,math from student3)
指定列别名查询:
select 字段名1 as 重命名1,字段名2 as 重命名2,.... from 表名;
-- 重命名
select name as 姓名,age as 年龄,sex as 性别 from student3;
指定列和表同时别名查询:(多用于多表查询)
select 字段名1 as 重命名1,字段名2 as 重命名2,.... from 表名 as 表别名;
清除重复项:
select distinct 字段名 from 表名;
条件查询
语句:select 字段名 from 表名 where 条件;
运算符:
比较运算符 | 说明 |
>、=、=、<> | <>在 SQL 中表示不等于,在 mysql 中也可以使用!= 没有== |
BETWEEN...AND | 在一个范围之内,如:between 100 and 200 相当于条件在 100 到 200 之间,包头又包尾 |
IN(集合) | 集合表示多个值,使用逗号分 |
LIKE '张%' | 模糊查询 |
IS NULL | 查询某一列为 NULL 的值,注:不能写=NULL |
具体操作:
-- 查询 math 分数大于 80 分的学生
select * from student3 where math>80;
-- 查询 english 分数小于或等于 80 分的学生
select * from student3 where english <=80;
-- 查询 age 等于 20 岁的学生
select * from student3 where age = 20;
-- 查询 age 不等于 20 岁的学生,注:不等于有两种写法
select * from student3 where age <> 20;
select * from student3 where age != 20;
逻辑运算符:
逻辑运算符 | 说明 |
and 或 && | 与,在SQL中建议使用前者,后者并不相通 |
or 或 || | 或 |
not 或 ! | 非 |
in 关键字(in里面的数据会作为条件一次,只有满足条件的才会显示)
select 字段名 from 表名 where 字段 in (数据1,数据2,...)
-- --in 关键字
select * from student3 where id in (1,3,5);
select * from student3 where address in('香港','湖南');
like关键字:
-- like 模糊查询
--查询姓马的人
select * from student3 where name like '马%';
select * from student3 where name like '马';
-- 包含某个字
select * from student3 where name like '%德%';
-- 查询姓马,且姓名有两个字的,3个字,就是马__
select * from student3 where name like '马_';
查询结果参与运算:(参与运算的必须是数值类型)
某列数据和固定值运算:
select 列名1+固定值 from 表名;
某列数据和其他列数据参与运算:
select 列名1+列名2 from 表名;
-- math成绩总体加5
select name,math+5 from student3;
-- 查询总成绩
-- as 可以省略
select *,(math+english) as 总成绩 from student3;
select *,(math+english) 总成绩 from student3;
主键,外键,约束
主键:唯一的标识一个事物
外键:事物与事物之间的联系(来自于哪里)