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 "条件";

原文地址:https://www.cnblogs.com/cynthia006/p/6934295.html