MySQL入门(5)——基于datagrip的SQL语句学习

一、什么是SQL

上一篇没有细说什么是SQL,但在一些实操后可以更加清晰的明白其含义

SQL其实就是一种结构化查询语言(Structured Query Language)简称SQL

是一种特殊目的的编程语言,是一种数据库查询和程序设计语言

SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。

可以实现:

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

最重要的 SQL 命令:

SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

二、SQL约束

SQL 约束用于规定表中的数据规则

如果存在违反约束的数据行为,行为会被约束终止

约束可以在创建表时规定(通过 CREATE TABLE 语句)

或者在表创建之后规定(通过 ALTER TABLE 语句)

在 SQL 中,有如下约束:

NOT NULL      #指示某列不能存储 NULL 值。
UNIQUE        #保证某列的每行必须有唯一的值。
PRIMARY KEY   #NOT NULL 和 UNIQUE 的结合。
              #确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY   #保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK         #保证列中的值符合指定的条件。
DEFAULT       #规定没有给列赋值时的默认值。

正式学习前先建一个表(不理解的看上一章内容)

CREATE TABLE persons (
pid int,
lastname varchar(255),
firstname varchar(255),
address varchar(255)
);
insert into persons values(1, '星驰','周','香港');
insert into persons values(1, '德华','刘','香港');
insert into persons values(2, '德华','刘',null);
insert into persons values(null, '润发','周','香港');

建好是这样的:
在这里插入图片描述

1、主键约束

PRIMARY KEY 约束

主键必须包含唯一的值, 不能重复。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。

(1)添加主键约束

方式一:创建表时,在字段描述处,声明指定字段为主键

格式:

字段名 数据类型[长度] PRIMARY KEY
CREATE TABLE persons (
pid int primary key,       #此处添加了主键约束,则pid为主键
lastname varchar(255),
firstname varchar(255),
address varchar(255)
);

在上面的基础上添加了主键约束,在执行下面的语句时就会有出错:

INSERT INTO persons VALUES(1, '星驰','周','香港');
INSERT INTO persons VALUES(1, '德华','刘','香港');     #此时设置主键后, 插入失败, 因为pid的值重复
INSERT INTO persons VALUES(2, '德华','刘',NULL);
INSERT INTO persons VALUES(NULL, '润发','周','香港');  #设置主键后, 插入失败, 因为值不能为 NULL

在这里插入图片描述
在这里插入图片描述

方式二:创建表时,在constraint约束区域,声明指定字段为主键

格式:

[constraint 名称] primary key (字段列表)

关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用。
字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。
声明两个以上字段为主键,称为联合主键。

像上面那种情况还可以在约束区域设置主键:

CREATE TABLE persons (
pid int,
lastname varchar(255),
firstname varchar(255),
address varchar(255),
constraint pk_persons primary key (pid) # 添加主键约束, 单一字段
);

另外可以在约束区域设置联合主键:

CREATE TABLE persons (
pid INT,
lastname VARCHAR(255),
firstname VARCHAR(255),
address VARCHAR(255),
CONSTRAINT pk_persons PRIMARY KEY (lastname, firstname) # 添加主键约束, 多个字段, 称为联合主键。
);

此时再执行下面语句则会出现新的错误:

insert into persons values(1, '星驰','周','香港');
insert into persons values(2, '德华','刘',null);
insert into persons values(1, '德华','刘','香港'); # 插入失败

在这里插入图片描述

方式三:创建表之后,通过修改表结构,声明指定字段为主键

格式:

 ALTER TABLE 表名 ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)
CREATE TABLE persons (
pid int,
lastname varchar(255),
firstname varchar(255),
address varchar(255)
);
alter table persons add constraint pk_persons primary key (lastname, firstname);

在这里插入图片描述
在添加完第26行命令后可见金钥匙图标
在这里插入图片描述

(2)删除主键约束

如需删除 PRIMARY KEY 约束则输入命令的格式为:

 ALTER TABLE 表名 DROP PRIMARY KEY

将下列命令执行:

alter table persons drop primary key;

金钥匙没有了
在这里插入图片描述

2、自动增长列

通常希望在每次插入新记录时,数据库自动生成字段的值

也就是每输入一行的时候不用自己定义它是第几行,而是让它自动添加每行的序号

可以在表中使用 auto_increment(自动增长列)关键字

自动增长列类型必须是整形

自动增长列必须为键(通常是用于主键)

下列 SQL 语句把 “persons” 表中的 “pid” 列定义为 auto_increment 主键

格式:

字段名 整数类型[长度][约束] auto_increment
CREATE TABLE persons (
pid INT PRIMARY KEY AUTO_INCREMENT,   #添加关键字
lastname VARCHAR(255),
firstname VARCHAR(255),
address VARCHAR(255)
);

向persons添加数据时,可以不为pid字段设置值,也可以设置成null,数据库将自动维护主键值:

insert into persons(lastname, firstname, address) values('富成','郭','香港');
insert into persons(pid,lastname, firstname, address) values(null,'龙','成','香港');

执行结果如下:
在这里插入图片描述
当重复执行insert into persons(pid,lastname, firstname, address) values(null,'龙','成','香港');这条语句时,会自动生成序号:
在这里插入图片描述
当我再执行一次这个insert into persons(pid,lastname, firstname, address) values(10,'龙','成','香港');指令时,看序号:
在这里插入图片描述
不指定就自动排序,指定了就显示你指定的序号

扩展:默认AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,使用下列 SQL语法

 alter table persons auto_increment=100;

在这里插入图片描述
在这里插入图片描述

3、不同指令删除表的过程

delete: 表中记录一条一条删除

auto_increment 计数不会重置为1; 新记录添加时在原有计数基础上+1

truncate: 直接将表删除,重新创建新表

4、非空约束

NOT NULL 约束:

列不接受 NULL 值。
要求字段始终包含值。
这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

下面的 SQL 语句要求 “lastname” 列和 “firstname” 列不接受 NULL 值:

(1)添加非空约束

方式一:创建表时,在字段描述处,声明指定字段为非空约束

格式:

字段名 数据类型[长度] NOT NULL
CREATE TABLE persons (
pid INT PRIMARY KEY AUTO_INCREMENT,
lastname VARCHAR(255) not null,
firstname VARCHAR(255) not null,
address VARCHAR(255)
);

在这里插入图片描述

方式二:修改表时

格式:

ALTER TABLT <表名> MODIFY [COLUMN] <列名> <数据类型> NOT NULL;

比如尝试执行则可限定persons表中的firstname数据不可以为空:

 ALTER TABLE persons MODIFY firstname varchar(255) NOT NULL ;

(2)删除非空约束

格式:

ALTER TABLE 表名 MODIFY 字段名 数据类型[长度]

取消以上的约束:

alter table persons modify lastname varchar(255);
alter table persons modify firstname varchar(255);

5、唯一约束

UNIQUE 约束就是指定列的值不能重复
注意
1、UNIQUE 和 PRIMARY KEY 约束均为列提供了唯一性的保证。PRIMARY KEY 是自动定义的 UNIQUE 约束。
2、每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
3、UNIQUE 不限制 null 值 出现的次数

(1)添加唯一约束

与主键添加方式相同,共有3种

方式一:创建表时,在字段描述处,声明唯一

格式:

字段名 数据类型[长度] UNIQUE

在这里插入图片描述

方式二:创建表时,在约束区域,声明唯一

格式:

[constraint 名称] UNIQUE (字段)

在这里插入图片描述

方式三:创建表后,修改表结构,声明字段唯一:

格式:

ALTER TABLE 表名 ADD [CONSTRAINT 名称] UNIQUE (字段)

在这里插入图片描述

(2)删除唯一约束

删除 UNIQUE 约束,SQL格式:

ALTER TABLE 表名 DROP INDEX 名称
alter table persons drop index uni_address; -- 有唯一约束名称, 使用约束名称删除
alter table persons drop index address; -- 没有唯一约束名称, 使用字段名删除

6、默认约束

default 约束:
用于指定字段默认值。
当向表中插入记录时,如果没有明确的为字段赋值,则自动赋予默认值。

(1)添加默认约束

在创建表时候添加格式:

字段名 数据类型[长度] DEFAULT 默认值
CREATE TABLE persons (
pid INT,
lastname VARCHAR(255),
firstname VARCHAR(255),
address VARCHAR(255) DEFAULT '香港' -- 添加默认约束
);
INSERT INTO persons(pid,lastname, firstname, address) VALUES(1,'富成','郭','北京');
INSERT INTO persons(pid,lastname, firstname) VALUES(2,'龙','成'); -- 使用address的默认值
INSERT INTO persons(pid,lastname, firstname, address) VALUES(3,'润发','周',NULL);

运行上面内容可的结果:
在这里插入图片描述

(2)删除默认约束

格式:

ALTER TABLE 表名 MODIFY 字段名 数据类型[长度]

删除约束:

ALTER TABLE persons MODIFY address VARCHAR(255);

删除约束以后再输入:

INSERT INTO persons(pid,lastname, firstname) VALUES(2,'论文','写'); 

会发现不会再在地址上默认为“香港”而成为空
在这里插入图片描述

三、便捷操作

其实以上语句有时候记不住是正常的,datagrip图形化工具给提供了更便捷的方式来设定,以后还会学到,这里先了解一下

比如右击【表】,选择【新建】,选择【表】
在这里插入图片描述
出现下图,可以根据自己的要求进行选择搭建,很方便快捷
在这里插入图片描述
参考资料

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值