数据库扩展语句和约束方式以及用户管理

数据库扩展语句和约束方式以及用户管理

create TABLE if not exists ky32 (

id int(4) zerofill primary key auto_increment,

name varchar(10) not null,

cradid int(18) not null unique key,

hobby varchar (50)

);

auto_increment:表示该字段可以自增长,默认从1开始,每条记录会自动递增1

if not exists ky32:ky32这个表不存在,才会创建

zerofill:自动填充位置1  0001

primary key:当前表的主键,主键只有一个,而且唯一,而且不能为空

unique key:唯一性约束。跟主键不同,可以为空的

create table test like ky32:复制,通过like这个语句直接复制ky32的表结构。只是复制表结构,不能复制表里面的数据

insert into test select * from ky32:把ky32表里面的数据复制到test,两个表数据结构要一致

create table test1 (select * from ky32):创建一张表,test1,数据从ky32来,表结构也是ky32

drop table ky32:整个删除表

delete from ky32:清空表内容。delete删除是一行一行删除,如果表中有自增长列,清空所有记录之后,再次添加内容,会从原来的记录之后继续自增写入

truncate table ky32:清空表里的内容,而且会把表结构重新建立。速度上比delete快(在工作中一般用truncate)

modify column是一种用于修改表中列定义的操作。它可以用来更改列的数据类型、长度、默认值等属性。通过使用modify column,可以在不删除表或数据的情况下更改表的结构。

创建临时表:临时表一般用于调试,而且临时表创建之后在表目录当中是不显示的,连接退出之后,临时表会被销毁,而且临时表无法创建外键

mysql的约束方式:

6种常用的约束:

1、主键约束,用于唯一标识表中的每一行,主键列的值必须是唯一而且不能为空,一个表只能有一个主键

2、外键约束,用于建立表与表之间的关系,一般是和另一张的表的主键关联,保证数据引用的完整性。一个表可以有多个外键

3、非空约束,not null必须要有一个值

4、唯一性约束:unique,确保列中的所有值都是唯一的,类似于主键,但是可以为空,而且一个表可以有多个唯一约束

5、默认值约束:default,在插入表数据时,如果没有定义值,会提供一个默认值

6、自增约束:每行自动生成一个唯一标识,通常和主键在一起使用

主表和从表:

插入数据:先插入主表,再插入从表

删除数据:先删除主表,再删除从表

实验:

定义一个需求:

两张表

主表company

从表depart

company:

1、work_id 非空,主键int(4)不满四位要补齐

2、name 非空 char(5)

3、sex 非空 char(2)

depart

1、de_id非空 主键int(6),不满六位要补齐

2、work_id要和主表的work_id关联为外键

3、addrss 为空,但是有一个默认值

4、phone 不能为空而且不能相同

create table company (

work_id int(4) ZEROFILL primary key,

name varchar(5) not null,

sex varchar(2) not null

);

create table depart (

de_id int(6) ZEROFILL primary key,

work_id int(4) ZEROFILL not null,

FOREIGN key (work_id) REFERENCES company (work_id),

address varchar(50) default '地址不详',

phone varchar(255) not null unique

);

ZEROFILL:自动补齐

primary key:主键

auto_increment PRIMARY KEY:自增长

alter table depart add FOREIGH key (work_id) REFERENCES company (work_id):把主表和从表的work_id外键绑定

alter table depart drop PRIMARY key:在外面删除

FOREIGN key (work_id) REFERENCES company (work_id):把主表和从表的work_id外键绑定

实验:

1、两张表:school

de_id int(4) 不满四位要补齐,而且自增长 主键

name varchar(15) not null

email varchar(45)可以为空,而且有默认值[email protected]

2、cloud ky32

id自增长 主键int

class-name 不能为空

de_id 主表关联

adress 可以为空,默认是‘地址不详’

phone int 不能为空,而且不能重复

3、要求删除外键关联,删除从表的主键,重新定义主键为phone

create table school (

de_id int(4) ZEROFILL auto_increment PRIMARY KEY,

name varchar(10) not NULL,

email varchar(25) DEFAULT [email protected]

);

create table cloudky32 (

id int(4) zerofill auto_increment primary key,

class_name varchar(50) not null,

de_id int(4) zerofill,

address varchar(255) default 地址不详,

phone int(11) not null unique,

FOREIGN key(de_id) REFERENCES school(de_id)

);

更改表名:alter table 原表名 rename 新表名;

实验:

1、两张表:school de_id int(4) 不满四位要补齐,而且自增长 主键 name VARCHAR(15) not NULL email varchar(45) 不可以为空,而且不能重复

money int 不可为空,不能重复

2、cloud_ky32 id 自增长 主键 int class_name 不能为空。 de_id 外键,外键和主表的主键关联。 adress 可以为空,默认是'地址不详' phone int 不能为空,而且不能重复。

3、分别在两张表中插入10条数据

4、 在第二张表中增加一列,hobby。

5、修改主表的name类型为char(15)

6、更改cloud_ky32的表名,为ky2

7、修改 hobby的列明,改为hob

8、通过命令行,把主表的第一行的money的初始值1000,变成900.

1、create table school (

de_id int(4) ZEROFILL auto_increment PRIMARY KEY,

name VARCHAR(15) not NULL,

email varchar(45) not null unique

ALTER TABLE school ADD money int(4) not null;

);

2、create table cloud_ky32 (

id int(4) ZEROFILL auto_increment primary key,

class_name varchar(50) not null,

de_id int(4) zerofill,

address varchar(255) default'地址不详',

phone int(11) not null unique,

foreign key(de_id) REFERENCES school(de_id)

);

  1. insert into school (de_id,name,email,money)

values

(1,aa,aa,10),

(2,bb,bb,20),

(3,cc,cc,30),

(4,dd,dd,40),

(5,ee,ee,50),

(6,ff,ff,60),

(7,gg,gg,70),

(8,hh,hh,80),

(9,ii,ii,90),

(10,jj,jj,100);

inster into cloud_ky32 (id,class_name,de_id,adress,phone)

values

(1,aa,1,aa,10),

(2,bb,2,bb,20),

(3,cc,3,cc,30),

(4,dd,4,dd,40),

(5,ee,5,ee,50),

(6,ff,6,ff,60),

(7,gg,7,gg,70),

(8,hh,8,hh,80),

(9,ii,9,ii,90),

(10,jj,10,jj,100);

4、alter tables cloud_ky32 add hobby varchar(50) not null;

5、ALTER table school MODIFY COLUMN name char(15);

6、ALTER table cloud_ky32 RENAME ky2;

7、ALTER table ky2 CHANGE hobby hob varchar(50);

8、UPDATE school set money=('900') where de_id = 1;

你可能感兴趣的:(数据库)