DDL语言啦

#DDL
/*
数据定义语言
库和表的管理
一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除
创建:create
修改:alter
删除:drop
*/
一、库的管理
#1.库的创建
/*
语法:create batabase 库名

*/
#案例:
库的创建
CREATE DATABASE  IF NOT EXISTS books;
#库的修改
ALTER DATABASE books CHARACTER SET gbk;
#库的删除
DROP DATABASE books;
#库中表的管理
#1.表的创建
/*
语法:
create table 表名(
       列名  列的类型 【长度 约束】,
       列名  列的类型【长度 约束】,
       列名  列的类型【长度 约束】,
       ....
       列名 列的类型 【长度 约束】

*/
#1.创建books
CREATE TABLE books(
        id INT ,#编号
        bname VARCHAR(20),#图书名
        price DOUBLE, #价格
        authorid INT ,#作者编号
        publishdate DATETIME #出版日期
        );
#2.表的修改
#1.修改列名
/*
语法:alter table 表名  change column 列名 新列名
*/
ALTER TABLE books CHANGE COLUMN publishdate publish DATETIME;#column 是列的意思
#2.修改列的类型或约束
语法:ALTER TABLE 表名 MODIFY  COLUMN 列名 类型 
ALTER TABLE books MODIFY COLUMN publish TIMESTAMP;
#3.添加新列
 语法:
 ALTER TABLE 表名 ADD COLUMN 新列名 列的类型
ALTER TABLE books ADD COLUMN annual DOUBLE;
#4.删除列
语法;
ALTER TABLE 表名 DROP COLUMN 列名
ALTER TABLE books DROP COLUMN price;
#5.修改表名
语法:
ALTER TABLE books RENAME TO bokk;
#3.表的删除
DROP TABLE book_author
#通用的写法:
DROP DATABASE IF EXISTS 旧库名;
CREATE TABLE 表名
#4.表的复制
#仅仅复制表的结构
CREATE TABLE 表名 LIKE 被复制的表名
#复制表的结构及数据
CREATE TABLE 表名
#只复制部分数据
CREATE TABLE  表名
SELECT 
FROM 被复制的表
WHERE nation =’中国‘;
#仅仅复制某些字段
CREATE TABLE  表名 
SELECT 列名
FROM 被复制的表 
WHERE 恒不成立的条件
#常见的数据类型
/*
数值型:整型
        分类:tinyint(微整型)
              smallint mediumint 
              int(无符号不能插入负数
              有符号可以)
               bigint(8)
         特点:1.如果不设置有符号还是无符号默认有符号,
               如果想设置无符号,需要添加unsigned关键词
               2.如果插入的数值超出了整型的范围,
               会报out of range警告,并且插入临界值
               3.如果不设置长度,会有默认长度,
               长度代表了显示的最大宽度,
               如果不够会用0左边填充,但必须搭配zerofill使用。
        小数:
             定点型
             dec(M,D)
             decimal(M,D)
             浮点数
             float(M,D)
             double(M,D)
             特点;
             M:代表整数+小数部位
             D:代表小数部位
             1.M和D都可以省略
             2.如果是decimal,则默认为10,D默认为0
             3.如果是float和double,则会根据插入的数值的精度来决定精度
             4.定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用。
字符型    较短的文本:
                     char(不可变)  最大的字符数可以省略    比较耗费
                     varchar(可变) 不可以省略              比较节省
          较长的文本:text bolb(较长的二进制数据)
 日期型(日期的值需要用单引号引起来)
    date只保存日期
    time只保存时间
    year 只保存年
    datetime保存日期+时间
    timestamp保存日期+时间
    
 
 原则:选择的类型越简单越好,能保存数值的类型越小越好

*/
#常见约束
用于限制表中的数据,为了保证数据的准确性和可靠性
/*分类:六大约束
     not null:非空,用于保证该字段的值不能为空
     比如姓名,学号等
     DEFAULT:默认,用于保证该字段有默认值
     比如性别
     PRIMARY KEY :主键,用于保证该字段的值具有唯一,并且非空
     比如学号、员工编号等(系统默认主键就是非空,不可以更改)
     UNQUE:唯一,用于保证该字段的值具有唯一性,可以为空
     比如座位号
     check:检查约束【MySQL中不支持】
     foreign key :外键,用于限制两个表的关系,
     用于保证该字段的值必须来自主表关联列的值
添加约束的时机
   1.创建表的时候
   2.修改表的时候
   
约束的添加分类
列级约束:
   六大约束语法上都支持,外键约束没有效果
   表级约束:
         除了非空、默认、其他的都支持。
 主键和唯一:  
                保证唯一性  是否允许为空 一个表可以有多少个
         主键     是         否              至多一个
         唯一    是          是               可以有多个
         允许组合
 外键:
 1.要求在从表设置外键关系
 2.
*/
创建表添加约束
#1.添加列级约束
/*
语法:直接在字段名和类型后面追加约束类型即可。
*/

CREATE TABLE stuinfo(id INT PRIMARY KEY,#主键
                     stuname VARCHAR(20) NOT NULL,#非空
                      gender CHAR(1) CHECK(gender='男' OR gender='女'),#检查
                      seat  INT UNIQUE,#唯一
                      age INT DEFAULT 18 ,#默默约束
                      majorid INT REFERENCES major(id)#外键
                      );
 CREATE TABLE major(id INT PRIMARY KEY,
                   majorname VARCHAR(20)                    
  );
#查看stuino中的所有索引,包括主键,外键,唯一
SHOW INDEX FROM stuinfo;
#添加列级约束
/*
语法:在各个字段的最下面
constraint 约束名 约束类型(字段名)
*/
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(id INT ,
             gender CHAR(1),
             seat INT,
             age INT,
             majorid INT,
             CONSTRAINT pk PRIMARY KEY(id),
             CONSTRAINT un UNIQUE(seat),
             CHECK(gender='男' OR gender='女'),
             FOREIGN KEY(majorid) REFERENCES major(id)
             );
#修改表时添加约束
#添加非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
#添加默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
#添加主键
列级约束
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
表级约束
ALTER TABLE stuinfo ADD PRIMARY KEY(id)
#添加唯一
列级约束
ALTER TABLE stuinfo MODIFY COLUMN id INT UNIQUE;
表级约束
ALTER TABLE stuinfo ADD  UNIQUE;
#修改表时删除约束
1、删除非空约束
ALTER TABLE emp5 MODIFY COLUMN stuname VARCHAR(20) NULL;
2、删除默认约束
ALTER TABLE emp5 MODIFY COLUMN age INT;
3、删除主键
ALTER TABLE emp5 DROP PRIMARY KEY;
4.删除唯一
ALTER TABLE emp5 DROP UNIQUE;
5.删除外键
ALTER TABLE emp5 DROP FOREIGN KEY;
#
ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;
 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值