常用的6中数据类型
INT | DECIAML(m,n) | VARCHAR(n) | BLOB | DATE | TIMESTAMP |
整型 | m:总共几位,n小数占几位 | 字符串,最多能存放n个字符 | binary large object,像图片影片等
| 日期 --YYYY/MM/DD | --YYYY/MM/DD HH:MM:SS 记录时间 |
CREATE DATABASE `sql_tutorial`;
# 创建数据库,使用反引号将命名包起来,可以避免和关键字冲突 #
CREATE DATABASE `database`; SHOW DATABASES;
# 显示数据库内容 #
DROP DATABASE `database`;
# 删除数据库
USE `sql_tutorial`; CREATE TABLE `student`( `student_id` INT PRIMARY KEY, `name` varchar(20), `major` varchar(20) );
# 插入数据
INSERT INTO `student` VALUES(1,"小白","历史");
# 列出全部资料
SELECT * FROM `student`; INSERT INTO `student` VALUES(2,"小黑","生物"); INSERT INTO `student` VALUES(3,"小绿",NULL);
# 不按照默认属性添加属性值 INSERT INTO `student`(`name`,`major`,`student_id`) VALUES("小蓝",'英语',4);
INSERT INTO `student`(`major`,`student_id`) VALUES('英语',5);
增减属性
ALTER TABLE `student` ADD gpa DECIMAL(3,2); | 使用add添加属性,前面使用 |
ALTER TABLE `student` DROP COLUMN gpa; | DROP OLUMN 属性名 |
限制
NOT NULL | 属性值不能为空 |
UNIQUE | 属性不能重复 |
DEFAULT “默认值“ | 设置默认值 |
AUTO_INCREMENT | 创建唯一标识符,通常用于创建主键,默认从1开始 |
修改数据
Drop | 删除表格或数据库 |
Delete from 表名 | 删除属性,一般搭配where语句 |
Insert into 表名 | 插入 |
update | 更新 |
Insert into | 将一张表的数据插入另一张表中 |
获取资料
Select 属性 from 表名 order by 属性1,属性2 [DESC]; // DESC:分别根据属性1和属性2逆序排名,默认是升序
Limit 数字 :限制返回的数据数量
in():相当于好几个or,只要某个属性在in中有出现就能选择
distinct:列出所有不重复的属性值
聚合函数
count() | avg() | sum() | min() | max() |
计数函数 | 求平均数 | 求和函数 | 求最小值 | 求最大值 |
在count(*)时,null值会计数,其他情况则不会 |
|
|
|
|
正则表达式
使用关键字 ` like` 触发
% | _ |
多个字符 | 单个字符 |
联集
union() | join(连接) on 条件 | Left join on 条件 | Right join on 条件 |
属性个数和类型需相同 | 连接两个表格 | 不论on之后的条件是否成立左边的表格都会返回 | 同理 |
日期函数
GETDATE() | DATEADD(interval, number, date) | DATEDIFF(interval, date1, date2) | DATEPART(interval, date) |
获取当前日期和时间 | 按照指定的时间间隔(如 | 计算两个日期之间指定时间间隔的差值 | 提取日期中的特定部分,如年、月、日等 |
Case when关键字
语法
Case when 条件表达式 then 结果表达式 as
when 条件表达式 then 结果表达式 as
else then as
end as
having语句
在 SQL 中,HAVING 子句主要用于对分组后的数据进行筛选。
它与 WHERE 子句有一定相似性,但作用的阶段不同。WHERE 子句在对数据进行分组之前筛选行,而 HAVING 子句是在分组操作完成后,对分组的结果进行条件过滤。
通常与聚合函数(如 SUM、AVG、COUNT 等)结合使用,来确定哪些分组满足特定的条件。
例如,要找出某个表中按照某个字段分组后,分组内数据满足特定聚合条件的分组,可以使用 HAVING 子句。
这样可以更灵活地对分组数据进行有条件的筛选和分析。
Grant
1.GRANT 赋于权限 常用的系统权限集合有以下三个: CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理) 常用的数据对象权限有以下五个: ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSERT ON 数据对象名, ALTER ON 数据对象名 GRANT CONNECT, RESOURCE TO 用户名; GRANT SELECT ON 表名 TO 用户名; GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;
REVOKE REVOKE 回收权限 REVOKE CONNECT, RESOURCE FROM 用户名; REVOKE SELECT ON 表名 FROM 用户名; REVOKE SELECT, INSERT, DELETE ON表名 FROM 用户名1, 用户名2
执行顺序
集合运算符
转载链接:https://www.itheima.com/news/20230816/143017.html
游标
DECLARE cursor_name CURSOR FORSELECT column1,
column2 FROM table_name; OPEN cursor_name;
FETCH NEXT FROM cursor_name INTO @variable1, @variable2; WHILE @@FETCH_STATUS = 0BEGIN
-- 在此处进行对每行数据的处理操作
FETCH NEXT FROM cursor_name INTO @variable1, @variable2;ENDCLOSE cursor_name;
DEALLOCATE cursor_name;
视图
创建视图
查询视图
正则表达式
用户定义的函数
在不同的数据库中不可以直接使用,仅可在定义的数据库中调用,只有数据库的内置标准函数可以在不同数据库中使用。
字符串函数
DML(数据操纵语言(Data Manipulation Language))
COALESCE
select into和insert into的区别
stuff函数
round和truncate函数
round | truncate |
round(表达式,保留位数) | truncate(表达式,保留位数)) |
会进行四舍五入 | 直接截断 |
count和sum函数易错点
count函数会对非null值都计数,而sum函数时,0和null都不会改变求和结果
例子
如计算姓氏人数时,下列表达式就错误,0和1都会参与计数,因此计算的是总行数
而sum函数时null函数不会改变求和结果,所以计算的和是正确的,并不会发生报错
length函数易错点
首先length函数,对于null值的计算返回结果为null,而如果是‘’这种空字符,计算长度则为0
values和value的区别
总结values用于插入多行或一行值,而value用的很少,几乎不考虑使用value进行插值
power函数和mod函数
mod | 取余函数 | mod(a,b),Mod(a,b) 意思是 a / b 的余数 |
power | 幂函数 | power(a,b),a的b次方 |
4种事务隔离级别
select @@global.tx_isolation,@@tx_isolation;
图片截图转载链接:https://www.cnblogs.com/vipstone/p/16422573.html