SQL基础

1.1 SQL简介

当我们在与数据库进行交互时,需要使用SQL语言。SQL是Structure Query Language,即结构化查询语言的缩写,它是由蓝色巨人IBM公司在上世纪70年代开发出来,作为关系数据库原型System R的原型关系语言,进行信息检索。而通过美国国家标准局(ANSI)对其标准的定制,使其作为标准关系数据库语言的地位得到加强,逐渐发展成为多种平台进行交互操作的底层会话语言。

1.2 SQL分类

SQL语句主要可以划分为以下3个类别:
(1)DDL(Data Definition Language)语句:数据定义语言,数据库定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字包括create、drop、alter等;
(2)DML(Data Manipulation Language)语句:数据操纵语句,用于增删改查数据,并检查数据的完整性。常用的语句关键字包括insert、delete、update、select等。
(3)DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户访问权限和安全级别。常用的语句关键字包括grant、revoke等。
下面分别做详细介绍:

1.2.1 DDL语句

该语句是对数据库内部的对象进行操作。它与DML语句的最大区别是DML只是对表内部数据操作,而不涉及表的定义和结构的修改等。DDL语句更多的是由数据库管理员(DBA)使用,开发人员一般很少使用。
(1)创建数据库:`CREATE DATABASE name1`;
(2)查看存在的数据库:`show database`;
(3)操作数据库:`use name1`;
(4)查看该数据库中的表:`show tables`;
(5)删除数据库:`drop database name1`;
(6)创建表:`CREATE TABLE tablename1(
			column_name_1  column_type_1  constraints,
			column_name_2  column_type_2  constraints,
			...
			column_name_n  column_type_n  constraints)`;
(7)查看表定义:DESC tablename1  或  show create table tablename1 \G;
(8)删除表:`drop table tablename1`;
(9)修改表:
	a.修改表类型:`ALTER TABLE tablename MODIFY[COLUMN] column_definition [FIRST|AFTER col_name]`;
	b.增加表字段:`ALTER TABLE tablename ADD[COLUMN] column_definition [FIRST|AFTER col_name]`;
	c.删除表字段:`ALTER TABLE tablename DROP[COLUMN] col_name`;
	d.字段改名:`ALTER TABLE tablename CHANGE[COLUMN] old_col_name column_definition[FIRST|AFTER col_name]`;
	e.更改表名:`ALTER TABLE tablename RENAME[TO] new_tablename`;

1.2.2 DML 语句

(1)插入记录:`INSERT INTO tablename(field1,field2,...,fieldn) VALUES(value1,value2,...,valuen)`;
(2)批量插入:`INSERT INTO tablename(field1,field2,...,fieldn)
VALUES
(record1_value1,...,record1_valuen),
(record2_value1,...,record2_valuen)`;
(3)更新记录:`UPDATE tablename SET field1=value1,field2=value2,...,fieldn=valuen[WHERE CONDITION]`;
(4)同时更新多个表中数据:`UPDATE t1,t2,...,tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]`;
(5)删除记录:`delete from tablename [where condition]`;
(6)删除多表记录:`delete t1,t2,...,tn from t1,t2,...,tn [where condition]`;  注意:如果from后面的表用别用名,则delete后面也要用相应的别名,否则会提示语法错误。
(7)查询记录:`select * from tablename [where condition]`;
(8)去掉重复:用distinct关键字实现;
(9)排序和限制: order by ,DESC 降序 , ASC 升序 ,limit;
(10)聚合:`select [filed1,field2,...,fieldn] fun_name from tablename [where where_condition] [group by field1,filed2,...,filedn [with rollup]] [having where_condition]`;  说明:fun_name:表示要做的聚合操作(聚合函数),如sum,count(*) ,max,min;  group by:表示要进行分类聚合的字段;with rollup:表明是否对分类聚合后的结果进行再汇总;  注意:having 和 where 的区别在于,having 是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤。
(11)表连接:当需要同时显示多个表中的字段时,就可以用表连接实现这样的功能。表连接分为内连接和外连接,它们之间最主要的区别是,内连接仅选出两张表中相互匹配的记录,而外连接会选出其他不匹配的记录。外连接又分为左连接和右连接,左连接包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录;右连接包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。
(12)子查询:某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候,就要用到子查询。用于子查询的关键字包括in,not in,=,!=,exists,not exists;
(13)记录联合:我们经常会碰到这样的应用,将两个表的数据按照一定的查询条件查询出来后,将其结果合并到一起显示出来。语法如下:`select * from t1 union|union all select * from t2 ... union|union all select * from tn `;  注意:union 和 union all 的主要区别是 union all 是把结果集直接合并到一起,而 union 是将 union all 后的结果进行一次distinct,去重后的结果。

1.2.3 DCL语句

DCL语句主要是DBA用来管理系统中的对象权限时使用。简单介绍如下:
(1)创建一个数据库用户z1,具有对sakila 数据库中所有表的select/insert权限:`grant select,insert on sakila.* to 'z1'@'localhost' identified by '123'`;
(2)由于权限变更,需要将z1的权限变更,收回insert,只能对数据进行select操作:`revoke insert on sakila.* from 'z1'@'localhost'`;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

STEINWAY_PG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值