SQL的简单语法

创建表

create table 表名( 列名1 数据类型 约束条件, 列名2 数据类型 约束条件, 列名3 数据类型 约束条件 );
约束条件

  1. unique 唯一的约束,该列的值不允许重复
  2. not null 非空的约束,该列不允许为空
  3. primary key 主键约束,包含了非空与唯一约束,每个表里,只有一个主键
  4. check(条件) 检查约束,检查该列的值,是否满足条件
  5. default 值 ,默认值约束,在插入数据时,如果没有给该列指定值,则读取默认值
  6. references 表(列) ,外键约束,需要指向某个表的某一列,但被指向的列,数据类型要与之保持一直,且被指向的列必须为主键
    例如 /*新建班级表 */ CREATE TABLE class01( classId INT(11) primary key, className NVARCHAR(20), studentId INT(11) , Sno NVARCHAR(20), seatNo NVARCHAR(20) )

新增数据
insert into 表名(列1,列2…列N) values(值1,值2…值N);
修改表数据
update 表名 set 列1 = 值1,列2 = 值2…列N = 值Nwhere过滤条件;
删除数据库表的数据
delete from 表名 where过滤条件
删除表
drop table 表名;–>删除表的数据与结构delete from 表名;–>仅删除表的数据,可以回滚rollback;truncate table 表名;–>仅删除表的数据,不可以回滚
查询语句(有很多的语法的,例如左,右链接,全链接,内链接等)
select 列1,列2,列3…列N 或 *from 表名/(表达式) [where 过滤条件] [group by 分组内容] [having 组内条件] [order by 排序方式]

今天先和大家聊聊面试时技术官常会问你的:你说说看左连接与右连接以及全连接的区别,这个问题不管你是面试开发岗、测试岗甚至是产品岗,都会问到

☐ 1:有关左右内全的链接,你们应该会区分吧,能说说它们的区别不?

创建表

班级表 CREATE TABLE class01 ( classId INT PRIMARY KEY AUTO_INCREMENT, className varchar(20) , studentId int(11) , Sno varchar(100) , seatNo varchar(20) ) ;
学生表 CREATE TABLE student01 ( student01 INT PRIMARY KEY AUTO_INCREMENT, stidentName varchar(20) , sex char(2) , course int(6) ) ; 解释一下,因为要给你们讲左右链接之间的区分,所以我就弄个有bug表给你们, 如果你们觉得这两个表之间的关系,比较奇怪。那么你们的觉得奇怪是正确的, 因为表有问题 因为一般是把班级id 放到学生表中做副键, 但是我现在把学生id放到了班级表做副键了

先看一下两张表的数据
班级表:

学生表:

a:)内链接

查询两张表公用的数据
方法①:MySQL的语法
关键字:inner join [英 [ˈɪnə® dʒɔɪn] ]
SELECT * FROM student01 st INNER JOIN class01 cl ON st.student01= cl.studentId
查询的结果

这里查询的结果没有 学生为琉璃,张大帅,苏士超为女生的数据,因为班级表里面并没有他们ID

方法②:Oracle的语法
找到这些表的相同字段,在where后面,把这些字段用等于号连接起来;
SELECT * FROM student01 st, class01 cl WHERE st.student01= cl.studentId

注意:内连接的查询就是找出相同的主键以及主键附带的字段信息

b:)左链接
方法一:MySQL的语法
关键字:left join [left dʒɔɪn ]

SELECT * FROM student01 LEFT JOIN class01 ON student01.student01 = class01.studentId

方法②:Oracle的语法
右(+)连接:(相当于Left Join)
SELECT * FROM student01 st, class01 cl WHERE st.student01 = cl.studentId(+);

c:)右链接
方法一:MySQL的语法
关键字:rift join [rɪft dʒɔɪn ]

SELECT * FROM student01 RIGHT JOIN class01 ON student01.student01 = class01.studentId

方法二:Oracle的语法
左(+)连接:(相当于Right Join)
SELECT * FROM student01 st, class01 cl WHERE st.student01(+) = cl.studentId;

注意:不可以左右都加(+)。

从这里我们应该注意到了Oracle的左右链接的区别了
用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号 ,这个表就是匹配表。如果加号写在右表 ,左表就是全部显示,所以是左连接。
d:)全链接

关键字: union [ˈjuːniən]
注意:使用union进行拼接查询的时候,表中字段要一致的数才可以进行查询哦,要不容易出错哦

两张列数不同表
错误演示 SELECT class01.* FROM class01 UNION ALL SELECT student01.* FROM student01 演示结果==》 [SQL]SELECT class01.* FROM class01 UNION ALL SELECT student01.* FROM student01 [Err] 1222 - The used SELECT statements have a different number of columns (使用的SELECT语句具有不同的列数)

两张列数同表
学生表,一个张店铺表 (解释:因为演示给你们看,所以随便拿个列数一样的)
SELECT store.* FROM store UNION ALL SELECT student01.* FROM student01 演示结果==》

union会自动将完全重复的数据去除掉;union all会保留那些重复的数据;所以,建议大家合理使用,根据自己的需求进行sql查询

union的用法其他很广的,它也不一定是用到全链接,有些子查询都会到它做其他的操作的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值