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 betweenbetween的反义词,在两个数之外取值
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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

SQL大圣之路笔记——SQL学习笔记

Mybatis学习笔记-动态SQL

SQL学习笔记

Oracle之PL/SQL学习笔记

Oracle之PL/SQL学习笔记

sql注入学习笔记