第五阶段 -- 数据库:day19_07/01/19【创建数据库 & 表的基本操作 & 约束】

文章目录

    • 1. 创建数据库
    • 2. 表的基本操作
    • 3. 约束

1. 创建数据库

一. 创建数据库

  1. 使用sql语句创建
    语法:create database 数据库名;
    例如:创建一个名为test1的数据库
    create database test1;
  2. 使用图形化界面创建
    选择连接–右键选择"New Database" 输入数据库名 ,点击ok即可

二. 查看数据库

  1. 使用sql语句查看
    语法:show databases;

  2. 查看已有数据库的创建信息
    语法:show create database 数据库名;

  3. 使用图形化界面查看创建信息
    选择要查看的库名右键-“Edit Database”

三. 修改数据库

  1. sql语句修改
    语法:alter database 数据库名 character set 新编码;
    例如:修改test1库的编码为gbk
  2. 图形化界面修改
    选中库名 右键 选中“Edit Database”

四. 删除数据库

注意:数据库一旦删除则数据库中的表和数据都会被一同删除

  1. 使用SQL语句删除
    语法:drop database 库名;
    例如:删除test1库

  2. 使用图形化界面删除

    选中要删除的库名–右键–选中“Delete Database”

2. 表的基本操作

表基本操作
一. 基本概念

  1. 数据库和表的关系
    每个数据库包含N张表,及表示在库中

  2. 表(二维表)
    行和列组成:可以将复杂的数据保存在简单的表中
    表中的每一行就是一条完整的记录
    表中的列用于保存每条记录中特点的信息

二. 创建表

  1. 使用sql语句创建:
    语法:create table 表名(
    ​ 字段名1 字段类型1 [完整性约束],
    ​ 字段名2 字段类型2 [完整性约束],
    ​ …
    ​ 字段名n 字段类型n [完整性约束]
    ​ )

    注意:1. 表名不能使用关键字 例如 database select where
    2. 每组字段名 字段类型之间使用“,”隔开,但最后一个不需要“,”

  • 例如创建一个学生信息表student(id,name,gender,age)
create table student(
	id int(6),
    name varchar(20),
    gender varchar(1),
    age int(2)
)
  1. 使用图形化界面
    点击选择的库名双击 选择“Table” 右键–“New Table”

三. 查看表

  1. 查看表的基本结构:
    语法:desc 表名
  • 例如:查看student表的结构
desc student
  1. 查看表的详细结构(还可以查看存储引擎和字符集):
    语法: show create table 表名;
  • 例如:查看student表的详细结构
-- 查看student表的详细结构 
show create table student

四. 修改表结构

  1. 修改表名:
    语法:alter table 旧表名 rename 新表名
  • 例如:将student表名修改为t_student;
-- 将student表名修改为t_student;
alter table student rename t_student
  1. 修改字段数据类型:
    语法:alter table 表名 modify 列名 新字段类型
  • 例如:将t_student表中id的数据类型 修改为int(10)
deec t_student
alter table t_student modify id int(10)
  1. 修改多个字段的数据类型:
    语法alter table 表名 modify 列名1 新字段类型1,
    ​ modify 列名2 新字段类型2,
    ​ …
    ​ modify 列名n 新字段类型n;
  • 例如:修改t_student 表中id int(8) name varchar(30)
alter table t_student modify id int(8),
						modify name varchar(30)
  1. 修改字段名:

    语法:alter table 表名 change 旧字段名 新字段名 旧字段类型

  • 例如:t_student 表中gender 修改为sex
alter table t_student change gender sex varchar(1)
  1. 修改字段名并修改字段类型:
    语法:alter table 表名 change 旧字段名 新字段名 新字段类型
  • 例如:t_student 表中gender 修改为sex 数据类型 varchar(2)
-- 先將t_student中的sex字段名修改為gender
alter table t_student change sex gender varchar(1)
-- t_student 表中gender修改為sex,數據類型varchar(2)
alter table t_student change gender sex varchar(2)
  1. 添加字段

    语法:alter table 表名 add 字段名 字段类型 完整性約束

  • 例1:在t_student 表末尾添加score字段
alter table t_stydent add score float
  • 例2:在t_student 表第一个位置添加phone字段
alter table t_student add phone varchar(11) first;
  • 例3:在t_student 表中age的后面添加clazz字段
alter table t_student add class varchar(20) after age;
  1. 删除字段
    语法:alter table 表名 drop 列名
  • 例:删除表t_student 中phone
alter table t_student drop phone;

五. 删除表

  1. 使用sql语句删除
    ​ drop table 表名;
    例如:create table test1(
    ​ id int(8)
    ​ )
    ​ drop table test1;
-- 創建一個新錶
create table test1(
	id int(8)
)
-- 刪除test1表
drop table test1;
  1. 使用图形化界面删除

3. 约束

一.完整性约束

  1. MySQL支持的完整性约束
    约束条件 描述
    primary key 主键约束
    unique 唯一约束
    not null 非空约束
    default 默认约束
    auto_increment 自动增长约束
    foreign key 外键约束

  2. 主键约束(PK):

  • 特点:唯一且为空

  • 主键可以由一个字段组成 也可以由多个字段组成

  • 如果主键可以由一个字段组成既可以添加到列级也可以添加到表级

  • 如果由多个字段组成只能添加到表级

(1). 在字段的列级添加约束
​ create table 表名(
​ 字段名 字段类型 primary key
​ )

  • 例如:创建student1表(id name age sex)其中id为主键
create table student1 (
	id int(8) primary key,
    name varchar(20),
    age int(2),
    sex vachar(1)
)

(2). 表级上添加主键约束
​ create table 表名(
​ 字段名1 字段类型1,
​ 字段名2 字段类型2,
​ …
​ 字段名n 字段类型n,
​ [constraint 主键约束名] primary key(字段名)

​ )

  • 例如:创建student2表(id name age sex)其中id为主键,在表级添加主键约束
create table student2(
	id int(8),
    name varchar(20),
    age int(2),
    sex varchar(1),
    constraint pk_student2 primary key(id)
)

(3). 多个字段作为组件,只能添加到表级
​ create table 表名(
​ 字段名1 字段类型1,
​ 字段名2 字段类型2,
​ …
​ 字段名n 字段类型n,
​ [constraint 主键约束名] primary key(字段名1,字段名2)

​ )

  • 例如:创建student3表(school id name age sex),其中school和id为主键在表级添加主键约束
create table student3(
	school varchar(20),
    id int(8),
    name varchar(20),
    age int(2),
    sex varchar(1),
    constraint pk_student3 primary key(school, id)
)
desc student3
  1. 给已有表添加主键
    语法:alter table 表名 add [constraint 主键约束名] primary key(字段名)
  • 例如:创建表student4 ,不加id主键约束,创建完后添加主键约束
-- 创建表student4 ,不加id主键约束
create table student4(
	id int(8),
    name varchar(30)
    age int(2)
    sex varchar(1)
)
-- 创建完后添加主键约束
alter table student4 add constraint ph_student4 primary key(id)
desc student4
  1. 删除主键约束

    语法alter table 表名 drop primary key;

  • 例如:删除表student4中的主键约束
alter table student4 drop primary key;
  1. 唯一约束 unique
    指:表中字段的值不能重复

(1). 列级添加唯一约束
​ 语法:create table 表名(
​ 字段名1 字段类型1 unique,
​ 字段名2 字段类型2,
​ …
​ 字段名n 字段类型n)

  • 例如: 创建表student5 给name字段添加唯一约束
create table student5(
	id int(8)
    name varchar(20) unique
	sex varchar(1)
    age int(2)
)
desc student5

(2). 表级添加唯一约束
​ 语法:create table 表名(
​ 字段名1 字段类型1 unique,
​ 字段名2 字段类型2,
​ …
​ 字段名n 字段类型n,
​ [constraint 唯一约束名] unique(字段1,字段2…))

  • 例如:创建表student6,给id 和name添加唯一约束
create table student6(
	id int(8),
	name varchar(20),
	age int(2),
	sex varchar(1),
	constraint uk_student6_id_name unique(id,name)
)
desc student6

(3). 给已有表添加唯一约束
​ alter table 表名 add [constraint 唯一约束名] unique(字段1,字段2…))

  • 例如:创建表student7后 给表中name添加唯一约
create table student7(
	id int(8)
	name varchar(20)
	age int(2)
	sex varchar(1)
)
alter table student7 add constraint uk_student7_name unique(name)
desc student7

(4). 删除唯一约束
​ alter table 表名 drop index 唯一约束名
​ 注意:如果单个字段没有指定唯一约束名,则默认的唯一约束名为字段名

  • 如果是多个字段组合为唯一约束时候,默认的唯一约束名为第一个字段的名称
  • 如果指定了约束名则删除的时候写约束名
    • 例如:删除表student7中的唯一约束
alter table student7 drop index uk_student7_name
  1. 非空 not null
    某张表中某字段的值不能为空
    注意:1.只能使用列级添加
    ​ 2.空字符串"" 或者0 都不是null

(1). 列级添加非空约束
create table 表名(
​ 字段名 字段类型 not null
)

  • 例如:创建student8表,给name添加非空约束
create table student8(
	id int(8),
    name varchar(20) not null,
    age int(2),
    sex varchar(1)
)
desc student8

(2). 给已有表添加非空约束
alter table 表名 modify 字段名 字段类型 not null

  • 例如:创建student9后,给字段name添加非空约束
create table student9(
	id int(8),
    name varchar(20),
    sex varchar(1),
    age int(2)
)
alter table student9 modify name varchar(20) not null;
desc student9;

(3). 删除非空约束
​ alter table 表名 modify 字段名 字段类型 [null]

  • 例如:删除student9中name字段的非空约束
alter table student9 modify name varchar(20)
  1. 默认值约束(default)

    指在没有对某字段插入具体值时候会去默认的值
    注意:1. 只能使用列级约束
    2. 对于使用默认值约束,如果插入的数据为“null”,则不会使用默认值,只有没有插入数据时候,才会使用默认值

(1). 列级添加默认值约束
语法:create table 表名(
​ 字段名 字段类型 default value
​ )

  • 例如:创建表student10 ,其中对sex字段设置默认值为’男’
create table student10(
	id int(8),
    name varchar(20),
    sex varchar(2) default "男"
    age int(2)
)
desc student10;

(2). 给已有表添加默认值约束:
​ alter table 表名 modify 字段名 字段类型 default value;

  • 例如:创建表student11后,给sex字段设置默认值为’男’
create table student11(
	id int(8),
    name varchar(20),
    sex varchar(2),
    age int(2)
);
alter table student11 modify sex varchar(2) default '男'
desc student11;

(3). 删除默认值约束:
​ alter table 表名 modify 字段名 字段类型 ;

  • 例如:删除表student11sex字段的默认值为’男’约束
alter table student11 modify sex varchar(2)
  1. 自动增长约束(auto_increment)
    指:表中某字段的值会自动增加
    注意:1.一张表中只能有一个自动增长的字段
    ​ 2.配合主键一起使用 并且只适用于整数类型
    ​ 3.自动增长默认的初始值1,每增加一条记录,该字段的值会增加1

(1). 创建表时候创建自动增长约束:
create table 表名(
​ 字段名 字段类型 auto_increment

)

  • 例如:创建表student12 ,给id添加主键及自动增长约束
create table student12(
	id int(8) primary key auto_increment,
    name varchar(20),
    sex varchar(1),
    age int(2)
)
desc student12

(2). 给已有表添加自动增长约束:
​ 语法:alter table 表名 modify 字段名 字段类型 auto_increment

  • 例如:创建表student13后,给表中字段id添加auto_increment约束
create table student13(
	id int(8) primary key,
    name varchar(20),
    age int(2),
    sex varchar(2)
)
alter table student13 modify id int(8) auto_increment;
desc student13;

(3). 删除自增长约束 :
​ 语法:alter table 表名 modify 字段名 字段类型

  • 例如:删除表student13中auto_increment 约束
alter table student13 modify id int(8)
  1. 外键约束(foreign key)
    外键:某一张表中某字段的值依赖于两一张表中某字段的值
    要实现了数据库中的参照完整性
    将两张表紧密结合,对某张表修改或者删除时候,要保证数据的完整
  • 例如:班级(t_class) 学生(t_student) 关系 1:n

(1)创建外键约
注意:虽然MySQL提供了列级添加外键约束,但添加完后不会生效,所以使用表级添加外键约束
语法:create table 表名(
​ 字段名 字段类型,
​ [constraint 外键约束名] foreign key(字段名) references 表(字段名)
​ )

  • 例如:班级(t_class) 学生(t_student)
-- 班級
create table t_class(
	cno int(8) primary key auto_increment
    cname varchar(20)
)
-- 學生
create table t_student(
	cno int(8) primary key auto_increment,
    cname varchar(20),
    age int(2),
    sex varchar(2),
    stu_cno int(8),
    constraint fk_t_student_stu_cno foreign key(stu_cno) references t_class(cno)
)

(2)在已有表中添加外键约束:
语法:alter table 表名 add [constraint 外键约束名] foreign key(字段名) references 表(字段名)

  • 例如:班级(tt_class) 学生(tt_student)
-- 創建班級表(tt_class)
create table tt_class(
	cno int(8) primary key auto_increment,
    cname varchar(20)
    sno int(8) primary key auto_increment,
    sname varchar(20)
)
-- 創建學生表(tt_student)
create table tt_student(
	sno int(8) primary key auto_increment,
    sname varchar(20),
    stu_cno int(8)
)
-- 給tt_student添加外鍵
alter table tt_student add constraint fk_tt_student_cno foreign key (stu_cno) references tt_class(cno)

(3)删除外键约束:
​ alter table 表名 drop foreign key 外键约束名

  • 例如将表tt_student 中外键约束名删除
alter table tt_student drop foreign key fk_tt_student_stu_cno

(4)有关系的表进行删除
a.先删除有外键约束的表,再删除主表

  • 例如:先删除t_student表 再删除t_class
-- 先刪除t_student
drop table t_student;
drop table class

b.先删除外键约束再删除表

你可能感兴趣的