相关文章推荐
豪气的青蛙  ·  python ...·  1 年前    · 
潇洒的伤疤  ·  vue输入框禁止输入-掘金·  1 年前    · 
暴躁的钢笔  ·  pycharm提示Shadows name ...·  1 年前    · 

含义 :一种限制,用于限制表中的数据,为了保证表中数据的准确和可靠性。

分类
六大约束:

  1. not null 非空 :用于保障该字段的值不能为空, 比如姓名、学号等
  2. Default 默认: 用于保证该字段有默认值,比如性别、
  3. PRIMARY KEY 主键: 用于保证该字段的值有唯一性,并且 非空 。是能够唯一的标识一组数据的数据元素;比如说:学号,姓名,年龄,性别,课程号课程中学号是唯一的
  4. UNIQUE 唯一约束: 用于保障该字段的值有唯一性, 可以为空 , 比如座位号
  5. Check 检查约束:mysql中不支持,但不报错
  6. Foreign KEY 外键:用于限制两个标的关系 用于保证该字段的值必须来自于主表关联的值。 一组数据的主键是另一组数据的的元素;主键约束了外键所在表中不能存在主键类之外的值;外键用于与另一张表的关联。比如:学生表的专业编号、员工表的部门编号。

添加约束表的实际: 1)创建表时;2)修改表时

约束添加分类

  • 列级约束: 六大约束语法上都支持,但外建没有效果
  • 表级约束:除了非空和默认,其他的都支持
create table 表名(
			字段名1 字段类型 列级约束,
			字段名2 字段类型,
			字段名3 字段类型

外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
SQL的主键和外键就是起约束作用。

#创建约束
create database stu;
use stu;
create table major(
id int Primary Key,
majorName VarChar(20));
create table stuinfo(
	id int primary key, #主键
	stuName VarChar(20) NOT NULL, #非空
	gender CHAR(1) check(gender='男'or gender='女'), #检查,mysql不支持
	seat int Unique, #唯一
	Age int default 18, #默认
	major int references major(id) #外键,mysql不支持
#添加表级约束
drop table if exists stuinfo;
create table stuinfo(
	id int, 
	stuName VarChar(20),
	gender CHAR(1), 
	seat int,
	Age int, 
	majorid int,
	constraint pk primary key(id),
	constraint uq unique(seat),
	constraint ck check(gender='男' or gender='女'),
	constraint fk_stuinfo_major foreign key(majorid) REFERENCES major(id)
#查看约束情况
DESC stuinfo;
show index from stuinfo;
通用写法:
create table if not exists stuinfo(
	id int primary key, #主键
	stuName VarChar(20) NOT NULL, #非空
	gender CHAR(1), #检查,mysql不支持
	seat int Unique, #唯一
	Age int default 18, #默认
	majorid int,
	constraint fk_stuinfo_major foreign key(majorid) REFERENCES major(id)

fk_stuinfo_major 列名_当前表名_引用表名

主键和唯一的对比

保证唯一性是否为空一个表有多少个允许组合?
主键可以X最多一个允许,但不推荐
唯一可以可以可以有多个允许,但不推荐
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE IF NOT EXISTS stuinfo ( 
id INT, 
stuName VARCHAR ( 20 ), 
gender CHAR ( 1 ), 
seat INT, 
Age INT, 
majorid INT, 
PRIMARY KEY(id,stuName), 
UNIQUE(seat),
check(gender='男'or gender='女'),
FOREIGN KEY ( majorid ) REFERENCES major ( id ) 

结果显示 id 和stuName 都是主键,两个字段一摸一样时不能插入数据。保证两个字段的组合是唯一的。
在这里插入图片描述

https://www.bilibili.com/video/BV12b411K7Zu?p=128

常见约束含义:一种限制,用于限制表中的数据,为了保证表中数据的准确和可靠性。分类- 六大约束:not null 非空, 用于保障该字段的值不能为空, 比如姓名、学号等Default: 默认,用于保证该字段有默认值,比如性别、PRIMARY KEY 主键: 用于保证该字段的值有唯一性,并且***非空***。是能够唯一的标识一组数据的数据元素;比如说:学号,姓名,年龄,性别,课程号课程中学号是唯一的UNIQUE: 唯一约束: 用于保障该字段的值有唯一性,可以为空, 比如座位号Check 检查约束 FOREIGN KEY 外键,用于限制两表的关系,用于保证该字段的值必须来自主表的关联列的值;在从表添加外键约束,用于引用主表中某列的值;主表的关联列必须是一个key(一般是主键唯一);插入数据,先插从表,再主表,删除时先删从表,再删主表 主键唯一的对比: 主键唯一非空唯一是允许为;个表只能有一个主键,但可以有很多个唯一键;主键唯一键都允许组合,但是不推荐 添加约束 时机:创建或修改表时 列级约束:直接在字段名和类型后加,只支持默认非空主键唯一 约束保证数据的完整性和一致性 约束分为表级约束和列级约束 约束类型包括:NOT NULL (非空约束),PRIMARY KEY(主键约束),UNIQUE KEY(唯一约束),DEFAULT(默认约束),FOREIGN(外键约束) 1.主键约束 PRIMARY KEY 每张数据表只能存在一个主键 主键保证记录的唯一性,主键的值不重复 主键自动为 NOT NULL 举例,创建一张student表,将学号设置为主键创建完表之后,通过SHWO COLUMNS FROM student查看表结构 CREATE TABLE student( id int PRIM
写在前面: 关于Mysql的学习笔记,我是观看了https://www.bilibili.com/video/BV1Vt411z7wy?p=27 的视频,以及参考了这位大佬的学习笔记; Mysql速成 文章目录Mysql速成使用终端操作数据库Mysql基本操作Mysql常用数据类型数值类型日期和时间类型字符串类型Mysql建表的约束主键约束复合主键自增约束唯一约束非空约束:默认约束外键约束如何建表之后添加主键约束Mysql的三大设计范式第一范式第二范式第三范式 使用终端操作数据库 Mysql基本操作 使用登录Mysql服务器 在命令行输入 mysql -u root -p Enter pas
select * from table where id != null; select * from table where id <> null; select * from table where not id = ''; 容易查不出来 使用is not null select * from table where id is not null 约束(Constraint)是为了保证表中数据的完整性,合法性以及有效性。例如注册账户的时候有各式各样的格式,规定和要求。 非空约束(not null):指这个数据必须填写,不能为null 唯一约束(unique):这个字段的是不能重复的 主键约束(primary key):既不能为null也不能重复 外键约束(foreign key): 检查约束(check)(mysql不支持,但是Oracle有): 一般usename(唯一约束)  password(非空约束非空约束 not null --建库之前先建路径的代码 exec xp_cmdshell'mkdir d:\mydata', --也可以用exec xp_cmdshell'md d:\mydata' no_output exec xp_cmdshell'rd d:\mydata' --删除目录 --查看先前建的文件夹是否成功创建 exec xp_cmdshell'dir d:\' ---------------------------------------------------------------------------------------------------------------- /*切换数据库*/ use master /*开启master表来判断要新建的数据库是否已经存在*/ if exists (select * from sysdatabases where name='stuDB') /*存在就先删除*/ drop database stuDB /*创建数据库*/ create database stuDB /*创建主数据库文件*/ on primary name='stuDB_data_1', --数据库逻辑名 filename='d:\mydata\stuDB_data_1.mdf', --数据库路径及名称 size=10mb, --数据库初始大小 maxsize=100mb, --数据库最大大小 filegrowth=15% --数据库增长 /*创建次要数据库文件*/ name='stuDB_data_2', --数据库逻辑名 filename='d:\mydata\stuDB_data_2.ndf', --数据库路径及名称 size=10mb, --数据库初始大小 maxsize=100mb, --数据库最大大小 filegrowth=15% --数据库增长 /*创建日志文件*/ log on name='stuDB_log_1', --数据库逻辑名 filename='d:\mydata\stuDB_log_1.LDF', --数据库路径及名称 size=10mb, --数据库初始大小 maxsize=100mb, --数据库最大大小 filegrowth=15% --数据库增长 /*创建日次要志文件*/ name='stuDB_log_2', --数据库逻辑名 filename='d:\mydata\stuDB_log_2.ldf', --数据库路径及名称 size=10mb, --数据库初始大小 maxsize=100mb, --数据库最大大小 filegrowth=15% --数据库增长 /*如果有多个,请用,()来创建*/ /*批处理的结束 go*/ ---------------------------------------------------------------------------------------------------------------- /*开始建表*/ /*-创建学员信息表-*/ use stuDB --将当前数据库设置为stuDB --判断要创建的表是否存在,如果存在就删除 if exists(select * from sysobjects where name='stuInfo') drop table stuInfo create table stuInfo stuName varchar(20) not null, --姓名,非空(必填) stuNo char(6) not null, --学号,非空(必填) stuAge int not null, --年龄,INT类型默认为4个字节 stuID numeric(18,0), --身份证号 代表18位数字,小数位数为0 stuSeat smallint identity(1,1), --座位号,自动编号 起始量为1,自增长1 stuAddress text --住址,允许为,即可选输入 /*学生成绩表*/ if exists(select * from sysobjects where name='stuMarks') drop table stuMarks create table stuMarks examNo char(7) not null, --考号 stuNo char(6) not null, --学号 writtenExam int not null, --笔试成绩 LabExam int not null --机试成绩 --查看表的字段 select * from stuMarks select * from stuInfo ---------------------------------------------------------------------------------------------------------------- /*建约束的格式*/ 主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为 唯一约束(Unique Constraint):要求该列唯一,允许为,但只能出现一个值。 检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束 默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男” 外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的哪列 /*添加约束的语法*/ alter table 表名 add constraint 约束约束类型 具体的约束说明 /*删除约束的语法*/ alter table 表名 drop constraint 约束名 ---------------------------------------------------------------------------------------------------------------- /*为stuInfo表添加约束*/ alter table stuInfo add constraint PK_stuNo primary key(stuNo) --添加主键约束 alter table stuInfo add constraint UQ_stuId unique(stuId) --添加唯一约束 alter table stuInfo add constraint DF_stuAddress default('地址不详') for stuAddress --添加默认约束 alter table stuInfo add constraint CK_stuAge check(stuAge between 10 and 40) --检查约束 /*为stuMarks表添加约束*/ alter table stuMarks add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo) --添加主外键约束主键为stuMarks表的stuNo键,外键为stuInfo表的stuNo键) alter table stuMarks add constraint CK_writtenExam check(writtenExam between 0 and 100) --检查约束,成绩只能是0到100之间的数 alter table stuMarks add constraint CK_LabExam check(LabExam between 0 and 100) --检查约束,成绩只能是0到100之间的数 ---------------------------------------------------------------------------------------------------------------- /*--为zhangsanDBUser分配对表stuInfo的select, insert, update权限--*/ GRANT select, insert, update ON stuInfo TO zhangsanDBUser -------------------------------------------------------------------------------------------------------------------- /*第一关:创建SQL登陆账户*/ use master --切换到数据库 exec sp_addlogin 'admin','888888' --创建SQL登陆账户 /*第二关:创建数据库用户*/ --首先切换到要分配权限的数据库 use stuDB --exec sp_grantdbaccess '登陆账户','数据库账户' exec sp_grantdbaccess 'admin','stuDB' --grant授权 访问数据库 /*第三关:为数据库用户分配权限*/ --grant 权限 on 表名 to 数据库用户 grant select on stuInfo to stuDB --为数据库用户名赋予查询权限 --收回查找权限 revoke 权限 on 表名 from public --为用户删除权限 revoke select on stuInfo from stuDB exec sp_revokedbaccess 'stuDB' --删除数据库用户stuDB对数据库的访问权限 exec sp_droplogin 'admin' – insert into user1 (id)values(1001); – insert into user1 (id,name,address)values(1001,Null,Null); insert into user1 values(1.
创建带有约束条件的表需要指定表名以及表中的字段、约束条件等信息。 例如,创建一个名为“students”的表,包含学生的姓名、学号、班级等字段,并设置学号为主键、班级为外键,可以使用以下SQL语句: CREATE TABLE students ( name varchar(50) NOT NULL, student_id int NOT NULL PRIMARY KEY, class_id int, FOREIGN KEY (class_id) REFERENCES classes(class_id) 其中,`NOT NULL`表示该字段不允许为;`PRIMARY KEY`表示该字段为主键;`FOREIGN KEY`表示该字段为外键,后面的`REFERENCES`关键字表示引用了另一张表的主键。 通过这样的方式,我们就可以创建带有约束条件的表了。
JSONError(‘Notebook does not appear to be JSON: \‘{\\n “cells“: [\\n {\\n “cell_type“: “m...‘) Power BI 如何高效管理度量值和字段 Power BI 如何生成动态指标散点图