【SQL】sql从0到1——第【6】章:数据定义语言(库、表的管理;MySQL数据类型;约束;标识列)

一、库的管理

1 . 库的创建
 Create database if exits 库名;
 例:Create database if not exits students;
2 . 库的修改
 更改库的字符集:Alter database character set 新名称
3 . 库的删除(删库跑路???)
  Drop database if exits 库名;
4. 修改库名
 停止服务
 电脑C盘-programdata文件夹-MySQL文件夹-data文件夹-要改名的库-重命名
 重启服务-刷新

二、表的管理

1.表的创建
 Create table 表名(
          列名,列的类型(长度),约束,
          列名,列的类型(长度),约束,
……);
 例:create students(
            Student_id,varchar(5 ),
            Name,varchar(6),
            Grade,int(2));
2.表的修改
 Alter table 表名 add|drop|modify|change column 列名 列的类型、约束;
 ① 修改列名
  Alter table 表名 change column 旧列名 新列名 列的类型;
 ② 修改列的类型或约束
   Alter table 表名 modify 列名 列的新类型;
 ③ 添加新列
  添加到所有列最后:Alter table表名add column 新列名 列的类型;
  添加到指定位置:Alter table表名add column 新列名 列的类型 first/after字段;
 ④ 删除列
   Alter table表名drop column 列名;
 ⑤ 修改表名
   Alter table表名rename to 新表名;

3.表的删除
 Drop table if exits表名;

4.表的复制

 ① 复制表的结构
  Create table 新表名 like 要复制的表的表名;

 ②复制表的结构+数据
  Create table 新表名
  Select* from 要复制的表的表名;

 ③ 只复制部分数据
   Create table 新表名
   Select列名1,列名2
   from 要复制的表的表名
   where 筛选条件;

 ④ 只复制某些字段
  Create table 新表名
  Select列名1,列名2
  from 要复制的表的表名
  where 恒不成立的条件;

三 、常见的数据类型

 1.数值型
   1)整数
    Tinyint :1字节,范围:有符号-128127;无符号0255
    Smallint: 2字节
    Mediumint :3字节
    Int : 4字节
    Bigint :8字节
   特点:
    ① 如果不设置是否有符号,默认有符号,若想设置无符号,需要添加关键字unsigned
    ② 如果插入的数值超出了整形的范围,会报out of range异常,且插入临界值
    ③ 如果不设置长度,则会有默认的长度,长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配关键字zerofill,并且变为无符号整型

扫描二维码关注公众号,回复: 13129446 查看本文章

 2)小数

   定点型
   Dec(M,D) / Decimal:m+2字节,最大取值范围与double相同,给定Decimal的有效取值范围由m和D决定。
   浮点数
   Float(M,D) : 4字节
   Double(M,D) : 8字节
   (M,D)可省略,M代表整数+小数部位总位数,D代表小数部分位数
   Decimal中M默认为10,D默认为0、
   Float和Double会根据插入的数值的精度来决定精度

 2.字符型
   1)较短的文本:char、varchar
   Char/ varchar (M):M是最多字符数,varchar是可变长度的字符,比较节省空间,但其效率较低。
   2)较长的文本:text、blob
    Binary/var Binary :保存较短的二进制数据
    Enum : 保存枚举(不区分大小写)
    Set :保存集合不区分大小写)

 3.日期型
  日期的值必须用单引号引起来
   Date只保存日期
   Time 只保存时间
   Year 只保存年
    Datetime和timestamp保存日期+时间
    Datetime和timestamp的区别:
     Timestamp支持的时间范围较小,为1970-2038;Datetime范围为1000-9999
     Timestamp 和实际时区有关,更能反映实际的日期,Datetime只能反映出插入时的当地时区
     Timestamp 的属性受MySQL版本和模式影响很大

四、常见约束

 约束是一种限制,用于限制表中的数据,为了保证表中的数据的准确性和可靠性。
 1.六大约束
   ①非空约束:Not Null 用于保证字段的值不能为空
   ② 默认约束:Default 用于保证该字段有默认值
   ③ 主键约束:Primary Key用于保证该字段的值具有唯一性,并且非空
   ④ 唯一约束:Unique 用于保证该字段的值具有唯一性,可以为空
   ⑤检查约束:Check(MySQL不支持)例:性别只能为男女,当值为其他时报错
  ⑥外键约束:Foreign Key用于限制两个表的关系,保证该字段的值必须来自于主表的关联字段的值。在从表添加外键约束,用于引用主表中某列的值。

 2.列级约束和表级约束

  列级约束:六大约束在语法上都支持,但外键约束无效果

  ①添加列级约束

  1)创建表时添加约束
    直接在字段名和类型后面追加约束类型,只支持默认、非空、主键、唯一约束
    例:
     create table stu(
      Id int primary key
      Name varchar(20) not null
      Age int default);

  2)修改表时添加约束
   Alter table stu modify column name varchar(20) not null;

表级约束:除了非空、默认约束,其他约束都支持
      在各个字段最下边Constraint 约束名 约束类型(字段名)
      例: create table stu(
         Id int
         Name varchar(20)
         Age int
        Constraint pk primary key(id) ,
        Constraint nn not null(name),
        Constraint dt default(age));

敲黑板,面试常考 !!!

 3.主键约束和唯一约束

在这里插入图片描述
 4.外键

   在从表设置外键关系
   从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
   主表的关联列必须是一个key(一般是主键或唯一)
   插入数据时,先插入主表,再插入从表
   删除数据时,先删除从表,在删除主表

 5,修改表时删除约束

  ①删除非空约束
   Alter table stu modify column name varchar(20) null;
  ②删除主键约束
    Alter table stu drop primary key;

五、标识列

 自增长列,可以不用手动插入值,系统提供默认的序列值

 1.创建表时设置标识列
  Create table stu(
           Id int primary key auto_increment,
           Name varchar(20));
  设置步长:set suto_increment_increment=3;
  设置起始值:insert into stu(id,name) values (10,’lily’);

   标识列不一定和主键搭配,但必须要求是一个key
   一个表至多有一个标识列
   标识列的类型必须是数值型

 2.修改表时设置标识列
  Alter table stu modify column id int primary key auto_increment;

 3.修改表时删除标识列
  Alter table stu modify column id int primary key;

猜你喜欢

转载自blog.csdn.net/m0_46568930/article/details/113415231