sql学习笔记
Posted ACheng63201
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql学习笔记相关的知识,希望对你有一定的参考价值。
学习笔记(针对mysql)
!!! SQL对大小写不敏感
SQL数据库操作
类型 | 含义 | 语法 |
---|---|---|
create database | 创建数据库 | CREATE DATABASE database_name |
create table | 创建一张表 | CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, … ) |
insert into…values | 向表中插入一条信息 | INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…) |
delete from | 从表中删除一条信息 | UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 |
update…set…where | 在where的位置,更新内容为set的值 | UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 |
drop table | 删除表 | DROP TABLE 表名称 |
truncate | 清空表中内容 | TRUNCATE TABLE 表名称 |
alter table…add | 向表中添加某个属性 | ALTER TABLE table_name ADD column_name datatype |
alter table…drop | 删除某个属性 | ALTER TABLE table_name DROP COLUMN column_name |
SQL语句基本类型
类型 | 含义 |
---|---|
char(n) | 存放固定长度的字符串,用户指定长度为n。如果没有使用n个长度则会在末尾添加空格。 |
varchar(n) | 可变长度的字符串,用户指定最大长度n。 |
int | 整数类型 |
smallint | 小整数类型 |
numeric(p,d) | 定点数,精度由用户指定。这个数有p位数字(包括一个符号位)d位在小数点右边。 |
real ,double precision | 浮点数和双精度浮点数。 |
float(n) | 精度至少位n位的浮点数 |
SQL约束
类型 | 含义 | 用法 |
---|---|---|
primary key | 主键 | primary key(字段名) |
foreign key references | 外键 | foreign key(字段名) references 外键表 |
not null | 不为空 | 字段属性 not null |
unique | 唯一标识 | unique(字段名) |
check | 限制列中的值的范围 | check(字段值限制) |
DEFAULT | 向列中插入默认值 | DEFAULT 默认值 |
SQL单表查询操作
类型 | 含义 | 语法 |
---|---|---|
select | 要查找表所含有的属性 *代表全部 | SELECT 列名称 FROM 表名称||SELECT * FROM 表名称 |
from | 要操作的表 | |
where | 判断条件(可使用操作符) | SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 |
and | 在where后使用:将判断条件连接起来 | |
or | 在where中使用:判断条件多选一 | |
not | 在where中使用:not表示判断条件相反 | |
like | 在where中使用:搜索列中的指定模式与通配符一起使用,可使用正则表达式 | SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern |
in | 在where中使用:规定多个值 | SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…) |
between | 在where中使用between…and…表示一个数在两个数值之间取值 | SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 |
not between | between的反义词,在两个数之外取值 | |
union/union all | 将两个SQL语句做并运算,并且自动去重,添加all表示不去重 | SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 |
intersect/intersect all | 将两个SQL语句做交运算,并自动去重,添加all表示不去重 | |
except/except all | 将两个SQL语句做差运算,并且自动去重,添加all表示不去重 | |
is null | 在where中使用is null表示这个值是空值 | |
is not null | 在where中使用is not null表示这个值不是空值 |
SQL多表操作:
类型 | 含义 | 语法 |
---|---|---|
A,B | 在from后面通过逗号连接多张表,表示将这些表进行笛卡尔积运算 | |
left join | 左外连接,以左边为基准进行连接,右边没有的用NULL代替 | SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
right join | 右外连接,以右边为基准进行连接,左边没有的用NULL代替 | SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
full join | 全然外连接,将两表完全合并,没有的用NULL代替 | SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
join/inner join | 内连接,只连接两表皆有,其他删除 | SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
corss join | 交叉连接,结果为两表的笛卡尔积 | |
A join B using© | 将A和B通过c属性自然连接 |
SQL返回结果操作:
类型 | 含义 | 语法 |
---|---|---|
order_by | 根据指定的列对结果集进行排序(默认升序) | |
limit | 限制查询结果条数 | SELECT column_name(s) FROM table_name LIMIT number |
desc | 在排序后使用,表示采用降序 | |
asc | 在排序后使用,表示采用升序 | |
distinct | 去重 | SELECT DISTINCT 列名称 FROM 表名称 |
all | 不去重 |
SQL聚合函数
类型 | 含义 | 语法 |
---|---|---|
avg | 平均值 | SELECT AVG(column_name) FROM table_name |
min,max | 最小,大值 | SELECT MIN(column_name) FROM table_name |
first,last | 第一,最后一个个记录的值 | SELECT FIRST(column_name) FROM table_name |
ucase,lcase | 字段的值转换为大写,小写 | SELECT UCASE(column_name) FROM table_name |
mid | 文本字段中提取字符 | SELECT MID(column_name,start[,length]) FROM table_name |
len | 文本字段中值的长度 | SELECT LEN(column_name) FROM table_name |
round | 数值字段舍入为指定的小数位数 | SELECT ROUND(column_name,decimals) FROM table_name |
now | 当前的日期和时间 | SELECT NOW() FROM table_name |
format | 字段格式化 | SELECT FORMAT(column_name,format) FROM table_name |
sum | 总和 | |
count | 计数 | SELECT COUNT(column_name) FROM table_name |
group by | 将在group by上取值相同的信息分在一个组 | SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name |
having | 对group by产生的分组进行筛选,可以使用聚和函数 | SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value |
以上是关于sql学习笔记的主要内容,如果未能解决你的问题,请参考以下文章