Database基础_SQL基本句法(MySQL)

〇、垃圾

由于明天就有一次考试了,而我现在还没有对这方面的基础知识有一个系统性的整理,所以我十分焦虑,也正是复习的好时候。可我实在是不知道该怎么给SQL一个比较好的解构,因为刚刚入门,每项分类能写出的东西太少了,总不能从数据类型开始写起吧?

一、MySQL数据类型

1. 常用数据

数据类型 简介
CHAR(n) 长度固定为n的字符串
VARCHAR(n) 长度可变,至长度n的字符串

INTEGER

整数
DECIMAL(m,d) 最多带d位小数点的m位(总长)数字,m>=d
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: 在默认设置下MySQL对大小写完全不敏感字段名、按字母排序(ORDER BY)、指令甚至是字符串内容都是如此,如CREATE和create是完全相同的指令,“Joey”和“JOEY”是完全一样的字符串,一般情况下我们约定俗成地将指令部分全部大写来提高可读性。

 

0. 数据库

  好吧,建表之前我们其实需要先创建一个数据库并选中它,有了仓库我们才能放东西

CREATE DATABASE school;
CREATE SCHEMA school;
USE school;

  在MySQL中,schema和database是同义词,但在一些SQL操作系统中,二者是被区分的。

  你要是不喜欢还可以删掉它

DROP DATABASE school;

  另外地,如果你懒得选中某个数据库,你可以在列表名前加上“databaseName.”来调用你想要的数据库,此技巧以后有用。

 

1. 创造与毁灭(CREATE/DROP

  1)CREATE建表

  i) 自定义新建表格
  • 利用create来创建表格格式为:

   CREATE TABLE tableName(var1 domain constrain, var2 domain constrain,...);

        其中var1,var2 为变量名,domain为数据的类型,constrain为约束条件(如PRIMARY KEY,NOT NULL等,约束条件的声明顺序没有要求)

  • 另外地,在表格中添加外键的格式为:

      FORIEGN KEY (var1) REFERENCES otherTable(var2)

         该命令将一个已存在的var1设置为外键,且他引用自另一个表格中的字段var2作为父键。注意,被引用的父键必须是主键或有唯一约束。

(gameID INTEGER NOT NULL PRIMARY KEY,
 installSize DECIMAL(10,5) NOT NULL,
 version VARCHAR(50),
 releaseDate DATE NOT NULL,
 FOREIGN KEY (releaseDate) REFERENCES market(publicDate));

      记得写分号。

  ii) 复制其他表格数据

  除了自己创建表格,我们还可以使用select在创建表格的同时把select返回的数据直接塞到新表格中:

  CREATE TABLE tableName (AS) SELECT attri1, attri2,...  FROM tableName2;

  就目前看来,有无AS对该语句不造成任何影响。

CREATE TABLE copy as SELECT * FROM games;

  注意:该复制表格数据的方法只会将数据本身填入新表,而原表本身自带的约束无法转移,该方法可用于需要临时处理一些数据的情况,数据迁移时不要使用

  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 DROP price;

  ALTER的使用应适当的减少,以免引起不必要的错误。很多时候使用ALTER只能说明我们在设计这个表格之初并没有做好规划。

  

三、表格-数据操作语言(Data Manipulation Language, DML)

  学会了建表删表改表,该往表里放点东西了

  对于数据定义语言,由于他们所处的层面比较宏观,所以对表格进行操作的时候需要后接TABLE来指定对象是表格,而对于数据操作语言,操作对象都是表格,所以不再需要特定声明了

 

1. 插入数据(INSERT INTO

  向表格内插入数据的句法:

  INSERT INTO tableName VALUES (var1,var2,var3,...);

  该语句向表格内插入了一条记录,其中括号内的数据应按照顺序依次符合建表时创建字段的顺序

 INSERT INTO games VALUES
 (100,512.0,"BETA 2.0","2020-12-11");

 

1.5. 条件筛选(WHERE

  在记录其他命令之前,有必要提前引入WHERE的使用。

  WHERE语句可以筛选符合条件的所有记录,一并处理,如:

  WHERE ID=123,WHERE name="Joey"

 

2. 更新数据(UPDATE

  UPDATE可以更新指定表格中的某项数据,在开启安全模式状态下必须配合WHERE使用且必须以主键为筛选条件

UPDATE games SET installSize=200480.3
WHERE gameID=100;

  记得SET。

 

3. 删除数据(DELETE FROM

  使用DELETE来删掉表中指定的数据,同样需要使用WHERE

DELETE FROM games WHERE gameID=100;

 

4. 使坏

你要是叛逆的话可以关掉安全模式,这样你甚至可以完全不用WHERE,也不用担心唠叨烦人的报错了。

SET SQL_SAFE_UPDATES = 0;
DELETE FROM games;

  1是打开。

 

5. SELECT

 SELECT可以将其从指定列表中筛选出的行输出到窗口上

 SELECT * FROM games;

  在MySQL Workbench上的输出结果:

  其中, *代表全部列,也可以加入指定列来限制输出的字段,该语句后接WHERE等命令可按照要求输出指定记录,SELECT有很庞杂的句法搭配,之后需要单独记录。

 

posted @ 2021-04-09 20:45  JOE_Chin  阅读(113)  评论(0编辑  收藏  举报