SQL学习笔记(MySQL为例)

这篇博客详细介绍了SQL在MySQL中的应用,包括关系数据模型的概念,如关系、元组、属性和主键,以及DDL(数据定义语言)操作如创建、修改和删除数据库与表。还涉及了DML(数据操纵语言),如插入、更新、删除记录,以及DQL(数据查询语言)的使用,如SELECT语句。此外,讲解了索引、视图、存储过程以及条件判断语句等内容,是学习MySQL SQL语法的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关系数据模型
关系(Relation):一个关系对应通常说的一张表
元组(Tuple):表中的一行即为一个元组
属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名
主键(Key):表中的某个属性组,它可以唯一确定一个元组
域(Domain):属性的取值范围
分量:元组中的一个属性值
DDL
create
create database 数据库名 default character set 字符集 collate 校对集
注:数据库名称不能重复,不能出现除字母、数字和下划线以外的字符,不能超过30个字符,不能与系统关键字冲突
use 数据库名
创建名为class16的数据库,并查看


查看MySQL支持的字符集命令:SHOW CHARACTER SET
查看MySQL字符集支持的校对集命令:SHOW COLLATION


create table 表名(属性(数据类型) 约束) engine=表类型 default charset=字符集
常用数据类型:int/float/varchar/date/time
注:varchar 必须要有字符串长度
primary key 主键约束:能够唯一标识一行的属性组
foreign key 外键约束:A表中的属性是另外一个B表中能够唯一确定一行记录的键,这个属性就称为A表的外键,其中B表被称为主表或外表,A表称为从表
on delete/on update cascade/set null/no action
unique 唯一约束
not null 非空约束
null 空值约束
注:如果同一个属性有多个约束,中间使用空格分隔开
show tables :查看所有创建的表
desc 表名 : 查看表的属性
创建表student


alter
alter database 数据库名 deault character set 字符集 collate 校对集
修改字符集,一般对数据库的修改就是修改字符集


alter table 表名 add 属性名 数据类型(约束)
增加age 属性


alter table 表名 modify 属性名 数据类型(约束)
将age 属性数据类型修改为tinyint


注:modify 用于修改属性数据类型,而change可修改属性名称
alter table 表名 change 属性原名 属性新名 数据类型(约束)
将age 属性改名为age1,数据类型修改为int


alter table 表名 drop 属性名
删除属性age1


当表中只有一个属性id,进行删除



注:如果表中只有一个属性,不允许删除
alter table 表名 add constraint 约束别名 约束
为name添加唯一约束


注:不能用此命令添加非空约束可使用modify
alter table 表名 drop 约束
注:无法用drop删除唯一约束,唯一约束也是索引,用index 关键字删除



alter table 表名 rename to 新表名
修改表student为student666


rename table 原表名 to 新表名
修改表student666为student


drop
drop database 数据库名称
删除数据库class16;



drop table 表名
删除表student


DML
insert
insert into 表名(属性1,属性2,······)values(值1,值2······)
只向


值与属性要一一对应,数据类型要匹配,满足属性约束
不指定属性时默认向表中所有属性插入数据
insert into 表名1(属性1,….) select 表名2.属性1,…. from 表名2
update
update 表名 set 属性1=新值1,属性2=新值2·······where条件子句
修改周舟为周洲


注:where 条件子句很重要
delete
delete from 表名 where 条件子句
删除id为2006612的记录


truncate
truncate 表名 :删除表中的数据
插入数据,用truncate 删除



truncate比delete速度快,且使用的系统和事务日志资源少,原理不同,但是如果是误删,不可恢复,慎用
DQL
select
select 属性1,属性2,······from 表名
通配符:* 代表所有,可使用 * 代表查询表中所有列
查询student表中所有信息


限定查询
where字句


比较运算符
= 、> 、 >= 、 < 、 <= 、 <>/!=


between ···and···在两值之见(包含)
注意:包含两值,等效于 id>=18 and id<=19


in(list)匹配列出的值
注:in括号内的值是一个满足条件的集合,不是一个范围,如此例中并没有2006619,等效于or


like 匹配一个字符模式


is null 匹配空值
通配符:% 代表若干个字符; _代表一个字符
逻辑运算符 :and(&&) or(||) not(!)
!在使用时后面() 不能省略
在where字句中日期格式20160301 不用引,日期格式"2016-03-01" 要用引号
字符串不区分大小写
distinct 去重复


as 设置别名,可以省略


order by 排序
向student表中插入grade 属性和数据,然后按分数排序



可指定多个属性
desc 降序 descend
asc 升序 ascend
group by 分组
对查询结果按指定属性分组进行统计
聚合函数
count
avg
sum
max
min
having 在分组后进行进一步限定,常和group by 一起使用
增加stu_group属性,并以此分组求各组平均分,并取整



limit 参数 :限定查询返回的记录数


如果有一个参数,该参数表示从表开始位置查询对应的记录数量
如果有两个参数,那么第一个参数表示起始位置与第一行的偏移量,第二个参数表示查询的数量
特别注意:有两个参数时,参数不可括起来
函数
char_length() 返回x字符数
concat(str1,str2)将字符串str1,str2连接起来
curdate():返回当前日期
curtime() :返回当前时间
now() :返回当前日期和时间
last_day(x) :返回日期x所在月份最后一天
date_add(x,interval n f) :返回日期x加上间隔时间n 的结果,f可以是day,month,year
round(x): 四舍五入返回x的整数部分
round(x,y):对x精确到小数点后y位的结果
if(expr,x,y) :expr 成立,返回x,否则返回y
select 表1.属性,表2.属性 from 表1,表2 where 表1.属性=表2.属性 and 限定子句


select 表1.属性,表2.属性 from 表1 inner join 表2 on 表1.属性=表2.属性 where 限定子句


select 表1.属性,表2.属性 from 表1 left join 表2 on 表1.属性=表2.属性 where 限定子句
返回左表全部记录和右表符合匹配条件记录
select 表1.属性,表2.属性 from 表1right join 表2 on 表1.属性=表2.属性 where 限定子句
返回右表全部记录和右表符合匹配条件记录
子查询


将一个SELECT语句A使用(嵌套)于另外一个SELECT语句B中,则A即为B中的子查询
子查询一定要使用括号括起来
多行子查询用 in
(select语句)union(select语句) 合并结果
默认去除重复
不去重复用union all
intersect 取交集
minus 取差集(oracle)
index
create index 索引名 on 表名(参数)
show index from 表名


注:在指定primary key 后,会自动给主键创建索引,所以可以查看到两个索引
drop index 索引名 on 表名


view
create view 视图名 as select语句


show table status where comment=“view”
alter view 视图名 as select语句
create or replace view 视图名称 as select语句
drop view 视图名
删除视图


procedure
create procedure 存储过程名(参数列表) 程序体


参数列表每一个参数由输入输出类型、参数名称、数据类型构成
输入 in 输出 out 输入输出 inout
程序体以 begin 开始,end 结束
call 存储过程名称(参数列表) : 调用存储过程
into 传递数据给输出参数
declare
declare 变量名 变量类型 default 默认值
变量的作用范围是begin end 程序体中
变量赋值方法:set 变量名=值;select 属性 into 变量名 from 表名
show procedure status
查看所有的存储过程


show create procedure 存储过程名
查看某个具体存储过程


drop procedure 存储过程名


if 语句
if 条件1 then ··· elseif 条件2 then··· else··· end if
注意:if 和 end if成对出现
case 语句
case 变量 when 值1 then ··· when 值2 then··· else··· end case
注意:case 和 end case成对出现
while 语句
while 条件 do ··· end while
使用while 循环向student表插入大量数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值