SQL基本语句

创建数据库

在存储数据之前,我们需要先创建数据库,创建数据库使用

create database 数据库名称;

在这里插入图片描述

查看数据库

创建完数据库,我们可以使用

show databases

来查看所有数据库。
在这里插入图片描述

使用数据库

要创建表前,我们需要先使用数据库,使用数据库使用

use 数据库名称;

在这里插入图片描述

删除数据库

在发现数据库没有价值的时候,我们可以使用

drop database 数据库名称;

删除数据库。(慎用)
在这里插入图片描述

创建数据表

创建数据表使用

create table 表名(
字段名1 数据类型 [约束条件:主键/自增/非空/唯一/默认值],
字段名1 数据类型 [约束条件:主键/自增/非空/唯一/默认值],
[约束条件:主键/外键]
);

约束条件

SQL中有6种约束条件,分别为主键,外键,自增,非空,唯一,默认值

主键 PRIMARY KEY

PRIMARY KEY 约束唯一标识数据库表中的每条记录,主键中必须包含唯一的值,而且包含 NULL 值,每个表都应该有一个主键,且每个表只能有一个主键。主键可以在创建字段时候直接在字段后直接定义,也可以在所有字段的最后定义.例如我们要创建班级表,其中id为主键:

creat table classes(
cid int primary key,
cname varchar(10),
);
creat table classes(
cid int,
cname varchar(10),
primary key(id)
);

外键 FOREIGN KEY

FORREIGN KEY用于将多个表关联在一起,一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。例如我们创建学生表,其中的班级id之间与班级表中的班级关联.

create table students(
sid int primary key,
sname varchar(10),
cid int,
foreign key(cid) references classes(cid)
);

自增AUTO_INCREMENT

AUTO_INCREMENT会在新记录插入表中时自动生成一个在上条记录的基础上增加1的记录。

creat table classes(
cid int auto_increment,
cname varchar(10),
primary key(id)
);

非空 NOT NULL

NOT NULL 限制该字段不能为null ,否则就会报错.

creat table classes(
cid int not null,
cname varchar(10),
primary key(id)
);

唯一 UNIQUE

UNIQUE限制该字段不能出现重复值,包括null,否则就会报错.

creat table classes(
cid int,
cname varchar(10) unique,
primary key(id)
);

默认值 DEFAULT

DEFAULT在插入记录,该字段为null时,自动添加一个默认值.

creat table classes(
cid int,
cname varchar(10) default '无名氏',
primary key(id)
);

展示表格

想要查看所有表格,可以使用

show tables;

在这里插入图片描述

查看表格字段数据类型

查看表格字段数据类型可以使用

desc 表名;

在这里插入图片描述

删除表格

删除表格可以使用

drop table 表名;

在这里插入图片描述

修改表格名称

修改表格名称可以使用

alter table 表名 rename 新表名;

在这里插入图片描述

修改字段名

修改字段名称使用

alter table 表名 change 字段名 新字段名 数据类型 [约束条件:自增/非空/默认值][位置first/after]

在这里插入图片描述

修改字段类型

修改字段类型使用

alter table 表名 modify 字段名 数据类型 [约束条件:自增/非空/默认值][位置first/after]

在这里插入图片描述

增加字段

alter table 表名 add 字段名 数据类型 [约束条件:自增/非空/默认值][位置first/after]

在这里插入图片描述

删除字段

alter table 表名 drop 字段名;

在这里插入图片描述

插入数据

insert into 表名([字段名]) values(1,2...);

在这里插入图片描述

查询数据

select 字段1,字段2...聚合函数/*[as 别名/别名] from 表名; 

在这里插入图片描述

查询不重复的数据

select distinct 字段1,字段2.../*[as '别名'/'别名'] from 表名; 

空值查询

select 字段1,字段2... from 表名 where 字段 is [not] null;

模糊查询

select 字段1,字段2.... from 表名 where 字段 [not] like '...通配符';

排序

select 字段1,字段2... from 表名 order by 字段1 [asc/desc],字段2[asc/desc]...;

限制数量

select 字段1,字段2... from 表名 limit [偏移量],行数;

分组

select 聚合函数1 as 别名1, 合函数2 as 别名2,... from 表名 group by 字段1,字段2...;

合并查询

SQL的连接方式有外连接和内连接,其中左表为主表,如果值为空,则显示为null,内连接时无主副表之分,只显示两表联结字段相等的行.

左连接(外连接)
select 字段1,字段2,... from 表名1 left join 表名2 on1.key=biao2.key;
右连接(外连接)
select 字段1,字段2.... from 表名1 right join 表名2 on1.key=2.key;
内连接
select 字段1,字段2... from 表名1 inner join 表名2 on1.key=2.key;
笛卡尔积连接
select * from1,2 where1.key=2.key
自连接
slect 字段 from1 as t1 left join1 as t2 on t1.key=t2.key;

联合查询

去重联合查询
select 字段 from1 union select 字段 from2;
不去重联合查询
select 字段 from1 union all select 字段 from2;
子查询

子查询是说一个select 中有多个select
子查询有[not] in, any和all操作符

操作符说明
[not] in在\不在其中
any任何一个
all所有

更新数据

update 表名 set 字段1=1,字段2=2,... where 条件;
# %表示多个字符,_表示1个字符

在这里插入图片描述
还可以更新字段下的所有记录,例如公司对全体员工进行加薪200,那可以使用

update employee set salary=salary+200;

删除数据

delete from 表名 where 条件;

在这里插入图片描述

truncate classes;

truncate是执行删除一张表,再重新创建一张一样的表,执行速度比delete快.
进行全部删除或更新数据时,需要取得数据库更新权限

set sql_safe_updates=0;

聚合函数

函数说明
avg()平均值
count()计数
max()最大值
min()最小值
sum()求和

*所有聚合函数都会忽略null

常用函数

函数说明
abs(数值)返回绝对值
bin()返回数值的二进制 oct()返回8进制,hex()返回16进制
cancat(字符串1,字符串2,…)将字段拼接为一个字符串,如果有一个值为null那么返回空字符串
instr(str,substr)返回substr再str中第一次出现的位置
left(str,len)从左开始截取长度为len的字符串
right(str,len)从右开始截取长度为len的字符串
mid(str,pos,len)从左第pos位开始截取长度为len的字符串
substring(str,start,len)从左第start位开始截取长度为len的字符串
replace(str,from_str,to_str)从左第start位开始截取长度为len的字符串
ltrim(str,from_str,to_str)返回删除左空格的字符串
rtrim(str,from_str,to_str)返回删除右空格的字符串
trim(str,from_str,to_str)返回删除左右空格的字符串
repeat(str,count)返回由count字符组成的字符串
reverse(str)颠倒字符串str的顺序并返回
upper(str)返回str所有大写
lower(str)返回str所有小写
round(n,num)四舍五入小数点,小数点后保留num位小数,没有指定第二个参数保留0为小数
floor(n)返回地板数
rand()返回随机数
date(date)返回指定日期或将文本转换为日期
week(date,num)返回是一年中的第几周,num指定从第几开始计算
month(date)返回月份
year(date)返回年份
day(date)返回日
quarter(date)放回季度
date_add(date,interval expr type)加日期
adddate(date,interval expr type)加日期
date_sub(date,interval expr type)减日期
subdate(date,interval expr type)减日期
date_format(date,格式化)格式化日期
datediff(date,date)返回2个日期相差的天数
curdate()当前日期
curtime()当前时间
now()当前日期时间
unix_timestamp(date)返回一个unix时间戳,从“1970-01-01 00:00:00”开始的秒数
from_unixtime(unix_timestamp)以“yyyy-mm-dd hh:mm:ss”格式转换时间戳函数
group_cancat([distinct] str [order by str asc/desc] [separator])将group by分组后的值连接起来,返回一个字符串结果
group_count([distinct] str)将group by分组后的值统计起来
ifnull(expr,alt value)如果expr为null 则返回alt value
isnull(expr)如果expr为null ,返回true,否则返回false
ifnull(expr,alt value)如果expr为null 则返回alt value
if(expr,ture,false)根据判断,返回true 或者false的内容,逻辑表达式case … when … then… else… end
开窗函数名([字段名]) over([partition by 字段名] [order by [字段名] asc/desc][滑动窗口])滑动窗口有几种指定方式,通常使用beteween frame_start and frame_end来表示范围,共有几种关键字 current row 当前行;unbounded preceding 分区中的第一行; unbounded following 分区中的最后一行;expr preceding 分区中的当前行减去expr的值;expr following 分区中的当前行加上expr的值
-rank()排名,重复间断的序号
-dense_rank()分区排名,重复不间断的序号
-row_number()分区中排名,不重复不间断的序号
-percent_rank()排名,出现排名相同的下个排名继续排名
-cume_dist()排名,出现排名相同的下个排名继续排名
-lag()排名,出现排名相同的下个排名继续排名
-lead()排名,出现排名相同的下个排名继续排名
-first_value()返回分区内第一个值
-last_value()返回分区内最后一个值
-nth_value()返回分区内最后一个值
-nfile()返回分区内最后一个值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值