ToB企服应用市场:ToB评测及商务社交产业平台

标题: 数据库SQL基础教程(二) [打印本页]

作者: 魏晓东    时间: 2024-10-18 01:34
标题: 数据库SQL基础教程(二)
目录

连接(JOIN)
语法:
差别的 SQL JOIN
 INNER JOIN 关键字
LEFT JOIN 关键字
SQL LEFT JOIN 语法
RIGHT JOIN 关键字
SQL RIGHT JOIN 语法
FULL OUTER JOIN 关键字
SQL FULL OUTER JOIN 语法
UNION 操纵符
SQL UNION 语法
SQL UNION ALL 语法
SELECT INTO 语句
 INSERT INTO SELECT 语句
 CREATE TABLE 语句
SQL CREATE TABLE 语法
 束缚(Constraints)
SQL CREATE TABLE + CONSTRAINT 语法
1. NOT NULL
实例
2. UNIQUE
利用场景
实例
3. PRIMARY KEY
实例
4. FOREIGN KEY
实例
5. CHECK
确保列中的值满足特定的条件。
实例
6. DEFAULT
实例
7. INDEX
用于快速访问数据库表中的数据。
例子
PRIMARY KEY 束缚
 FOREIGN KEY 束缚
CHECK 束缚
 DEFAULT 束缚
 CREATE INDEX 语法
SQL CREATE UNIQUE INDEX 语法
DROP INDEX 语句
DROP TABLE 语句
语法格式:
DATABASE 语句
语法格式:
TRUNCATE TABLE 语句
ALTER TABLE 语句
SQL ALTER TABLE 语法
AUTO INCREMENT 字段

上篇链接:数据库SQL基础教程 (一)_数据库sql利用1-CSDN博客
下篇链接:
连接(JOIN)


SQL join 用于把来自两个或多个表的行团结起来。
下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相干的 7 种用法。

SQL JOIN 子句用于把来自两个或多个表的行团结起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的全部行。
语法:

  1. SELECT column1, column2, ...
  2. FROM table1
  3. JOIN table2 ON condition;
复制代码
参数阐明:

差别的 SQL JOIN

   
   INNER JOIN 关键字

INNER JOIN 关键字在表中存在至少一个匹配时返回行。
   SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
  或:
   SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
  参数阐明:

LEFT JOIN 关键字

LEFT JOIN 关键字从左表(table1)返回全部的行,纵然右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
   SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
  或:
   SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
  注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。

RIGHT JOIN 关键字

RIGHT JOIN 关键字从右表(table2)返回全部的行,纵然左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
   SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
  或:
   SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
  注释:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。


FULL OUTER JOIN 关键字

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)此中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字团结了 LEFT JOIN 和 RIGHT JOIN 的结果。
   SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
  

UNION 操纵符


SQL UNION 操纵符合并两个或多个 SELECT 语句的结果。
UNION 操纵符用于合并两个或多个 SELECT 语句的结果集。它可以从多个表中选择数据,并将结果集组合成一个结果集。利用 UNION 时,每个 SELECT 语句必须具有相同数量的列,且对应列的数据类型必须相似。
UNION 语法

  
  1. SELECT column1, column2, ...
  2. FROM table1
  3. UNION
  4. SELECT column1, column2, ...
  5. FROM table2;
复制代码
UNION 操纵符默认会去除重复的记录,如果需要保留全部重复记录,可以利用 UNION ALL 操纵符。


UNION ALL 语法

   SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2;
  

注释:UNION 结果会合的列名总是即是 UNION 中第一个 SELECT 语句中的列名
SELECT INTO 语句

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
   注意:
  MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。
  固然你可以利用以下语句来拷贝表结构及数据:
  1. CREATE TABLE 新表
  2. AS
  3. SELECT * FROM 旧表
复制代码
表结构

数据库支持

 INSERT INTO SELECT 语句

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
CREATE TABLE 语句

CREATE TABLE 语句用于创建数据库中的表。
表由行和列组成,每个表都必须有个表名。
 CREATE TABLE 语法

   CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
  column_name 参数规定表中列的名称。
data_type 参数规定列的数据类型(比方 varchar、integer、decimal、date 等等)。
size 参数规定表中列的最大长度。

束缚(Constraints)

SQL 束缚用于规定表中的数据规则。
如果存在违背束缚的数据行为,行为会被束缚终止。
束缚可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
CREATE TABLE + CONSTRAINT 语法

  
  1. CREATE TABLE table_name
  2. (
  3.     column_name1 data_type(size) constraint_name,
  4.     column_name2 data_type(size) constraint_name,
  5.     column_name3 data_type(size) constraint_name,
  6.     ....
  7. );
复制代码
在 SQL 中,我们有如下束缚:
   
  1. NOT NULL

确保列不能有 NULL 值。
NOT NULL 束缚逼迫字段始终包罗值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录
例子
   CREATE TABLE Students (
    StudentID INT NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    FirstName VARCHAR(50),
    Age INT
);                                                                         
  2. UNIQUE

确保列中的全部值都是唯一的。
UNIQUE 类似于主键 (PRIMARY KEY) 束缚,但 UNIQUE 束缚允许列中的值为 NULL,而主键不允许。
PRIMARY KEY 束缚自带唯一性(UNIQUE)束缚功能。
利用场景

   
实例
   CREATE TABLE Employees (
    EmployeeID INT NOT NULL UNIQUE,
    LastName VARCHAR(50) NOT NULL,
    FirstName VARCHAR(50),
    Email VARCHAR(100) UNIQUE
);
  3. PRIMARY KEY

唯一标识表中的每一行记录。PRIMARY KEY 束缚是 NOT NULL 和 UNIQUE 的团结。
实例
   CREATE TABLE Orders (
    OrderID INT NOT NULL PRIMARY KEY,
    OrderNumber INT NOT NULL,
    OrderDate DATE NOT NULL
);
  4. FOREIGN KEY

确保一个表中的值匹配另一个表中的值,从而建立两表之间的关系。
实例
   CREATE TABLE Orders (
    OrderID INT NOT NULL PRIMARY KEY,
    OrderNumber INT NOT NULL,
    CustomerID INT,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
  5. CHECK

确保列中的值满足特定的条件。
实例
   CREATE TABLE Products (
    ProductID INT NOT NULL PRIMARY KEY,
    ProductName VARCHAR(100) NOT NULL,
    Price DECIMAL(10, 2) CHECK (Price >= 0)
);
  6. DEFAULT

为列设置默认值。
实例
   CREATE TABLE Customers (
    CustomerID INT NOT NULL PRIMARY KEY,
    LastName VARCHAR(50) NOT NULL,
    FirstName VARCHAR(50),
    JoinDate DATE DEFAULT GETDATE()
);
  7. INDEX

用于快速访问数据库表中的数据。
  
  1. CREATE INDEX idx_lastname ON Employees (LastName);
复制代码
例子
   CREATE TABLE Students (
    StudentID INT NOT NULL PRIMARY KEY,
    LastName VARCHAR(50) NOT NULL,
    FirstName VARCHAR(50) NOT NULL,
    Age INT CHECK (Age >= 18),
    Email VARCHAR(100) UNIQUE,
    EnrollmentDate DATE DEFAULT GETDATE()
);
  通过这些束缚,数据库管理体系可以或许确保数据的同等性、完整性和准确性。
PRIMARY KEY 束缚

PRIMARY KEY 束缚唯一标识数据库表中的每条记录。
PRIMARY KEY 必须包罗唯一的值,且不能包罗 NULL 值。
每个表只能有一个 PRIMARY KEY,该主键可以由单个列或多个列组成。

 FOREIGN KEY 束缚

一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一束缚的键)。

CHECK 束缚

CHECK 束缚用于限制列中的值的范围。
如果对单个列定义 CHECK 束缚,那么该列只允许特定的值。
如果对一个表定义 CHECK 束缚,那么此束缚会基于行中其他列的值在特定的列中对值举行限制。

 DEFAULT 束缚

DEFAULT 束缚用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到全部的新记录。
 CREATE INDEX 语法

在表上创建一个简单的索引。允许利用重复的值:
CREATE INDEX index_name
ON table_name (column_name)
CREATE UNIQUE INDEX

在表上创建一个唯一的索引。不允许利用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。Creates a unique index on a table. Duplicate values are not allowed:
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
注释:用于创建索引的语法在差别的数据库中不一样。因此,检查您的数据库中创建索引的语法。
DROP INDEX 语句

索引是一种优化数据库查询性能的结构,但有时间可能需要删除某个索引,比方当索引不再需要或需要替换为新的索引时。
DROP INDEX 语句用于删除表中的索引。
   DROP INDEX [IF EXISTS] index_name
ON TABLE_NAME;
  参数阐明:

DROP TABLE 语句

DROP TABLE 语句用于删除表。
删除表将同时删除表的结构以及存储在此中的全部数据。因此,在执行DROP TABLE语句之前,请确保您真的渴望永世删除表及其全部数据,因为此操纵是不可逆的。
   DROP TABLE [IF EXISTS] TABLE_NAME;
  参数阐明:

DATABASE 语句

DROP DATABASE 语句用于删除数据库,包罗此中的全部表、视图、存储过程等数据库对象。
DROP DATABASE 是一个非常强大和危险的操纵,因为它会永世删除整个数据库及其全部相干数据,因此在执行之前务须要慎重考虑并确保你真的渴望执行此操纵。
   DROP DATABASE [IF EXISTS] database_name;
  TRUNCATE TABLE 语句

TRUNCATE TABLE语句用于快速删除表中的全部数据,但保留表的结构(列、束缚等)
ALTER TABLE 语句

ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
如需在表中添加列,请利用下面的语法:
   ALTER TABLE table_name
ADD column_name datatype
  如需删除表中的列,请利用下面的语法(请注意,某些数据库体系不允许这种在数据库表中删除列的方式):
   ALTER TABLE table_name
DROP COLUMN column_name
  AUTO INCREMENT 字段

Auto-increment 会在新记录插入表中时生成一个唯一的数字。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4