SQL语法(DDL)

1. 定义DDL:数据定义语言:数据库和表的管理,创建、删除:create、drop、show

2. 用法

  • 列举数据库:SHOW DATABASES

    • 功能:用于列举当前数据库中有哪些数据库

    • 理解:类似于在电脑上查看有哪些文件

    • 语法

    • SHOW {DATABASES | SCHEMAS} ;
      -- 中括号代表可选的,竖线都代表或者
    • 示例

    • -- 显示当前所有的数据库
      SHOW DATABASES ;
  • 创建数据库:CREATE DATABASE

    • 功能:用于在MySQL中创建一个新的数据库

    • 理解:类似于在电脑上创建一个目录

    • 语法

    • CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [db_option];
    • 示例

    • -- 创建一个数据库,名字叫做db_sql50
      CREATE DATABASE db_sql50;
    • 补充

    • -- 为了避免数据库已经存在了,导致程序报错,一般会加上判断
      CREATE DATABASE IF NOT EXISTS db_sql50;
  • 切换数据库:USE

    • 功能:实现在多个数据库之间的切换

    • 理解:类似于在电脑上切换不同的目录

    • 语法

    • USE db_name ;
    • 示例

    • -- 切换到 db_sql50 数据库
      USE db_sql50 ;
      
      -- 切换到 mysql 数据库
      USE mysql ;
  • 删除数据库:DROP DATABASE

    • 功能:实现数据库的删除

    • 理解:类似于在电脑上删除一个目录

    • 语法

    • DROP {DATABASE | SCHEMA} [IF EXISTS] db_name ;
    • 示例

    • -- 删除数据库 db_sql50
      DROP DATABASE db_sql50;
      
      -- 列举所有数据库
      SHOW DATABASES ;
      
      -- 为了避免报错,可以先判断再删除
      DROP DATABASE IF EXISTS db_sql50;
  • 创建数据表:CREATE TABLE

    • 功能:用于在一个数据库中创建一个新的数据表

    • 理解1:类似于在excel中创建一个新的sheet表格

    • 语法:

    • create table [ if not exists ] [数据库名称.]表的名称
      (
      	列名1 类型 [约束] [列的注释:comment],
      	列名2 类型 [约束] [列的注释:comment],
      	列名3 类型 [约束] [列的注释:comment],
      	……
      	列名N 类型 [约束] [列的注释:comment]
      ) [表的配置:charset] [表的注释:comment]
      ;
    • 理解2:创建表的语法看似复杂,当理解其中的结构与作用之后则会变的简洁明了,其中数据表中的列可以对比excel表格中的列。

    • 约束:约束本质就是一种限制,通过限制这一列的值的内容来保证数据的安全性和准确性,常用约束有六种:

      • 非空:not null:限制这一列的值不能为null

      • 默认:default:给定这一列默认值,如果用户没有给这一列赋值,就使用默认值

      • 主键:primary key:1、限制这一列增加了非空和唯一,2、基于这一列构建索引

      • 自增:auto_increment:必须用于主键,必须为int类型

      • 唯一:unique:限制这一列的值不能重复

      • 外键:用于多表设计场景中,保证规范性

    • MySQL常用数据类型:

      • 字符串:存储特殊字符、中文、字母等:拼接、裁剪、转换大小写,如:varchar(最大长度)、char()、text

      • 数值:存储所有数字,数字,不用加引号:数值运算,如:整数-tinyint、int、bigint,浮点数:double、decimal

      • 日期时间:存储日期、时间等数据:时间取值、转换、计算,如:date、datetime、timestamp

    • 示例:

    • # Student 学生表
      CREATE TABLE Student
      (
      s_id VARCHAR(20),
      s_name VARCHAR(20) NOT NULL,
      s_birth VARCHAR(20) NOT NULL, 
      s_sex VARCHAR(10) NOT NULL,
      PRIMARY KEY(s_id)
      );
      
      
      
      # Course 课程表
      CREATE TABLE Course
      (
      c_id VARCHAR(20),
      c_name VARCHAR(20) NOT NULL,
      t_id VARCHAR(20) NOT NULL,
      PRIMARY KEY(c_id)
      );
      
      
      
      
      # Teacher 教师表
      CREATE TABLE Teacher
      (
      t_id VARCHAR(20),
      t_name VARCHAR(20) NOT NULL DEFAULT '',
      PRIMARY KEY(t_id)
      );
      
      
      
      # Score 分数表
      CREATE TABLE Score
      (
      s_id VARCHAR(20),
      c_id VARCHAR(20),
      s_score INT(3),
      PRIMARY KEY(s_id, c_id)  # 注意这里是联合主键
      );
  • 列举数据表:SHOW TABLES

    • 功能:列举当前数据库或者某个数据库中有哪些表

    • 理解:类似于查看电脑中某个目录下有哪些文件

    • 语法

    • SHOW TABLES [ IN db_name] ;
    • 示例 :

    • -- 列举mysql这个数据库中有哪些数据表
      SHOW TABLES IN mysql;
  • 描述数据表:DESC

    • 功能:用于查看表的结构信息,有哪些字段,哪些约束等等
    • 理解:类似于查看excel单元格的格式,当我们想要向数据表中插入数据时,可以用此方法查看约束、数据类型等
    • 语法:
    • DESC [db_name.]tb_name ;
    • 示例:
    • DESC Students;
      DESC db_sql50.Students;
  • 删除数据表:DROP TABLE

    • 功能:删除数据库中的数据表

    • 语法:

    • DROP TABLE [IF EXISTS] [db_name.]tbname ;
    • 示例:
    • -- 删除Student表
      DROP TABLE db_sql50.Student;
      
      -- 删除Teacher表
      DROP TABLE IF EXISTS db_sql50.Teacher;
      
      -- 列举表
      SHOW TABLES IN db_sql50;
  • 清空数据表:TRUNCATE

    • 功能:用于清空整张表的数据
    • 问题:为什么TRUNCATE属于DDL?

      • 本质:清空的原理是把表的删了重新建

      • 注意:清空的时候如果有自增,自增重头开始

    • 语法:

    •   TRUNCATE [db_name.]tbname
    • 示例:

    • -- 查询表数据
      SELECT * FROM db_sql50.Score;
      
      -- 清空表数据
      TRUNCATE db_sql50.Score;
  • 修改表结构:ALTER TABLE

    • 功能:用于修改表的结构,字段、类型、约束等

    • 语法 :

    • -- 添加
      ALTER  TABLE  表名  ADD  列名  类型(长度)  [约束];
      
      -- 修改
      ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) 约束;
      
      -- 删除
      ALTER TABLE 表名 DROP 列名;
    • 示例:

    • -- 给 student 增加一列 stu_weight 体重,单位KG
      ALTER TABLE db_sql50.Student ADD s_weight double not null;
      
      -- 给 student 的性别列修改为tinyint类型
      ALTER TABLE db_sql50.Student CHANGE s_sex s_sex tinyint(4);
      
      -- 删除 student 的stu_weight 列
      ALTER TABLE db_sql50.Student DROP s_weight;
      
      -- 查看结构
      DESC db_sql50.Student;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值