MySQL基础语法

MySQL基础语法

一、SQL基础理解

 SQL是用于管理关系数据库管理系统(RDBMS)。
 SQL的适用范围:数据的增删查改,数据库模式创建和修改,数据访问控制。
 SQL 指结构化查询语言,全称是 Structured Query Language。
 SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。

二、SQL能做什么?

 SQL 面向数据库执行查询
 SQL 可从数据库取回数据
 SQL 可在数据库中插入新的记录
 SQL 可更新数据库中的数据
 SQL 可从数据库删除记录
 SQL 可创建新数据库
 SQL 可在数据库中创建新表
 SQL 可在数据库中创建存储过程
 SQL 可在数据库中创建视图
 SQL 可以设置表、存储过程和视图的权限

三、SQL基础语句

  1. use RUNOOB; 命令用于选择数据库。
  2. set names utf8; 命令用于设置使用的字符集。
  3. SELECT DISTINCT 语句用于返回唯一不同的值。
  4. SELECT TOP 50 PERCENT * FROM Websites; 从 websites 表中选取前面百分之 50 的记录
  5. SELECT * FROM Websites WHERE name REGEXP '^[GFs]'; 选取 name 以 “G”、“F” 或 “s” 开始的所有网站([GFs]为正则表达式,[GFs]标识不以这些字符开头,在这里表示“非”的意思)
  6. Between A and B(A<=x<=B);not Between A and B (x<A或x>b)
  7. 如果列名称包含空格,要求使用双引号或方括号
  8. 在这里插入图片描述
  9. A left join B on A.XX = B.XX and B.XXX= ‘XXX’中on的作用:用来关联A与B的关联关系以及过滤出符合条件的B表记录
  10. 左连接:
    在这里插入图片描述
    右连接:
    在这里插入图片描述
    全连接:
    在这里插入图片描述
    连接(内连接):
    在这里插入图片描述
  11. UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
  12. 向A表中插入B表中一些符合条件的数据:
Insert into A(字段1, 字段2, 字段3, 字段4, 字段5, 字段6, 字段7)
Select B.字段1, B.字段2, B.字段3, B.字段4, B.字段5, B.字段6, B.字段7 
from B

约束

  1. 在 SQL 中,我们有如下约束:
    NOT NULL - 指示某列不可以存储 NULL 值。

  1. 在一个已创建的表的 “Age” 字段中添加 NOT NULL 约束如下所示:
ALTER TABLE Persons MODIFY Age INT NOT NULL;
  1. 在一个已创建的表的 “Age” 字段中删除 NOT NULL 约束如下所示:
ALTER TABLE Persons MODIFY Age INT NULL;

UNIQUE - 保证某列的每行必须有唯一的值。

  1. PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
  2. 每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
  3. 单列约束(在 “P_ID” 列上创建 UNIQUE 约束)创建:
    MYSQL => UNIQUE (P_ID)
    SQL Server / Oracle / MS Access => P_ID INT NOT NULL
  4. UNIQUE修改:
ALTER TABLE Persons ADD UNIQUE (P_ID)
  1. 多列约束(在表字段1、字段2列上创建UNIQUE 约束):
    新建:
    CONSTRAINT 新的约束名称 UNIQUE (表字段1,表字段2)
    修改:
ALTER TABLE Persons ADD CONSTRAINT新的约束名称
UNIQUE (表字段1,表字段2)
  1. 撤销UNIQUE约束:
    MySQL => ALTER TABLE Persons DROP INDEX 约束字段名称
    SQL Server / Oracle / MS Access
    => ALTER TABLE Persons DROP CONSTRAINT约束字段名称

PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。

  1. 确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  2. 使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时),其他除了关键字皆与UNIQUE一致

FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

  1. FOREIGN KEY 约束用于预防破坏表之间连接的行为。
    FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
  2. 创建FOREIGN KEY约束(单列):
    MySQL => FOREIGN KEY (ID) REFERENCES Persons(外键字段)
    SQL Server / Oracle / MS Access:
    => ID INT FOREIGN KEY REFERENCES Persons(外键字段)
  3. 创建FOREIGN KEY约束(多列):
CONSTRAINT FK_NEW_NAME FOREIGN KEY (本表主键字段)
REFERENCES Persons(外表主键字典)
  1. 撤销FOREIGN KEY约束:
    MySQL => ALTER TABLE Orders DROP FOREIGN KEY FK_NEW_NAME
    SQL Server / Oracle / MS Access:
    => ALTER TABLE Orders DROP CONSTRAINT FK_NEW_NAME
  2. 在创建表的时候指定外键约束
CREATE TABLE 表名
    (
        column1 datatype null/not null,
        column2 datatype null/not null,
        CONSTRAINT 外键约束名 FOREIGN KEY  (column1,column2,... column_n)
        REFERENCES 外键依赖的表 (column1,column2,...column_n)
        ON DELETE CASCADE--级联删除
    );
  1. 在创建表后增加外键约束
ALTER TABLE 表名
    ADD CONSTRAINT 外键约束名
    FOREIGN KEY (column1, column2,...column_n) 
    REFERENCES 外键所依赖的表 (column1,column2,...column_n)
    ON DELETE CASCADE;--级联删除
  1. MySql 中如何删除未命名的外键?
    删除外键需要知道外键的名称,如果创建时没有设置名称则会自动生成一个,你需要获取改外键的信息。
    使用以下命令获取外键信息:
SELECT constraint_name FROM
  information_schema.REFERENTIAL_CONSTRAINTS
WHERE
  constraint_schema = <'db_name'> AND table_name = <'table_name'>;
SELECT * FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  constraint_schema = <'db_name'> AND table_name = <'table_name'> AND
  referenced_table_name IS NOT NULL;

可以使用以下命令来删除外键:

ALTER TABLE <table_name> DROP INDEX <fk_name>;

CHECK - 保证列中的值能符合指定的条件。

单列:CHECK (P_ID>0);

ALTER TABLE Persons ADD CHECK (P_ID>0)

多列:CONSTRAINT chk_Person CHECK (P_ID>0 AND City=‘XX’);

ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (P_ID>0 AND City='Sandnes')

撤销CHECK约束:
单列:ALTER TABLE Persons DROP CONSTRAINT chk_Person
多列:ALTER TABLE Persons DROP CHECK chk_Person


DEFAULT - 规定没有给列赋值时的默认值。

添加:

city varchar(255) default ‘abc’  or  orderDate date default GETDATE()

修改:
Mysql:

Alter table 表名 alter city set default ‘city’

SQL Server、MS Access:

Alter table表名add constraint 别名 default ‘abc’ for city

Oracle:

Alter table表名modify city default ‘abc’

撤销:
MySQL:

Alter table表名alter city drop default

SQL Server / Oracle / MS Access:

Alter table 表名 alter column city drop default

  1. 创建t_zhyq_base_dict_bak表并将t_zhyq_base_dict的结构与数据同步过去
    create table t_zhyq_base_dict_bak as SELECT * from t_zhyq_base_dict

  2. 索引分类(https://blog.csdn.net/qjl4646795/article/details/103552196):
    逻辑分类:
    创建主键索引:Alter table表名add primary key add(id)
    创建唯一索引:Alter table表名add unique(username)
    创建普通索引:Alter table表名add index INDEX_NAME(username)
    创建全文索引:Alter table表名add FULLTEXT (username)
    物理分类:
    聚集索引、非聚集索引

CREATE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME)
CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME)
CREATE INDEX PINDEX ON PERSONS (LASTNAME)
CREATE INDEX PINDEX ON PERSONS (LASTNAME, FIRSTNAME)
  1. Alter table table_name drop column column_name (删除)
    Alter table table_name add column column_name (添加)
    Alter table table_name drop index index_name (删除)
    Alter table table_name alter/modify column column_name column_type (修改)
  2. 查看数据表类型可以使用 SHOW TABLE STATUS 语句。
SHOW TABLE STATUS LIKE 'testalter_tbl'\G
  1. 修改数据表的名称(A改成B)
mysql> ALTER TABLE A RENAME TO B;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值