mysql学习-DDL语句

sql基本概念

  • 什么是sql?
    • Structured Query Language 结构化查询语言
    • 通俗来说就是定义了操作所有关系型数据库(如mysql,oracle,sqlserver等)的规则
    • 每一种操作数据库的方式存在不一样的地方,类似于"方言".

sql通用语法

  • sql语句可以单行或多行书写,以分号结尾.

      例如:(在cmd黑窗口下)
      查看所有数据库名称:
      SHOW DATABASES;(切记后面要加s).
      查看数据库物理存放位置:
      show global variables like "%datadir%".
    
  • 可使用空格和缩进来增强语句可读性.

  • mysql语句中的sql不区分大小写,但是关键字建议大写.

  • 有3种注释:(cmd窗口下)

    • 单行注释:
      • – 注释内容
      • 注释内容(mysql特有)

      • 注意--符号后面有一个空格,#后面有没有空格都行.
    • 多行注释:
      • /* 注释内容 */

sql分类

DDL(Data Definition Language)数据定义语言

  • 用来定义数据库对象: 比如数据库,表,视图等.
  • 关键字: create, drop, alter等.

DML(Data Manipulation Language)数据操作语言

  • 用来对数据库中表的数据进行增删改.
  • 关键字:update, insert, delete等.

DQL(Data Query Language)数据查询语言

  • 用来查询数据库中表的记录(也就是数据)
  • 关键字: select, where等.

DCL(Data Control Language)数据控制语言(不管)

  • 用来设置或更改数据库用户或角色权限的.

DDL语句: 操作数据库,表

  • 操作数据库: CRUD

    • C(Create): 创建

        例如:(在cmd黑窗口下)
        创建一个名为`db1`的数据库(条件语句是判断是否存在)
        create database if not exists db1;
        创建一个字符集为gbk的数据库
        create database db1 character set gbk;
        创建一个名为`db1`且字符集为gbk的数据库
        create database if not exists db1 character set gbk;
      
    • R(Retrieve): 查询

        例如:(在cmd黑窗口下)
        查询所有数据库名称:
        SHOW DATABASES;(切记后面要加s).
        查询test数据库创建语句(还可以查看该数据库的字符集是utf-8还是啥):
        show create database test;
        查询数据库物理存放位置:
        show global variables like "%datadir%".
      
    • U(Update): 修改

        例如:(在cmd黑窗口下)
        修改db1数据库的字符集为utf8(不能写成utf-8):
        alter database db1 character set utf8.
      
    • D(Delete): 删除

        例如:(在cmd黑窗口下)
        删除db1数据库:
        drop database db1.
        删除db1数据库,先判断是否存在:
        drop database if exists db1.
      
    • 使用数据库

        使用db1数据库:
        use db1;
        查询当前正在使用的数据库名称:
        select database();
      
  • 操作表: CRUD

    • C(Create): 创建

        例如:(在cmd黑窗口下)
        在db1数据库中创建一张学生表student
        use db1;
        create table student(
        	id int,
        	name varchar(23),
        	score double(5,2),
        	birthday date,
        	add_time timestamp
        	);
      
      • 语法:
        • create table 表名(
          列名1 数据类型1,
          列名2 数据类型2,

          列名n 数据类型n
          );
        • 注意: 最后一列不需要加逗号!!!
      • 常用数据类型:
        • int: 整数类型.

          • 例如: age int.
        • double: 浮点数类型.

          • 例如: score double(5,2), 其中括号中第一个5表示小数一共最多5位,小数点后最多2位,所以他的最大值为999.99.
        • date: 日期类型, 只包含年月日, 格式为: yyyy-MM-dd.

        • datetime: 日期类型, 包含年月日时分秒, 格式为: yyyy-MM-dd HH:mm:ss.

        • timestamp: 时间戳类型, 包含年月日时分秒, 格式为: yyyy-MM-dd .HH:mm:ss.

          • date当不给值或给值为null时,表中就存放null,没有默认值.
          • timestamp和datetime区别:
            • 使用timestamp,如果将来不给这个字段赋值,或赋值为null,则默认使用当前系统时间来自动赋值.
        • varchar: 字符串类型.

          • 例如: name varchar(20), 括号中的参数表示姓名最大20个字符,超过了会报错,zhangsan占8个字符,而张三只占两个字符.
    • R(Retrieve): 查询

        例如:(在cmd黑窗口下)
        查询db1数据库中所有表的名称(要先使用数据库哈)
        use db1;
        show tables;
        查询db1数据库中db表的信息(包括字段及其信息):
        use db1;
        desc db;
      
    • U(Update): 修改

      • 修改表名

          例如:(在cmd黑窗口下)
          修改stu表的表名为students
          alter table stu rename to students;
        
      • 修改表字符集

          例如:(在cmd黑窗口下)
          修改students表的字符集为gbk
          先查看字符集
          show create table students;
          然后修改字符集为gbk
          alter table students character set gbk;
        
      • 修改列

        • 修改列名,类型

          • modify只能修改类型,而change可以修改类型和列名.
          • 修改类型的时候用modify可以比change少写一个列名哈哈哈.

          例如:(在cmd黑窗口下)
          在students表中将nickname列改成gender列
          alter table students change nickname gender varchar(1);
          在student表中将nickname的类型改为10个字符
          alter students modify nickname varchar(10);
          alter student change nickname nickname varchar(10).

        • 添加列

          例如:(在cmd黑窗口下)
          在students表中添加列nickname
          alter table students add nickname varchar(20);

        • 删除列

          例如:(在cmd黑窗口下)
          删除student表中的nickname列
          alter table students drop nickname;

    • D(Delete): 删除

        例如:(在cmd黑窗口下)
        删除db1数据库下student表
        use db1;
        drop table if exists student;
      
    • 删除表中数据可以用delete(DML语句)和truncate(DDL语句)

      • truncate用于删除整张表的数据,但是保留表结构,格式为: truncate table 表格名, 和没有where的delete类似.
      • 当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete.
      • 效率方面:drop > truncate > delete
    • 复制表

        例如:(在cmd黑窗口下)
        在db1数据库下复制studen表为stu表
        use db1;
        create table stu like student;
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值