mysql外键约束语句级连_SQL语句、外键、级联操作

一、SQL:

1)mysql存储结构:

数据库 -> 表 -> 数据 sql语句

2)管理数据库:

增加: create

database 数据库 default

character set utf8;

删除: drop

database 数据库;

修改: alter

database 数据库 default

character gbk;

查询: show

databases / show create

database 数据库;

3) 管理表:

选择数据库:use 数据库;

增加: create

table 表(字段名1 字段类型,字段名2 字段类型......);

删除: drop

table 表;

修改:

添加字段: alter

table 表 add

字段名 字段类型;

删除字段:

alter table 表 drop

字段名;

修改字段类型: alter

table 表 modify 字段名

新的字段类型;

修改字段名称

: alter

table 表 change 旧字段名

新字段名 字段类型;

修改表名称: alter

table 表 rename

to 新表名;

查询:

show

tables / desc

student;

复制表的4种方式:

1)create

table 表2 like 表1;//只复制表中的字段

2)create

table表2as (select * from表1);//复制表中的字段和数据,但字段没描述(如主键...)

3)先复制create

table表2like表1;

后插入数据insert

into表2select

*from表1;

4)CREATE TABLE 库2.表2  LIKE 库1.表1;

//跨数据库拷贝表

4)管理数据:

增加: insert

into 表(字段1,字段2,。。。)

values(值1,值2.。。。。);

删除: delete

from 表 where 条件;

修改: update 表 set 字段1=值1,字段2=值2......

where 条件;

查询:

4.1)所有字段: select

* from 表;

4.2)指定字段: select 字段1,字段2....

from 表;

4.3)指定别名: select 字段1

as 别名 from 表;

4.4

)合并列: select

(字段1+字段2)

from 表;

4.5)去重: select

distinct 字段 from 表;

4.6)条件查询:

a)逻辑条件

:and(与)

or(或)

select

* from 表 where 条件1

and/or 条件2

b)比较条件: > = <= = <>

between and(在。。。之间)

select

* from 表 where

servlet>=90;

c)判空条件:

判断null: is

null  / is not null

判断空字符串: ='' / <>''

d)模糊条件: like

%: 替换任意个字符

_: 替换一个字符

4.7 分页查询:limit 起始行,查询行数

起始行从0开始

select * from developer limit

1,2;

4.8 排序: order

by 字段 asc/desc

asc: 正序,顺序

desc:反序,倒序

4.9 分组查询:group

by 字段

4.10: 分组后筛选: having 条件

SQL语句的分类:

DDL:

数据定义语言

create / drop /

alter

DML:数据操作语句

insert / delete /update /

truncate

DQL:

数据查询语言:

select

/ show

二、外键及级联操作

级联修改: ON UPDATE CASCADE

级联删除: ON DELETE CASCADE

-- 部门表(主表)

CREATE TABLE

dept(

id INT

PRIMARY KEY,

deptName

VARCHAR(20)

)

-- 修改员工表(副表/从表)

CREATE TABLE

employee(

id INT

PRIMARY KEY,

empName

VARCHAR(20),

deptId

INT,-- 把部门名称改为部门ID

-- 声明一个外键约束

CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId)

REFERENCES dept(id) ON

UPDATE CASCADE ON DELETE CASCADE-- ON CASCADE

UPDATE :级联修改

)

//修改某个字段为外键约束

alter

table developer add constraint developer foreign key(groupId)

references company(groupId) on update cascade on delete

cascade;

注意:

级联操作必须在外键基础上使用

三、关联查询(多表查询)

-- 需求:查询员工及其所在部门(显示员工姓名,部门名称)

-- 2.1交叉连接查询(不推荐。产生笛卡尔乘积现象:4 * 4=16,有些是重复记录)

SELECT empName,deptName FROM employee,dept;

-- 2.2内连接查询:只有满足条件的结果才会显示(使用最频繁)

SELECT

empName,deptName --

2)确定哪些哪些字段

FROM

employee,dept --

1)确定查询哪些表

WHERE

employee.deptId=dept.id; --

3)表与表之间连接条件

- 2.3 左[外]连接查询:使用左边表的数据去匹配右边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示null

-- (注意:左外连接:左表的数据一定会完成显示!)

SELECT d.deptName,e.empName

FROM

dept d

LEFT

OUTER JOIN employee e

ON

d.id=e.deptId;

-- 2.4 右[外]连接查询: 使用右边表的数据去匹配左边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示null

-- (注意:右外连接:右表的数据一定会完成显示!)

SELECT d.deptName,e.empName

FROM

employee e

RIGHT

OUTER JOIN dept d

ON

d.id=e.deptId;

外级连接和直接配对的区别

外级连接

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

直接配对:

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

添加外键:

constraint 'fk_product_procate' foreign key('product_category_id)

references 'tb_product_category'(product_category_id)

三增加点 表连接

语法:

FROM (表1

INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

四、字段描述

primary

key not null: 主键

default默认值

非空:not

null

唯一:unique

//约束唯一标识数据库表中的每条记录

和主键一样均为列或列集合提供了唯一性的保证。

主键:primary

key(非空+唯一)

自增长:auto_increment

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值