2023年8月3日发(作者:)

SQL基本⽤法本⽂主要是对sql常⽤操作做个简单介绍Sql:结构化查询语⾔,是⼀种特殊⽬的的编程语⾔,是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库系统。主要介绍sql语⾔的四个分类DDL:数据定义语⾔,⽤来定义数据库对象:库,表,列等DML:数据库操作语⾔,⽤来定义数据库记录(数据)增删改DCL:数据库控制语⾔,⽤来定义访问权限和安全级别DQL:数据库查询原,⽤来查询记录(数据)⼀、数据库DDL**数据库操作:**1、创建CREATE DATABASE 数据库名称;2、查看show databases;3、修改数据库alter database 数据库名 character set 编码⽅式4、删除数据库drop database 数据库名5、其他语句查看当前使⽤的数据库select database()切换数据库

use 数据库名**表操作:**数据类型:int/double/char(固定长度字符串)/varchar(可变长度字符串)/text/blob(字节类型,保存⽂件信息)/date(⽇期)/time(时间)/timestamp(时间戳类型)/datetime(⽇期时1、创建表create table 表名( id int, name varchar(5), sex char(2))2、查看表 -表信息 desc 表名3、数据表修改 增加列: alter table 表名 add 列名 (image) 数据类型 (blob) 修改列 : alter table 表名 change 列名 新列名 新的数据类型 删除列: alter table 表名 drop 列名 修改表名:alter table 旧表名 rename 新表名4、查看创建表的细节show create table 表名5、修改表的字符集alter table 表名 character set 编码⽅式⼆、表数据增删改DML1、插⼊:insertinsert into 表名(列名) values(值)当给所有列添加数据的时候,可以省略列名,且需要按照表中的列的顺序插⼊值添加多⾏insert into 表名(列名) values(值),(值2),(值3);列名与列值的类型,个数,顺序要⼀⼀对应参数值不要超出列定义的长度如果插⼊空值,请使⽤null插⼊的⽇期和字符⼀样,都是⽤引号括起来2、修改update 表名 set 列名1=列值1,列名2=列值2 wherer 列名 = 值;update 表名 set 列名1=列值1 修改该列所有值update 表名 set 列名1=列值 +增值 //当前列的值增减3、删除delete from 表名 [where 列名=值] //不加where删除表中所有记录delete 删除表中的数据,表结构还存在,数据可以找回truncate 删除是把表drop,再创建⼀个新的,删除的数据不能找回,执⾏速度⽐delete快三、数据库访问权限DCL四、查询DQL格式: select 列名 from 表名 where- group by --having -- order by group by:对结果进⾏分组 having 分组后的⾏条件 order by 对结果排序 Limit ooffset_satrt,row_count 结果限定

部分过滤条件限定: and;in(); is null ,and; or; not not in -->不在范围之内 in -->范围之内 列名between 开始值 and 结束值//默认包含临界值使⽤: 1、模糊查询列名 like "表达式"通配符: _(下划线):任意⼀个字符% :任意0-n个字符,"张%";select * from stu where sname like '___'; 三个下划线,三个字的值select * from stu where sname like '___i'; 四个下划线,四个字的值,且最后⼀个为 i'z%' : 以 z开头的值'_i%':第⼆个字为i的值'%i%':字符 包含i 的值2、字段控制查询1、去重关键字 distinctselect distinct gender from stu2、不同列求和----横向计算(⼀⾏数据之内)//若,两列中有⾮数值类型,结果为nullselect *.,sal+comm form emp;把null转换成0的函数ifnull();select * , sal+ifnull(comm,0) from emp;给列起别名 asselect * , sal+ifnull(comm,0) as mysal from emp;3、排序-默认升序order by 列名 desc/asc多列排序select * from 表名 order by 列1 desc,列2 desc;//数据按列1降序之后,如有数据相同的则按列2降序排列4、聚合函数count:count(*)总⾏数,count(列名)指定列名后,计算的是不为null的记录的⾏数max :最⼤值min :最⼩值sum:求和avg:求平均数select count(*) from 表名;5、分组查询group by 列名---------》查出结果之后再对结果进⾏分组多列分组group by 列1,列2, 先根据列1分组,分组完之后再根据列2分组**注意:**如果查询语句中有分组操作,则select后⾯能添加的只能是聚合函数和被分组的列名having:必须跟在group by之后,是对分组之后的数据进⾏过滤,可以接分组函数(聚合函数)where:是对分组之前的数据过滤,不能使⽤聚合函数selecet deptno,sum(sal) form emp group by deptno having sum(sal) >8000;先进⾏部门分组,再筛选出部门员⼯⼯资总和⼤于8000的部门6、limitlimit start,length开始下标从0开始,查询多少条select * from 表 limit 0 10;分页参数:pageIndex 页码值,pageSize 每页显⽰条数limit (pageIndex-1)*pagesize,pagesize 分页查询语句书写顺序:select -from -where -group by -having-order by -limit

2023年8月3日发(作者:)

SQL基本⽤法本⽂主要是对sql常⽤操作做个简单介绍Sql:结构化查询语⾔,是⼀种特殊⽬的的编程语⾔,是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库系统。主要介绍sql语⾔的四个分类DDL:数据定义语⾔,⽤来定义数据库对象:库,表,列等DML:数据库操作语⾔,⽤来定义数据库记录(数据)增删改DCL:数据库控制语⾔,⽤来定义访问权限和安全级别DQL:数据库查询原,⽤来查询记录(数据)⼀、数据库DDL**数据库操作:**1、创建CREATE DATABASE 数据库名称;2、查看show databases;3、修改数据库alter database 数据库名 character set 编码⽅式4、删除数据库drop database 数据库名5、其他语句查看当前使⽤的数据库select database()切换数据库

use 数据库名**表操作:**数据类型:int/double/char(固定长度字符串)/varchar(可变长度字符串)/text/blob(字节类型,保存⽂件信息)/date(⽇期)/time(时间)/timestamp(时间戳类型)/datetime(⽇期时1、创建表create table 表名( id int, name varchar(5), sex char(2))2、查看表 -表信息 desc 表名3、数据表修改 增加列: alter table 表名 add 列名 (image) 数据类型 (blob) 修改列 : alter table 表名 change 列名 新列名 新的数据类型 删除列: alter table 表名 drop 列名 修改表名:alter table 旧表名 rename 新表名4、查看创建表的细节show create table 表名5、修改表的字符集alter table 表名 character set 编码⽅式⼆、表数据增删改DML1、插⼊:insertinsert into 表名(列名) values(值)当给所有列添加数据的时候,可以省略列名,且需要按照表中的列的顺序插⼊值添加多⾏insert into 表名(列名) values(值),(值2),(值3);列名与列值的类型,个数,顺序要⼀⼀对应参数值不要超出列定义的长度如果插⼊空值,请使⽤null插⼊的⽇期和字符⼀样,都是⽤引号括起来2、修改update 表名 set 列名1=列值1,列名2=列值2 wherer 列名 = 值;update 表名 set 列名1=列值1 修改该列所有值update 表名 set 列名1=列值 +增值 //当前列的值增减3、删除delete from 表名 [where 列名=值] //不加where删除表中所有记录delete 删除表中的数据,表结构还存在,数据可以找回truncate 删除是把表drop,再创建⼀个新的,删除的数据不能找回,执⾏速度⽐delete快三、数据库访问权限DCL四、查询DQL格式: select 列名 from 表名 where- group by --having -- order by group by:对结果进⾏分组 having 分组后的⾏条件 order by 对结果排序 Limit ooffset_satrt,row_count 结果限定

部分过滤条件限定: and;in(); is null ,and; or; not not in -->不在范围之内 in -->范围之内 列名between 开始值 and 结束值//默认包含临界值使⽤: 1、模糊查询列名 like "表达式"通配符: _(下划线):任意⼀个字符% :任意0-n个字符,"张%";select * from stu where sname like '___'; 三个下划线,三个字的值select * from stu where sname like '___i'; 四个下划线,四个字的值,且最后⼀个为 i'z%' : 以 z开头的值'_i%':第⼆个字为i的值'%i%':字符 包含i 的值2、字段控制查询1、去重关键字 distinctselect distinct gender from stu2、不同列求和----横向计算(⼀⾏数据之内)//若,两列中有⾮数值类型,结果为nullselect *.,sal+comm form emp;把null转换成0的函数ifnull();select * , sal+ifnull(comm,0) from emp;给列起别名 asselect * , sal+ifnull(comm,0) as mysal from emp;3、排序-默认升序order by 列名 desc/asc多列排序select * from 表名 order by 列1 desc,列2 desc;//数据按列1降序之后,如有数据相同的则按列2降序排列4、聚合函数count:count(*)总⾏数,count(列名)指定列名后,计算的是不为null的记录的⾏数max :最⼤值min :最⼩值sum:求和avg:求平均数select count(*) from 表名;5、分组查询group by 列名---------》查出结果之后再对结果进⾏分组多列分组group by 列1,列2, 先根据列1分组,分组完之后再根据列2分组**注意:**如果查询语句中有分组操作,则select后⾯能添加的只能是聚合函数和被分组的列名having:必须跟在group by之后,是对分组之后的数据进⾏过滤,可以接分组函数(聚合函数)where:是对分组之前的数据过滤,不能使⽤聚合函数selecet deptno,sum(sal) form emp group by deptno having sum(sal) >8000;先进⾏部门分组,再筛选出部门员⼯⼯资总和⼤于8000的部门6、limitlimit start,length开始下标从0开始,查询多少条select * from 表 limit 0 10;分页参数:pageIndex 页码值,pageSize 每页显⽰条数limit (pageIndex-1)*pagesize,pagesize 分页查询语句书写顺序:select -from -where -group by -having-order by -limit