1、SQL概述
1.1 字面解释
structured--结构化的
query--查询
language--语言
1.2 一些概念常识
关系型数据库--RDBMS
精度—整体长度 标度—小数长度
char—定长,性能好 varchar—变长,性能较差
编写顺序:
select—from—where—group by—having—order by—limit
运行顺序:
from—where—group by—having—select—order by—lmit
注意:null值不参与聚合函数运算
2、SQL分类
2.1 DDL(数据定义语言)
Definition--定义 用于定义数据库对象(增删改查)
2.1.1 数据库操作
1、创建数据库:create database (if not exits) 数据库名;<!--数据库名可由字母、数字、下划线组成-->
2、查看数据库:show databases;
3、查看指定数据库的创建信息:show create database 数据库名;
4、选择数据库:use 数据库名;
5、查看当前处于的数据库:select database();
6、删除数据库:drop database (if exits) 数据库名;
2.1.2 表操作
1、创建数据表:create table (if not exits) 表名 (字段 字段类型,字段 字段类型......);
2、查看数据表:show tables;
3、 查看表结构字段信息:desc/describe 表名;<!--所有字段-->
desc/describe 表名 字段名;<!--指定字段-->
4、查看数据表的创建语句:show create table 表名;
5、修改数据表名:alter table 旧名 rename to/as 新名;
rename table 旧名 to 新名, 旧名2 to 新名2;
6、修改字段名:alter table 表名 change 旧字段名 新字段名 字段类型;<!--包括修改字段类型-->
7、修改字段类型:alter table 表名 modify 旧字段名 新字段类型;
8、新增字段:alter table 表名 add 新字段名 字段类型;
9、删除字段:alter table 表名 drop 字段名;
10、查看表结构:show colums from 表名 from库名 / 库名.表名;
11、删除数据表:drop table (if exits) 表名1,表名2;
2.2 DML(数据操作语言)
Manipulation--操作 对数据库的表中的数据进行增删改
1、添加数据:insert into 表名 (字段1,字段2....) values (值1,值2.....) [,(值1,值2,....)...];
2、修改数据:update 表名 set 字段1 = 值1,字段2=值2,......[where 条件表达式];
3、删除数据:delete from 表名 [where 条件表达式];
2.3 DQL(数据查询语言)
Query--查询 用于查询数据库表中的记录
格式:
select
(distinct-去重)字段列表 字段名 [as] 别名
from
表名
where
条件列表 >、 >=、 <、 <=、 <>、 like、between...and、in、and、or
分组前过滤
group by
分组字段列表
having
分组后条件列表 分组后过滤
order by
排序字段列表 升序ASC,降序DESC
limit
分页参数; 起始索引(从0开始),每页展示记录数
limit m,n ==从第m条记录展示n条记录
2.4 DCL(数据控制语言)
Control--控制 用于创建数据库用户、控制数据库的访问权限
2.4.1 用户管理
1、创建用户:create user ‘用户名’@‘主机名’ identified by ‘密码’;
2、修改用户密码:alter user ‘用户名’@‘主机名’ identified with mysql_native_password by '密码'; <!--%表示任意主机-->
3、删除用户:drop user '用户名'@'主机名';
2.4.2 权限控制
1、查询权限:show grants for '用户名'@'主机名';
2、授予权限:grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
3、撤销权限:revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
2.4.3 权限列表
all,all privileges:所有权限
select:查询数据
insert:插入数据
update:修改数据
delete:删除数据
alter:修改表
drop:删除数据库/表/视图
create:创建数据库/表
3、函数
3.1 字符串函数
concat(s1,s2.....sn):字符串拼接,s1,s2...sn拼接成一个字符串
lower(str):将字符串str全部转为小写
upper(str):将字符串str全部转为大写
LPAD(str,n,pad):左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str,n,pad):右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str):去掉字符串头部和尾部的空格
SUBSTRING(str,start,len):放回从字符串str从start位置起的len个长度的字符串
3.2 数值函数
CELL(x):向上取整
FLOOR(x):向下取整
MOD(x,y):返回x/y的模
RAND():返回0~1内的随机数
ROUND(x,y):求参数x四舍五入的值,保留y位小数
3.3 日期函数
CURDATE():返回当前日期
CURTIME():返回当前时间
NOW():返回当前日期和时间
YEAR(date):获取指定date的年份
MONTH(date):获取指定date的月份
DAY(date):获取指定date的日期
DATE_ADD(date,INTERVAL expr type) :返回一个时期/时间值加上一个时间间隔expr后的时间值
DATEDIFF(date1,date2):返回起始时间date1到结束时间date2之间的天数
3.4 流程函数
IF(value,t,f):如果value为true,返回t,否则返回f
IFNULL(value1,value2):如果value1不为空,返回value1,否则返回value2
CASE WHEN [val1] THEN [res1] ....ELSE [default] END:如果val1为true,返回res1,...否则返回default默认值
CASE [expr] WHEN [val1] THEN [res1] ...ELSE [default] END:如果expr值为cal1,返回res1,否则返回default默认值
4、约束
1、非空约束:NOT NULL
2、唯一约束:UNIQUE
列级:字段名 字段类型 unique
表级:unique(字段1,字段2.......)
3、默认约束:DEFAULT 默认值
4、检查约束:CHECK
5、主键约束:PRIMARY KET(自增:AUTO_INCREMENT)
列级:字段名 字段类型 primary key
表级:primary key(字段1,字段2......)
6、外键约束:FOREIGN KEY
列级:字段名 字段类型 references 主码所在表名(字段名)
表级:foreign key (字段1,字段2,....)
删除外码约束:alter table 表名 drop foreign key 外码名;
5、复制
复制表结构:create table (if not exits) 表名 like 旧表名;
复制表数据:insert into 表名 [(字段列表)] select [(字段列表)] from 旧表名;
一次性复制:create table 表名 as select * from 旧表名;
6、多表查询
1、联合查询:select......
union(all) 不加all则去除完全重复的记录
select.......;
2、交叉连接(笛卡尔积):select 字段 from 表1
cross join 表2
(where 表1.字段 = 表2.字
3、内连接
隐式:select 字段 from 表1,表2
(where 表1.字段 = 表2.字段);
显式:select 字段 from 表1
(inner) join 表2 on 匹配条件;
4、外连接
左外:select 字段 from 表1
left join 表2
on 匹配条件; 表1为主表,表2为从表
右外:select 字段 from 表1
right join 表2
on 匹配条件;
5、自连接:select .......from 表1 别名1,表1 别名2 where .....;
6、子查询 = 嵌套查询 <!--先执行子查询,即圆括号( )里面的内容-->
2111

被折叠的 条评论
为什么被折叠?



