admin管理员组

文章数量:1794759

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

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

目录
  • 一、什么是SQL
  • 二、SQL约束
    • 1、主键约束
      • (1)添加主键约束
        • 方式一:创建表时,在字段描述处,声明指定字段为主键
        • 方式二:创建表时,在constraint约束区域,声明指定字段为主键
        • 方式三:创建表之后,通过修改表结构,声明指定字段为主键
      • (2)删除主键约束
    • 2、自动增长列
    • 3、不同指令删除表的过程
    • 4、非空约束
      • (1)添加非空约束
        • 方式一:创建表时,在字段描述处,声明指定字段为非空约束
        • 方式二:修改表时
      • (2)删除非空约束
    • 5、唯一约束
      • (1)添加唯一约束
        • 方式一:创建表时,在字段描述处,声明唯一
        • 方式二:创建表时,在约束区域,声明唯一
        • 方式三:创建表后,修改表结构,声明字段唯一:
      • (2)删除唯一约束
    • 6、默认约束
      • (1)添加默认约束
      • (2)删除默认约束
  • 三、便捷操作

一、什么是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图形化工具给提供了更便捷的方式来设定,以后还会学到,这里先了解一下

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

本文标签: 语句入门mySQLSQLdatagrip