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 "条件";
posted on 2017-07-12 15:22 Cynthia006 阅读(208) 评论(0) 编辑 收藏 举报