SQL知识梳理(二)基础语法-增删改

基础语法-增删改

  • 一、增删改
    • 1.创建数据库
    • 2.删除数据库
    • 3.对已存在数据库创建备份
    • 4.备份数据库中自上一次完整的数据库备份后发生变化的部分
    • 5.数据库中创建新表
    • 6.用旧表数据创建新表
    • 7.删除表
    • 8.删除表中数据,不删除表结构
    • 9.mysql中修改表信息的规则
  • 二、约束Constraints
    • 1.NOT NULL保证列没有空值
    • 2.UNIQUE - 保证一列的值是去重的
    • 3.PRIMARY KEY
    • 4.FOREIGN KEY
    • 5.CHECK - 确保一列中的数值满足一个特定的条件
    • 6.DEFAULT - 设置默认值
    • 7.CREATE INDEX - 用于非常快速地创建和检索数据库中的数据

注:SQL知识梳理系列语法均基于mySQL。

一、增删改

1.创建数据库

CREATE DATABASE database_name;

2.删除数据库

DROP DATABASE database_name;

3.对已存在数据库创建备份

BACKUP DATABASE databasename
TO DISK = 'filepath';

4.备份数据库中自上一次完整的数据库备份后发生变化的部分

BACKUP DATABASE databasename
TO DISK = 'filepath'
WITH DIFFERENTIAL;

SQL知识梳理(二)基础语法-增删改_第1张图片

5.数据库中创建新表

DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

SQL知识梳理(二)基础语法-增删改_第2张图片

6.用旧表数据创建新表

CREATE TABLE new_table_name AS
    SELECT column1, column2,...
    FROM existing_table_name
    WHERE ....;

7.删除表

DROP TABLE table_name;

8.删除表中数据,不删除表结构

TRUNCATE TABLE table_name;

9.mysql中修改表信息的规则

1)修改表的列名

alter table 表名 change 原列名 新列名  类型; 

2)修改表的类类型

alter table 表名 modify 列名 类型 ;

3)删除表的某一列

alter table 表名 drop 列名;

4)在x列后添加某一列

alter table 表名 add  列名 类型 after column_x; 

5)修改表名

alter table 表名 rename 新表名;

二、约束Constraints

Constraints can be column level or table level.
约束可以是列层次,也可以是表层次。

Constraints are used to limit the type of data that can go into a table. This ensures the accuracy and reliability of the data in the table. If there is any violation between the constraint and the data action, the action is aborted. 约束用于限制可以放入表中的数据的类型。这确保了表中数据的准确性和可靠性。如果约束与数据操作之间有任何冲突,则该操作将被中止。
Syntax:

CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ....
);

The following constraints are commonly used in SQL:

1.NOT NULL保证列没有空值

SQL知识梳理(二)基础语法-增删改_第3张图片

例,当Persons表已存在时,给Age列的数据类型增加约束-NOT NULL:
SQL知识梳理(二)基础语法-增删改_第4张图片

2.UNIQUE - 保证一列的值是去重的

在创建表时,给列设置约束:
SQL知识梳理(二)基础语法-增删改_第5张图片

当表已存在时,给ID列增加约束UNIQUE:
SQL知识梳理(二)基础语法-增删改_第6张图片

在多列上创建UNIQUE约束,为其创建了索引index:
SQL知识梳理(二)基础语法-增删改_第7张图片

删掉UNIQUE约束=删掉其索引Index:
SQL知识梳理(二)基础语法-增删改_第8张图片

3.PRIMARY KEY

主键是NOT NULL和UNIQUE的组合,唯一地识别表中的每一条记录。
① 创建表时:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);

以多字段作为主键:
In the example there is only ONE PRIMARY KEY (PK_Person). However, the VALUE of the primary key is made up of TWO COLUMNS (ID + LastName).

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);

② 表已存在时:

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

以多列为主键:

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

Note: 如果你使用ALTER TABLE来添加一个主键,主键列必须被声明为不包含NULL值(当表第一次被创建时)。
③ 删除主键

ALTER TABLE Persons
DROP PRIMARY KEY;	

4.FOREIGN KEY

FOREIGN KEY是一个表中的一个字段(或字段的集合),它引用另一个表中的PRIMARY KEY。
具有外键的表称为子表,具有主键的表称为引用表或父表。
FOREIGN KEY约束可以防止无效数据被插入到外键列中,因为它必须是父表中包含的一个值

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

注:Person是父表,Orders是子表

重命名外键:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

当表存在时,创建外键:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

以多列为外键:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

删除外键:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

5.CHECK - 确保一列中的数值满足一个特定的条件

CHECK(condition)
① 建表时:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CHECK (Age>=18)
);

给多列加CHECK:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255),
    CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);

② 给已存在表加CHECK:

ALTER TABLE Persons
ADD CHECK (Age>=18);

给多列加CHECK:

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

③ 删除CHECK:

ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;

6.DEFAULT - 设置默认值

① 建表时设置默认值

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255) DEFAULT 'Sandnes'
);
CREATE TABLE Orders (
    ID int NOT NULL,
    OrderNumber int NOT NULL,
    OrderDate date DEFAULT GETDATE()
);

② 给已存在表设置默认值

ALTER TABLE Persons
ALTER City SET DEFAULT 'Sandnes';

③ 删除默认值

ALTER TABLE Persons
ALTER City DROP DEFAULT;

7.CREATE INDEX - 用于非常快速地创建和检索数据库中的数据

索引用于比其他方法更快地从数据库中检索数据。用户不能看到索引,它们只是用来加速搜索/查询。更新有索引的表要比更新没有索引的表花费更多的时间(因为索引也需要更新)。因此,只在频繁搜索的列上创建索引。
括号里放多个列的话,是create an index on a combination of columns;

① 创建索引:允许重复值

CREATE INDEX index_name
ON table_name (column1, column2, ...);

② 创建去重索引:不允许重复值

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

③ 删除索引

ALTER TABLE table_name
DROP INDEX index_name;

你可能感兴趣的:(数据库,sql,数据库,mysql)