SQL 初级教程

整理自菜鸟教程
基础概念要知道一些:

  1. 创建数据库
    CREATE DATABASE dbname;
  2. 创建表
    CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );
    3.NOT NULL 约束 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录
    CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
  3. UNIQUE 约束唯一标识数据库表中的每条记录。
    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
    PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
    请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
  • 在 “Persons” 表创建时在 “P_Id” 列上创建 UNIQUE 约束
    CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (P_Id) )
  • 命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束
    CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName) )
  • 表已被创建时,如需在 “P_Id” 列创建 UNIQUE 约束,请使用下面的 SQL:
    ALTER TABLE Persons ADD UNIQUE (P_Id)
  • 如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
    ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
  • 撤销 UNIQUE 约束,请使用下面的 SQL
    ALTER TABLE Persons DROP INDEX uc_PersonID
  1. PRIMARY KEY 约束唯一标识数据库表中的每条记录。
    主键必须包含唯一的值。
    主键列不能包含 NULL 值。
    每个表都应该有一个主键,并且每个表只能有一个主键。
  • 在 “Persons” 表创建时在 “P_Id” 列上创建 PRIMARY KEY 约束:CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) )
  • 如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束,请使用下面的 SQL 语法:CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) )
  • 当表已被创建时,如需在 “P_Id” 列创建 PRIMARY KEY 约束,请使用下面的 SQL:
    ALTER TABLE Persons ADD PRIMARY KEY (P_Id)
  • 如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束,请使用下面的 SQL 语法:
    ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)如果您使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)。
  • 如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:
    ALTER TABLE Persons DROP PRIMARY KEY
  1. 在 “Orders” 表创建时在 “P_Id” 列上创建 FOREIGN KEY 约束
    CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) )
    如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法
    CREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) )
    当 “Orders” 表已被创建时,如需在 “P_Id” 列创建 FOREIGN KEY 约束,请使用下面的 SQL:
    ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
    如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:
    ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
    撤销 FOREIGN KEY 约束,请使用下面的 SQL:
    ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders

一、数据库表

  1. use RUNOOB; 命令用于选择数据库。
  2. set names utf8; 命令用于设置使用的字符集。
  3. SELECT * FROM Websites; 读取数据表的信息。
    在这里插入图片描述
  • SQL 对大小写不敏感:SELECT 与 select 是相同的
  • 分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

二、SELECT

  1. 从 “Websites” 表中选取 “name” 和 “country” 列:

SELECT name,country FROM Websites;
在这里插入图片描述

三、SELECT DISTINCT

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。DISTINCT 关键词用于返回唯一不同的值

  1. 仅从 “Websites” 表的 “country” 列中选取唯一不同的值,也就是去掉 “country” 列重复值:

SELECT DISTINCT country FROM Websites;
在这里插入图片描述

四、WHERE

提取那些满足指定条件的记录

  1. 从 “Websites” 表中选取国家为 “CN” 的所有网站
    SELECT * FROM Websites WHERE country='CN';
    在这里插入图片描述

五、文本字段 vs. 数值字段

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
在上个实例中 ‘CN’ 文本字段使用了单引号。
如果是数值字段,请不要使用引号。

SELECT * FROM Websites WHERE id=1;

六、AND & OR

  1. 从 “Websites” 表中选取国家为 “CN” 且alexa排名大于 “50” 的所有网站:

    SELECT * FROM Websites WHERE country=‘CN’ AND alexa >50;
    在这里插入图片描述

  2. 从 “Websites” 表中选取国家为 “USA” 或者 “CN” 的所有客户

    SELECT * FROM Websites WHERE country='CN' OR country='USA';
    在这里插入图片描述

  3. 把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)。
    下面的 SQL 语句从 “Websites” 表中选取 alexa 排名大于 “15” 且国家为 “CN” 或 “USA” 的所有网站:

    SELECT * FROM Websites WHERE alexa>15 AND (country='CN' OR country='USA');
    在这里插入图片描述

七、ORDER BY

1. 升序

  1. 从 “Websites” 表中选取所有网站,并按照 “alexa” 列排序:
    SELECT * FROM Websites ORDER BY alexa;在这里插入图片描述

2.降序

  1. 从 “Websites” 表中选取所有网站,并按照 “alexa” 列降序排序
    SELECT * FROM Websites ORDER BY alexa DESC;
    在这里插入图片描述

3. 多列

  1. 从 “Websites” 表中选取所有网站,并按照 “country” 和 “alexa” 列排序:
    SELECT * FROM Websites ORDER BY country,alexa;在这里插入图片描述

八、INSERT INTO

INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
  1. 向 “Websites” 表中插入一个新行
    INSERT INTO Websites (name,url,alexa,country) values ('百度','http://baidu.com','4','CN');
    在这里插入图片描述

  2. 在指定的列插入数据。
    下面的 SQL 语句将插入一个新行,但是只在 “name”、“url” 和 “country” 列插入数据(id 字段会自动更新):
    INSERT INTO Websites(name,url,country) values ('stackoverflow','http://stackoverflow.com/','IND');

在这里插入图片描述

九、UPDATE

  1. 把 “菜鸟教程” 的 alexa 排名更新为 5000,country 改为 USA。
    2.
    在更新记录时要格外小心!在上面的实例中,如果我们省略了 WHERE 子句,如下所示:
    UPDATE Websites
    SET alexa=‘5000’, country=‘USA’
    执行以上代码会将 Websites 表中所有数据的 alexa 改为 5000,country 改为 USA。
    执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。

十、DELETE

  1. 从 “Websites” 表中删除网站名为 “百度” 且国家为 CN 的网站

DELETE FROM Websites WHERE name='百度' AND country='CN';
在这里插入图片描述
2. 删除所有数据
可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:

DELETE FROM table_name;

DELETE * FROM table_name;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章