Mysql基础知识点汇总

2019-01-04 20:53:14王旭

use School
if exists(select * from sysobjects where name='PK_Classes_Classid')
 alter table classes  drop constraint PK_Classes_Classid
alter table classes
add constraint PK_Classes_Classid primary key(classid)
--为id添加主键
alter table teacher
add constraint PK_teacher_id primary key(id)
--为name添加唯一键
alter table teacher
add constraint UQ_Teacher_Name unique(Name)
--同时创建salary的默认约束和age的check约束
alter table teacher
add constraint DF_Teacher_Salary default(5000) for salary,
constraint CK_Teacher_Age check(age>0 and age<=100)
--为teacher表的classid字段创建主外键
if exists(select * from sysobjects where name='FK_Teacher_Classes_Classid')
 alter table teacher  drop constraint FK_Teacher_Classes_Classid
alter table teacher
with nocheck --不检查现有数据
add constraint FK_Teacher_Classes_Classid foreign key(classid) references classes(classid)
--on delete set default  级联操作
--不执行任何操作:该报错就报错,该删除就删除  --no action --默认选择
--级联:删除主表记录,从表引用该值的记录也被删除 --cascade
--设置null:删除主表记录,从表对应的字段值设置为null,前提是可以为null   --set null
--设置为default:删除主表记录,从表对应的字段值设置为default,前提是可以为default  --set default

5.四中基本字符类型说明

--len(参数) --获取指定参数内容的字符个数
select LEN('abcd') 【4】运行结果
select LEN('中华人民共和国') 【7】

--DataLength(参数):获取指定内占据的字节数--空间大小
select DataLength('abcd') 【4】
select DataLength('中华人民共和国') 【14】

--char类型:当空间分配后,不会因为存储的内容比分配的空间小就回收分配的空间。但是如果存储的内容超出了指定的空间大小,就会报错,当你存储的内容的长度变化区间不大的时候可以考虑使用char
select LEN(char) from CharTest 【2】
select DataLength(char) from CharTest 【10】

--varchar  var--变化的:当你存储的内容小于分配的空间的时候,多余的空间会自动收缩。但是如果存储的内容超出了指定的空间大小,就会报错 当存储的内容波动区间比较大时候使用varchar
select LEN(varchar) from CharTest 【2】
select DataLength(varchar) from CharTest 【2】

--nchar--  n代表它是一个unicode字符。规定不管什么样的字符都占据两个字节。  char:空间是固定的
select LEN(nchar) from CharTest 【10】
select DataLength(nchar) from CharTest 【20】

--nvarchar  n  var  char
select LEN(nvarchar) from CharTest 【2】
select DataLength(nvarchar) from CharTest 【4】