文章目录
SQL_别名
- 使用 SQL,可以为表名称或列名称指定别名(Alias)。
- SQL 别名用于为表或表中的列提供临时名称,数据库中的实际表名不会更改。
- SQL 别名通常用于使列名更具可读性。
- SQL 一个别名只存在于查询期间。
- 表别名的使用是在特定SQL语句中重命名表。
- 列别名用于为特定SQL查询重命名表的列。
设置列别名语法:
SELECT column_name AS alias_name
FROM table_name;
WHERE [condition];
为Java1_student中的name设置别名为n
SELECT name as n
FROM Java1_student;
SQL语句创建一个名为“stu”的别名,它包含四列(id,name,sex,and sex):
SELECT id, name+ ', ' + sex+ ', ' + City + ', ' + sex AS stu
FROM student;
设置表别名语法
SELECT column_name(s)
FROM table_name AS alias_name;
WHERE [condition];
选择Java1_studenth和Java2_student中,年龄相等的所有学生id,name,sex。使用“Java1_student”和“Java2_student”表,给它们分别为“s1”和“s2”的表别名
SELECT DISTINCT s1.id,s1.name,s1.sex
FROM Java1_student AS s1, Java2_student AS s2
WHERE s1.age = s2.age
ORDER BY s1.id;
SQL_约束
- 约束是作用于数据表中列上的规则,用于限制表中数据的类型。约束的存在保证了数据库中数据的精确性和可靠性。
- 约束有列级和表级之分,列级约束作用于单一的列,而表级约束作用于整张数据表
常见的约束
-
NOT NULL 约束
:保证列中数据不能有 NULL 值 -
DEFAULT 约束
:提供该列数据未指定时所采用的默认值 -
UNIQUE 约束
:保证列中的所有数据各不相同 -
主键约束
:唯一标识数据表中的行/记录 -
外键约束
:唯一标识其他表中的一条行/记录 -
CHECK 约束
:此约束保证列中的所有值满足某一条件 -
索引
:用于在数据库中快速创建或检索数据 -
约束可以在创建表时规定(
通过 CREATE TABLE 语句
),或者在表创建之后规定(通过ALTER TABLE 语句
)
SQL_常见约束
NOT NULL 约束强制列不接受 NULL 值。
-
NOT NULL
约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
-
对已经创建的表进行添加
NOT NULL
约束,删除NOT NULL
约束(其实就是改成NULL)
UNIQUE 约束
UNIQUE 约束
唯一标识数据库表中的每条记录。UNIQUE 和 PRIMARY KEY
约束均为列或列集合提供了唯一性的保证。PRIMARY KEY
约束拥有自动定义的UNIQUE
约束。- 每个表可以有多个
UNIQUE
约束,但是每个表只能有一个PRIMARY KEY 约束
。
撤销约束
语法
ALTER TABLE 表名
DROP INDEX 约束列名
PRIMARY KEY 约束
- PRIMARY KEY 约束唯一标识数据库表中的每条记录。
- 主键必须包含唯一的值。主键列不能包含
NULL
值。 - 每个表都应该有一个主键,并且每个表只能有一个主键。
在创建表时使用PRIMARY KEY 设置主键
SQL_撤销PRIMARY KEY约束
- 撤销
PRIMARY KEY
约束时,不论约束条件为一列还是多列, - 由于
PRIMARY KEY
唯一性,撤销约束比较简单
撤销约束主键约束
ALTER TABLE 表名
DROP PRIMARY KEY
SQL_索引
-
索引是一种特殊的查询表,可以被数据库搜索引擎用来加速数据的检索。简单说来,索引就是指向表中数据的指针。数据库的索引同书籍后面的索引非常相像。例如,如果想要查阅一本书中与某个特定主题相关的所有页面,你会先去查询索引(索引按照字母表顺序列出了所有主题),然后从索引中找到一页或者多页与该主题相关的页面。
-
索引能够提高
SELECT
查询和WHERE
子句的速度,但是却降低了包含UPDATE
语句或INSERT
语句的数据输入过程的速度。索引的创建与删除不会对表中的数据产生影响。 -
创建索引需要使用
CREATE INDEX
语句,该语句允许对索引命名,指定要创建索引的表以及对哪些列进行索引,还可以指定索引按照升序或者降序排列。 -
同
UNIQUE
约束一样,索引可以是唯一的。这种情况下,索引会阻止列中(或者列的组合,其中某些列有索引)出现重复的条目。
SQL_CREATE INDEX(创建索引)
CREATE INDEX
语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。- 可以在表中创建索引,以便更加快速高效地查询数据。用户无法看到索引,它们只能被用来加速搜索/查询。
- 注意更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。**
在表上创建一个简单索引,允许使用重复的值。
CREATE INDEX 索引名
ON 表名(被创建索引的列名)**
在class表上创建name的索引n,此时索引值名不唯一
创建一个唯一值的索引:
- 在表上创建一个唯一的索引。不允许使用重复的值:
- 唯一的索引意味着两个行不能拥有相同的索引值。
语法
CREATE UNIQUE INDEX 索引名
ON 表名(列名);
**注意:**用于创建索引的语法在不同的数据库中不一样。因此,需要检查的数据库中创建索引的语法。
创建多个列的索引:
- 如果索引不止一个列,可以在括号中列出这些列的名称,用逗号隔开:
语法
CREATE INDEX 索引名
ON 表名 (列名1,列名2);
SQL 撤销索引、表以及撤销数据库
撤销索引:
DROP INDEX
语句用于删除表中的索引。DROP INDEX table_name.index_name
修改索引名
ALTER TABLE 表名 INDEX 索引名
;(删除索引时要使用ALTER TABLE修改表
)
删除表:DROP TABLE table_name ;
删除数据库:DROP DATABASE data_name;
仅仅删除表中的数据而不删除表本身:TRUNCATE TABLE table_name
SQL_ALTER TABLE (修改表)
ALTER TABLE
语句用于在现有表中添加、删除或修改列。
向已经存在的表中添加列:
语法
ALTER TABLE table_name
ADD column_name datatype
向已经存在的 Persons 表中添加 phone 列
ALTER TABLE Persons
ADD phone varchar(255);
删除表中的列
语法
ALTER TABLE table_name
DROP COLUMN column_name
删除 Persons 表中的 City 列
ALTER TABLE Persons
DROP COLUMN City
改变数据类型实例
修改 Persons 的 phone 数据类型为 int
ALTER TABLE Persons
ALTER COLUMN phone int;
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
您可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。
1、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。
2、视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)
3、从而加强了安全性,使用户只能看到视图所显示的数据。
4、视图还可以被嵌套,一个视图中可以嵌套另一个视图。
语法
CREATE VIEW 视图名 AS
SELECT 列名
FROM 表名
WHERE 条件;
注释:视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据。
在这里 你的视图名不能和已经创建的别名相同,我这里就是相同了,视图名换成ag就可以运行了
**删除已经创建的索引名,
ALTER TABLE 表名 DROP INDEX 索引名**
查新视图
select * from 视图名;
更新视图;
CREATE OR REPLACE VIEW 视图名 AS
SELECT 列名
FROM 表名
WHERE 条件
我们将Student中的学生姓名和id,性别更新到视图中;
删除视图:DROP VIEW 视图名;
当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。
只要您的数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间部分,情况就有点复杂了。
在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。
语法
SELECT 函数1(),函数2();
如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。NULL 值代表遗漏的未知数据。
默认地,表的列可以存放 NULL 值。
NULL 值的处理方式与其他值不同。
NULL 用作未知的或不适用的值的占位符。
Note注释:无法比较 NULL 和 0;它们是不等价的。
SQL(内建函数,HAVING 子句,EXISTS 运算符)笔记
SQL 拥有很多可用于计数和计算的内建函数。
AVG() - 返回平均值
SELECT AVG(列名) FROM 表名;
COUNT() 函数返回匹配指定条件的行数。COUNT() 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT() FROM table_name;*
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
**SELECT COUNT(DISTINCT 列名) FROM table_name;
FIRST() 函数返回指定的列中第一个记录的值。**
LAST() 函数返回指定的列中最后一个记录的值。
MAX() - 返回最大值
SELECT MAX(列名) FROM table_name;
MIN() - 返回最小值
SELECT MIN(指定列) FROM 表**名;
SUM() - 返回总和
SELECT MIN(指定列) FROM 表名;
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
SELECT 列名 函数名(列名)
FROM 表名
WHERE 条件
GROUP BY 根据分组的列名;
HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。
SQL HAVING 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。
SQL EXISTS 语法
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
MID() - 从某个文本字段提取字符,MySql 中使用
SubString(字段,1,end) - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
SELECT LEN(column_name) FROM table_name;
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式