Mysql 数据类型 主外键约束

DDL数据库定义语言

数据库定义语言 对数据库 表结构的增删改操作

关键字

create drop alter

给表增加字段

alter table student add column address char(10)

column 可不写

删除表中字段

alter table student drop address 

复制表结构,不会复制数据

create table stu_copy like student

复制表结构和数据

create table sut_copy01 as (select * from student)
create table sut_copy02 as (select sname,sage from student)

查询数据

select * from student
select sname,sage from student

数据类型

整数数据类型

tinyint :1B    
int :4B

浮点数据类型

float :4B		单精度浮点数
double :8B		双精度浮点数

字符串类型

char(字符长度)		定长字符串,参数设置的是内容最大长度

不管内容是否达到最大值,都占用设置的长度空间

varchar(字符长度)		变长字符串,参数设置的是内容最大长度

实际占用空间根据内容的长度确定
日期时间数据类型

date :3B			YYYY-MM-DD    年-月-日
time :3B			HH:MM:SS	时-分-秒
timestamp :4B		YYYY-MM-DD HH:MM:SS    年-月-日  时-分-秒

约束

保证数据的完整性 = 准确性 + 可靠性
要保证数据可靠需要对表中的数据实施约束条件

完整性
实体完整性 / 行完整性 :一般指每一个实体可以唯一区分
域完整性 / 列完整性
引用完整性
自定义完整性

如何实施约束条件
1.主键约束 唯一标识每一行,主键列不能重复,主键默认不能为空
表中可以没有主键,但建议创建
选择主键列
最少性 :尽量使用一个列
稳定性 :数据是稳定不变的
一个表中只能有一个主键,但这个主键可以是多个字段
(联合主键,不建议使用)

create table stu(
 	sid int primary key,
 	primary key(sid),
	primary key(sid,sname)
)

删除主键

alter table stu drop primary key  (主键是唯一的)

使用修改表的方式 添加主键

alter table stu add primary key(sid)
alter table stu change sid uid int primary key
alter table stu modify sid int primary key

2.外键约束
表达 表与表 之间的关系,外键字段中的值必须来自于主表的参考字段
主表中的数据如果在从表中有引用,则不能直接删除
如果需要删除: 去掉外键 或者 删除从表中引用的数据

create table stu(
	sid int,
	sname char(10),
	sage int,
	c_id int,
	foreign key(c_id) references class(cid)
)

删除外键

alter table stu drop foreign key stu_ibfk_1   
(stu_ibfk_1为外键名)

添加外键

alter table stu add foreign key (c_id) references class(cid)

添加外键名字

alter table stu add constraint fk_stu_class foreign key (c_id) references class(cid)

3.自增长约束

sid int primary key auto_increment

标识列不会重新编号

4.默认值约束

ssex char(2) default "男"

5.唯一约束

sage int unique

6.非空约束

c_id int not null

7.set约束

c_id set("w","k","x")

DML 对表中数据的增删改

1.向表中插入数据

insert into student(sid,sname,sage,ssex)values(1,"王",21,"男")

向所有字段插入数据

insert into student values(6,"民",19,"女")

2.修改数据
注意 : 如果后面没有跟过滤条件,则修改表中所有的值

update student set sage = 29
update student set sage = 29 where sname = "王"

3.删除数据
delete:后面如果不加条件会删除所有数据,保留表结构
标识列不会重新编号,
删除操作会记录事务日志,可以进行事务回滚
特点:比较慢

delete from student

truncate:删除表中所有数据,保留表结构,
标识列会重新编号,
删除操作不记录事务日志,不能进行事务回滚
特点:比较快

delete from student where sname = "王"

DQL 数据库查询语句

简单查询

1.查询所有内容

select * from student
select sid,sname,ssex from student

2.别名 两种方式:空格和as

select sid,sname as "名字" from student
select stu.sid,stu.sname from student as stu

3.条件查询 > >= < <= != <>(不等于)
查询 年龄大于40的学生

select * from student where sage > 40

查询 年龄不等于50的学生

select * from student where sage != 50

4.条件连接符 && || ! and or not
查询年龄大于18小于30

select * from student where sage > 18 && sage < 30
select * from student where sage > 18 and sage < 30
select * from student where sage between 18 and 30

5.去重
查询所有的年龄并且去重

select distinct sage from student

6.模糊查询
_:表示有且仅有一个字符 一个_代表一个字符
%:表示有任意个字符
查询姓东方的学生

select * from student where sname like "东方%"
select * from student where sname like "东方__"
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值