admin管理员组文章数量:1794759
MySQL入门(5)——基于datagrip的SQL语句学习
目录
- 一、什么是SQL
- 二、SQL约束
- 1、主键约束
- (1)添加主键约束
- 方式一:创建表时,在字段描述处,声明指定字段为主键
- 方式二:创建表时,在constraint约束区域,声明指定字段为主键
- 方式三:创建表之后,通过修改表结构,声明指定字段为主键
- (2)删除主键约束
- 2、自动增长列
- 3、不同指令删除表的过程
- 4、非空约束
- (1)添加非空约束
- 方式一:创建表时,在字段描述处,声明指定字段为非空约束
- 方式二:修改表时
- (2)删除非空约束
- 5、唯一约束
- (1)添加唯一约束
- 方式一:创建表时,在字段描述处,声明唯一
- 方式二:创建表时,在约束区域,声明唯一
- 方式三:创建表后,修改表结构,声明字段唯一:
- (2)删除唯一约束
- 6、默认约束
- (1)添加默认约束
- (2)删除默认约束
- 三、便捷操作
上一篇没有细说什么是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图形化工具给提供了更便捷的方式来设定,以后还会学到,这里先了解一下
比如右击【表】,选择【新建】,选择【表】 出现下图,可以根据自己的要求进行选择搭建,很方便快捷 参考资料
版权声明:本文标题:MySQL入门(5)——基于datagrip的SQL语句学习 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687063640a130895.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论