zoukankan      html  css  js  c++  java
  • MySQL基础篇之DDL语句

    SQL简介

     当面对一个陌生的数据库时,通常需要一种方式与它交互,以完成用户所需要的各种工作,这个时候,就要用到SQL语言了。
     SQL是Structure Query Language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言,由IBM在20世纪70年代开发出来,作为IBM关系数据库原型System R的原型关系语言,实现了关系数据库中的信息检索。
     20世纪80年代初,美国国家标准局(ANSI)开始着手制定SQL标准,最早的ANSI标准于1986年完成,就被叫做SQL-86。标准的出台使SQL作为标准关系数据库语言的地位得到了加强。SQL标准目前已几经修改,更趋完善。
     正是由于SQL语言的标准化,所以大多数关系型数据库系统都支持SQL语言,它已经发展成为多种平台进行交互操作的底层会话语言。
    

    SQL分类

    SQL语句主要可以划分为以下3个类别。

    1. DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象。常用的语句关键字主要包括create,drop,alter等。
    2. DML(Data Manipulation Language)语句:数据操纵语句,用于添加,删除,更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert,delete,update,select等。
    3. DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库,表,字段,用户的访问权限和安全级别。主要的语句关键字包括grant,revoke等。

      DDL语句

      这里写图片描述
      在以上的命令行中,mysql代表客户端命令,“-u”后面跟链接的数据库用户,“-p”表示需要输入密码

    Your MySQL connection id is 23表示客户端连接ID,这个数字记录了MySQL服务到目前为止的连接次数;每个新连接都会自动加1,现在是23。

    Server version: 5.7.20 MySQL Community Server (GPL) 表示MySQL服务器的版本,本例中是5.7.20社区版

    创建数据库的语法是

    CREATE DATABASE dbname

    这里写图片描述

    执行完创建命令后,下面有一行提示“Query OK, 1 row affected(0.00sec)”,这段提示可以分为3部分。“Query OK”表示:所有的DDL和DML(不包括SELECT)操作执行成功后都显示“Query OK”,这里理解为执行成功就可以了,这个是MySQL的一个特点。“1 row affected”表示操作只影响了数据库中一行的记录,“0.00sec”则记录了操作执行的时间。

    查看系统中存在哪些数据库命令

    SHOW DATABASES;

    这里写图片描述

    上面有4个是安装MySQL时系统自动创建的,其各自功能如下

    1. information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息,列信息,列信息,权限信息,字符集信息,分区信息等。
    2. cluster:存储了系统的集群信息。
    3. mysql:存储了系统的用户权限信息
    4. test:系统自动创建的测试数据库,任务用户都可以使用。

      选择要操作的数据库命令

     USE dbname

    删除数据库命令

    DROP DATABASE dbname;

    这里写图片描述
    可以返现,提示操作成功后,后面却显示了”0 rows affected”,这个提示在MySQL里面
    DROP语句操作的结果都是现实“0 rows affected”

    创建表

    在数据库中创建一张表的基本语法如下:
    CREATE TABLE tablename{
    column_name_1 column_type_1 constranints
    column_name_2 column_type_2 constranints
    ….
    column_name_n column_type_n constranints
    }
    因为MySQL的表明是以目录的形式存在于磁盘上的,所以表名的字符可以用任何目录名称允许的字符。column_name是列的名字;column_type是列的数据类型;constraints是这个列的约束条件。

    创建一张名称为emp表。表中包括ename(姓名),hiredate(雇用日期),和sal(薪水)3个字段,字段类型分别为varchar(10),date,int(2)
    CREATE TABLE emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));

    查看表定义命令

    DESC tablename

    这里写图片描述

    获取更全面的表定义信息,可以查看创建表的SQL语句,命令如下

    SHOW CREATE TABLE dbname;

    这里写图片描述

    修改表

    修改表类型
    ALTER TABLE tablename MODIFY[COLUMN] colunm_defintion[FIRSTAFTER col_name]

    修改表emp的ename字段定义,将varchar(10)改为varchar(20):

    alter table emp modify ename varchar(20);

    增加表字段,语法如下

    ALTER TABLE tablename ADD[COLUMN] column_defintion[FRISEAFTER col_name]

    在表emp中新增字段age,类型为int(3)
    这里写图片描述

    删除表字段,语法如下

    ALTER TABLE tablename DROP [COLUMN] col_name

    将字段age删除掉

    ALTER TABLE emp DROP age;

    这里写图片描述

    字段改名,语法如下

    ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_defintion[FIRSTAFTER col_name]

    例如,将age改名为age1,同时修改字段类型为int(4);

    ALTER TABLE emp CHANGE age age1 int(4);

    这里写图片描述

    注意:change和modify都可以修改表的定义,不同的是change后面需要写两次列名,不方便,但是change的有点是可以修改列名称,modify不能

    修改字段排列顺序
    字段增加和修改语法(ADD/CHANGE/MODIFY)中,都有一个可选项first|after column_name,这个选项可以用来修改字段在表中的位置,ADD增加的新字段默认是加在表的最后位置,而CHANGE/MODIFY默认都不会改变字段位置

    将新增的字段birth date加在ename之后
    这里写图片描述

    修改字段age ,将它放在最前面
    这里写图片描述

    注意 : CHANGE /FIRST/AFTER COLUMN这些关键字都属于MySQL在标准SQL上的扩展,在其他数据库上不一定适用。

    更改表名,语法如下

    ALTER TABLE tablename RENAME [TO] new_tablename

    将emp表名修改成emp1
    这里写图片描述

  • 相关阅读:
    .NetCore~框架版本号不同引起dotnet不能run它
    Linux~centos上安装.netcore,HelloWorld归来!
    Lind.DDD.Utils.HttpHelper里静态对象引出的Http超时问题
    [置顶] C++ Pirate: Lambda vs Bind
    如何成为CSDN博客专家
    MFC下的日历表
    世界上最便宜的10张防癌处方
    android权限大全
    应用程序管理集
    谢希仁《计算机网络》第五版---第四章
  • 原文地址:https://www.cnblogs.com/aotemanzhifu/p/9192395.html
Copyright © 2011-2022 走看看