zoukankan      html  css  js  c++  java
  • MySQL速学篇第四课

    CREATE TABLE

      虽然许多数据库工具可以让您在不需用到 SQL 的情况下建立表格,不过由于表格是一个最基本的架构,可以了解下

    在我们跳入 CREATE TABLE 的语法之前,我们最好先对表格这个东西有些多一点的了解。表格被分为栏位 (column) 及列位 (row)

    每一列代表一笔资料,而每一栏代表一笔资料的一部份。举例来说,如果我们有一个记载顾客资料的表格,那栏位就有可能包括姓、名、地址、城市、国家、生日...等等。当我们对表格下定义时,我们需要注明栏位的标题,以及那个栏位的资料种类。

    那,资料种类是什么呢?资料可能是以许多不同的形式存在的。它可能是一个整数 (例如 1),、一个实数(例如 0.55)、一个字串 (例如 'sql')、一个日期/时间 (例如 '2000-JAN-25 03:22:22')、或甚至是 以二进法 (binary) 的状态存在。当我们在对一个表格下定义时,我们需要对每一个栏位的资料种类下定义。(例如 '姓' 这个栏位的资料种类是 char(50)━━代表这是一个 50 个字符的字串)。我们需要注意的一点是不同的数据库有不同的资料种类,所以在对表格做出定义之前最好先参考一下数据库本身的说明。

    CREATE TABLE 的语法是:

    CREATE TABLE "表格名"
    ("栏位 1" "栏位 1 资料种类",
    "栏位 2" "栏位 2 资料种类",
    ... );

    我们想新建一个学生信息表(t_info),记录学生的姓名(name)、编号(number)、班级(class)信息,设置编号(number)为主键

    CREATE TABLE `s_info` (
    `name` varchar(11) DEFAULT NULL,
    `number` char(10) NOT NULL,
    `class` varchar(11) DEFAULT NULL,
    PRIMARY KEY (`number`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    当然,新建一张表也可以在可视化工具上直接创建,更直观一些


    创建后,右键查看对象信息,DDL显示

    二、ALTER TABLE

    在表格被建立在资料库中后,我们常常会发现,这个表格的结构需要有所改变。常见的改变如下:

    • 加一个栏位

    • 删去一个栏位

    • 改变栏位名称

    • 改变栏位的资料种类

    以上列出的改变并不是所有可能的改变。ALTER TABLE 也可以被用来作其他的改变,例如改变主键定义。

    ALTER TABLE 的语法如下:

    ALTER TABLE "table_name"
    [改变方式];

    [改变方式] 的详细写法会依我们想要达到的目标而有所不同。再以上列出的改变中,[改变方式] 如下:

    • 加一个栏位: ADD "栏位 1" "栏位 1 资料种类"

    • 删去一个栏位: DROP "栏位 1"

    • 改变栏位名称: CHANGE "原本栏位名" "新栏位名" "新栏位名资料种类"

    • 改变栏位的资料种类: MODIFY "栏位 1" "新资料种类"

    1)ADD新增一个字段

    在学生信息表(t_info)中插入学生的班级信息(grade)

    alter table s_info add grade char(20)

    执行后效果如下图:

    2)DROP删除一个字段

    删除s_info表中grade字段

    alter table s_info drop grade 

    3)CHANGE更新字段名称

    将number字段名称更改为num

    alter table s_info change number num varchar(11)


    4)MODIFY更改字段类型属性

    将学生编号(num)字段属性改成char(10)

    alter table s_info modify num char(10)

    三、主键Primary Key

      主键 (Primary Key) 中的每一笔资料都是表格中的唯一值。换言之,它是用来独一无二地确认一个表格中的每一行资料。主键可以是原本资料内的一个栏位,或是一个人造栏位 (与原本资料没有关系的栏位)。主键可以包含一或多个栏位。当主键包含多个栏位时,称为组合键 (Composite Key)。

    主键可以在建置新表格时设定 (运用 CREATE TABLE 语句),或是以改变现有的表格架构方式设定 (运用 ALTER TABLE)。

    在创建表格的同时,设置number为主键

    CREATE TABLE `s_info` (
    `name` varchar(11) DEFAULT NULL,
    `number` char(10) NOT NULL,
    `class` varchar(11) DEFAULT NULL,
    PRIMARY KEY (`number`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    也可以用alter table 方式新增num为主键

    四、DROP TABLE

      有时候我们会决定我们需要从数据库中清除一个表格。事实上,如果我们不能这样做的话,那将会是一个很大的问题,因为数据库管理师 (Database Administrator -- DBA) 势必无法对数据库做有效率的管理。还好,SQL 有提供一个 DROP TABLE 的语法来让我们清除表格。 DROP TABLE 的语法是:

    DROP TABLE "表格名";

      我们如果要删除学生信息表s_info

    drop table s_info;

     TRUNCATE

      有时候我们会需要清除一个表格中的所有资料。要达到者个目的,一种方式是我们在SQL DROP 那一页 看到 的 DROP TABLE 指令。不过这样整个表格就消失,而无法再被用了。另一种方式就是运用 TRUNCATE TABLE 的指令。在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在。 TRUNCATE TABLE 的语法为下:

    TRUNCATE TABLE "表格名";

      如果要清空学生信息表s_info

    truncate table s_info;

    到这里SQL的基本语法就已经学的差不多了

    总结回顾下SQL语法:

    Select 
    SELECT "栏位" FROM "表格名";

    Distinct
    SELECT DISTINCT "栏位" 
    FROM "表格名";

    Where
    SELECT "栏位" 
    FROM "表格名" 
    WHERE "条件";

    And/Or
    SELECT "栏位" 
    FROM "表格名" 
    WHERE "简单条件" 
    {[AND|OR] "简单条件"}+;

    In
    SELECT "栏位" 
    FROM "表格名" 
    WHERE "栏位" IN ('值1', '值2', ...);

    Between
    SELECT "栏位" 
    FROM "表格名" 
    WHERE "栏位" BETWEEN '值1' AND '值2';

    Like
    SELECT "栏位" 
    FROM "表格名" 
    WHERE "栏位" LIKE {模式};

    Order By
    SELECT "栏位" 
    FROM "表格名" 
    [WHERE "条件"]
    ORDER BY "栏位" [ASC, DESC];

    Count
    SELECT COUNT("栏位") 
    FROM "表格名";

    Group By
    SELECT "栏位1", SUM("栏位2") 
    FROM "表格名" 
    GROUP BY "栏位1";

    Having
    SELECT "栏位1", SUM("栏位2") 
    FROM "表格名" 
    GROUP BY "栏位1" 
    HAVING (栏位);

    Create Table
    CREATE TABLE "表格名"
    ("栏位 1" "栏位 1 资料种类",
    "栏位 2" "栏位 2 资料种类",
    ... );

    Drop Table
    DROP TABLE "表格名";

    Truncate Table
    TRUNCATE TABLE "表格名";

    Insert Into
    INSERT INTO "表格名" ("栏位1", "栏位2", ...)
    VALUES ("值1", "值2", ...);

    Update 
    UPDATE "表格名"
    SET "栏位1" = [新值]
    WHERE "条件";

    Delete From
    DELETE FROM "表格名"
    WHERE "条件";

  • 相关阅读:
    天眼查接口的调用
    EditPlus5.0注册码
    图片转化成base64字符串
    java根据图片的url地址下载图片到本地
    将字符串中的数字转化为文字
    String类型转json 转JSONObject 转 JSONArray 以及 遍历
    三个日期类型比较大小 20181123
    字符与字节的区别
    面向对象五大原则
    Struts/Servlet,action转到jsp后,CSS失效,路径问题(struts2,jsp路径,action路径,action跳转,相对路径,绝对路径)
  • 原文地址:https://www.cnblogs.com/cynthia006/p/6934295.html
Copyright © 2011-2022 走看看