1 数据库的管理
1.1 创建数据库
CREATE DATABASE pai08408 CHARSET=utf8;
1.2 删除数据库
DROP DATABASE IF EXISTS pai08408;
1.3 修改数据库
修改数据库的名字
RENAME DATABASE pai08408 TO pai0408; (适用版本)
2 数据库表的管理
2.1 数据库表的创建
create table 表名(
字段名 字段的类型 字段的约束条件,
字段名 字段的类型 字段的约束条件,
字段名 字段的类型 字段的约束条件
)
案例:
create table students(
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
stuname varchar(20),
age smallint unsigned default 0,
gender enum('女','男','女装大佬','人妖','其他'),
height decimal(3,2),
weight decimal(5,2),
cls_id int unsigned default 0
)
2.2 数据库常见的约束类型
not null 非空约束,保证当前的字段不能为空
default 默认,如果当前的字段没有输入数据,使用默认值填充,保证该字段存在默认值
primary key 主键,物理上的存储顺序,保证该字段不能为空,保证数据的唯一性
FOREIGN KEY 外键,限制两张表之间的关系,用来约束当前表与另外一张表之间的关系
unique 唯一值,表示该字段在当前的数据表中不允许出现重复值
外键创建的案例
CREATE TABLE newstudent(
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
stuname VARCHAR(20),
age SMALLINT UNSIGNED DEFAULT 0,
gender ENUM('女','男','女装大佬','人妖','其他'),
height DECIMAL(3,2),
weight DECIMAL(5,2),
cls_id INT UNSIGNED,
FOREIGN KEY(cls_id) REFERENCES newclass(id)
);
DESC newstudent;
注意点:
创建外键的步骤
(1) 定义外键的字段名以及字段的类型,注意和关联表的字段类型要求一致
(2)建立外键之间的连接FOREIGN KEY(当前表的外键字段) REFERENCES 产生外键关联那张表的表名(外键连接字段)
(3) 班级------学生表 班级(主表) 学生表是从表 外键写从表身上
3 修改数据库表
3.1 删除普通字段
删除性别这个字段
ALTER TABLE users DROP gender;
3.2 删除外键字段
3.2.1 删除在创建表的时候,已经设置约束名的字段
1、先展示一下创建表的语句,查找到创建表的外键的时候起的约束名
[外链图片转存失败(img-JeJHwaPh-1567654607157)(1566550913405.png)]
2、删除
ALTER TABLE users DROP FOREIGN KEY pk;
ALTER TABLE users DROP cls_id;
DESC users;
3.2.2 删除在创建表的时候,没有设置约束名的字段
1、先展示一下创建表的语句,查找到创建表的外键的时候起的约束名
show create table 表名
[外链图片转存失败(img-nMJl9Od3-1567654607160)(1566551162107.png)]
2、删除
ALTER TABLE newstudent DROP FOREIGN KEY newstudent_ibfk_1;
ALTER TABLE newstudent DROP cls_id;
DESC newstudent;
3.2.3 总结
1、查看外键约束的约束名
show create table 表名;
2、解除外键字段的外键约束
alter table 表名 DROP FOREIGN KEY 外键约束名;
alter table 表名 drop 外键字段的字段名
3.3 删除约束
删除唯一值索引,
alter table users drop index uname;
# 删除主键
alter table users drop primary key;
3.4 修改表的字段
1、使用change方法
ALTER TABLE 表名 CHANGE COLUMN 原来的字段名 新的字段名 字段的类型 字段的约束;
2、modify
alter table 表名 modify column 字段名 字段类型 字段的约束;
注意点:
change需要修改的是字段的名称、字段的类型、字段的约束
modify需要修改的是字段的类型、字段的约束
3.5 总结
/*
修改数据表的字段
alter table 表名 add|drop|change|modify 字段名 [类型和约束]
*/
4 复制表结构
/*
复制表结构,仅仅是结构(字段),数据是不复制的
create table 复制表的表名 like 被复制的表的表名;
*/
CREATE TABLE aaa LIKE users;
DESC aaa;
DESC users;
/*
复制表的结构以及数据
create table 复制表名 select * from 被复制的表 where 引导条件;
*/
CREATE TABLE bbb SELECT * FROM users;
CREATE TABLE ccc SELECT uage,phone FROM users;
CREATE TABLE ddd SELECT uage,phone FROM users WHERE id=1;
CREATE TABLE eee SELECT uage,phone FROM users WHERE 2=3;
5 自增长(标识列)
5.1 目的
不需要手动增加值,让指定的列可以自动增长,系统提供的
5.2 设置初始值与步长
查看相关的属性
SHOW VARIABLES LIKE ‘%auto_increment%’;
查看全局系统变量
SHOW GLOBAL VARIABLES;
设置自增长字段的步长
SET auto_increment_increment=3;
CREATE TABLE test_colum(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(20)
);
SET auto_increment_increment=10;
SET auto_increment_offset=2;
CREATE TABLE test_colum(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(20)
);
注意点:
1、设置初始值:SET auto_increment_offset=2;
2、设置步长:SET auto_increment_increment=10;
3、步长与初始值是系统的全局变量,所以一但修改之后,全局都生效,全局受影响
4、一张表有一个自增长字段
5、auto_increment不一定要和主键搭配,但是它一定要和约束搭配
6、auto_increment的数据类型是数值类型的