垃圾:由于明天就有一次考试了,而我现在还没有对这方面的基础知识有一个系统性的整理,现在我十分焦虑,也正是复习的好时候。可我实在是不知道该怎么给SQL一个比较好的解构,因为刚刚入门,每项分类能写出的东西太少了,总不能从数据类型开始写起吧?
一、MySQL数据类型
1. 常用数据
数据类型 | 简介 |
CHAR(n) | 长度固定为n的字符串 |
VARCHAR(n) | 长度可变,上限至长度n的字符串 |
INTEGER |
整数 |
DECIMAL | 带小数点的数字 |
DATE | 定规格的日期("yyy-mm-dd"),分隔符可以随意选取 |
DATETIME | 定规格的日期时间("yyy-mm-dd hh:mm:ss") |
2. NULL
- NULL意味着这个位置中没有储存数据,而不是“0”
- 在定义属性时后接NOT NULL时,该字段下的所有数据都不能为NULL
- 主键必定为NOT NULL,就算你建表时不加NOT NULL,MySQL也不会接受NULL值被记录到主键字段内
- NULL就是没有数据,他并不能区分该项数据是“未知”的还是“未定义”的
二、表格-数据定义语言(Data Definition Language, DDL)
Tips: 除了字符串变量以外,在默认设置下SQL对大小写完全不敏感,从变量名到指令都是如此,如CREATE和create是完全相同的指令,一般情况下我们约定俗成地将指令部分全部大写来提高可读性。
0. 数据库
好吧,建表之前我们其实需要先创建一个数据库并选中它,有了仓库我们才能放东西
CREATE DATABASE school;
CREATE SCHEMA school;
USE school;
在MySQL中,schema和database是同义词,但在一些SQL操作系统中,二者是被区分的。
你要是不喜欢还可以删掉它
DROP DATABASE school;
另外地,如果你懒得选中某个数据库,你可以在变量名前加上“databaseName.”来调用你想要的数据库,此技巧以后有用。
1. 创造与毁灭(CREATE/DROP)
1)CREATE建表
- 利用create来创建表格格式为:
CREATE TABLE tableName(var1 domain constrain, var2 domain constrain,...);
其中var1,var2 为变量名,domain为数据的类型,constrain为约束条件。
- 另外地,在表格中添加外键的格式为:
FORIEGN KEY (var1) REFERENCES otherTable(var2)
该命令创建了一个var1的外键,他引用自另一个表格中的字段var2作为父键
CREATE TABLE games
(gameID INTEGER NOT NULL PRIMARY KEY,
installSize DECIMAL NOT NULL,
version VARCHAR(50),
releaseDate DATE NOT NULL,
FOREIGN KEY (sales) REFERENCES market(gameSales));
记得写分号。
2)DROP删表
毁灭往往都是一瞬间的事情。
DROP TABLE games;
DROP还会配合下面的ALTER使用,达到删除某个属性的目的,与DELETE不同,涉及DROP的语句往往都比较简单粗暴。
注意:改名对于SQL来说过于复杂,如果你想改名,最好创建一个新的数据库/表格并把原数据拷贝过去,然后把原来的删掉。
2. 调整(ALTER)
单独利用DROP和CREATE只是对表格本身进行创建和删除,而ALTER可以对表格本身进行大体性的调整
1) 增加字段
ALTER TABLE games ADD price DECIMAL;
2) 删除字段
ALTER TABLE games ADD price DECIMAL;
ALTER的使用应适当的减少,以免引起不必要的错误。很多时候使用ALTER只能说明我们在设计这个表格之初并没有做好规划。
三、表格-数据操作语言(Data Definition Language, DDL)
学会了建表删表改表,该往表里放点东西了