网站添加关键词,python数据分析,四川省工程信息网,wordpress免费教育插件文章目录 一、SQL分类二、SQL语法1.数据库字段类型1.1.数值类型1.2 字符类型1.3 日期类型 2.字段约束2.1约束介绍2.2 非空约束#xff08;not null#xff09;2.3 唯一约束#xff08;unique#xff09;2.4 主键约束#xff08;primary key#xff09;2.5 自增长主键2.6 … 文章目录 一、SQL分类二、SQL语法1.数据库字段类型1.1.数值类型1.2 字符类型1.3 日期类型 2.字段约束2.1约束介绍2.2 非空约束not null2.3 唯一约束unique2.4 主键约束primary key2.5 自增长主键2.6 联合主键 3.**DDL 数据定义语言**3.1 对库的操作3.2 对表的操作 4.DML 数据操纵语言4.1 增 insert4.2 删 delete4.3 改 update 5.DQL数据查询语言5.1 基础查询 select5.2 where 子句5.2.1**条件关系运算符**5.2.2条件逻辑运算符5.2.3 LIKE 模糊查询 5.3 查询结果处理5.3.1 计算列5.3.2 字段别名5.3.3 去重 5.4 order by 排序5.5 聚合函数5.6分组查询5.7 分页查询 limit 三、数据表的关联关系1.关联关系介绍2.外键约束3.外键约束-级联 一、SQL分类 根据不同SQL指令对数据库操作的不同可以将SQL指令分为以下四类 DDL Data Defintion Language 数据定义语言 用于对数据库对象数据库数据表视图索引的增删改操作 DML Data Manipulation Language 数据操作语言 用于对数据表中的数据的增删改操作 DQL Data Query Language 数据查询语言 用于对数据库表中的数据的查询操作 DCL Data Control Language 数据控制语言 用于事务管理等控制性操作
二、SQL语法
1.数据库字段类型 数据库表中数据列支持的数据存储类型 1.1.数值类型
类型内存空间范围说明tinyint1byte有符号-128~127无符号 0~255特小型整数(年龄)smallint2byte(16bit)有符号-32768~32767无符号 0~65535小型整数mediumint3byte有符号-231~231-1无符号 0~2^31-1中型整数int/integer4byte整数bigint8byte大型整数float4byte单精度double8byte双精度decimal第一个参数*2decimal(10,2)数值位10位小数位有两位
1.2 字符类型 存储字符序列的类型 类型长度说明char0~255字节定长字符串最多存放255个字节char(n)自动补齐位数varchar0~65536字节可变长度字符串一个汉字占用两个字节tinyblob0~255字节存储二进制字符串blob0~65535字节存储二进制字符串(图片音频)mediumblob0~1677215字节存储二进制字符串longblob0~4294967295存储二进制字符串tinytext0~255文本数据(字符串)text0~65535文本数据(字符串)mediumtext0~1677215文本数据(字符串)longtext0~4294967295文本数据(字符串)
1.3 日期类型 数据库日期类型 类型格式说明date2024-01-01日期存放 年-月-日time18:01:10时间存放 时分秒year2024年份datetime2024-01-08 18:01:18年月日时分秒timestamp20240108 180118年月日时分秒时间戳
2.字段约束
2.1约束介绍 在创建表时对表中指定数据列的数据的限制性约束其目的 保证数据有效性保证数据完整性保证数据正确性 常见的SQL语法约束; 非空约束not null:限制此列值必须提供不能为null唯一约束unique此列的值需要具有唯一性不能重复主键约束primary key非空唯一能够唯一标识数据表中的一条数据外键约束foreign key建立不同表之间的关联关系 2.2 非空约束not null 限制数据表中此列的值必须提供 create table students(stu_num char(8) not null unique,stu_name varchar(20) not null ##非空);2.3 唯一约束unique 在表中的多条数据此列的值不能重复 create table students(stu_num char(8) not null,stu_tel char(11) unique ##唯一约束);2.4 主键约束primary key 主键是数据表中记录的唯一标识非空唯一 一张数据表中只能有**一个主键**但是主键是可以一个字段也可以是多个字段组合的联合主键 ##方式一 主键声明
create table students(stu_num char(8) primary key, ##主键约束stu_tel char(11) unique );##方法二 主键声明
create table students(stu_num char(8), stu_tel char(11) unique,primary key(stu_num); ##主键约束);##方式三 在已有的数据表中增加主键约束
alter table students add primary key(stu_num);删除主键约束 alter table students drop primary key;2.5 自增长主键 自增长主键设置以后新增数据时主键数据自动增长填充无需提供数据。 create table students(stu_id int primary key auto_increment,stu_num char(8), stu_tel char(11) unique;);注意 自增长主键的字段类型需要时int类型 自增长主键从1开始每增加一天数据主键1如果中间有行数据被删除自增长主键只会继续新增不会重复新增也就是生成过的主键值即使删除了也不会重复生成。 自增长主键只保证唯一性不保证连续性 2.6 联合主键 联合主键将数据表中的多列组合在一起设置为的主键 create table students(stu_num char(8), stu_tel char(11) unique,primary key(stu_num,stu_tel); ##联合主键);实际业务开发中联合主键的使用并不多如果数据表中没有明确的主键值可以额外增加一个ID字段作为主键。 3.DDL 数据定义语言
3.1 对库的操作 对数据库的增删改查操作 创建数据库 create database 库名; create database db_test;## 优化创建数据库增加判断数据库是否存在 is not exists
create database if not exists db_test;## 优化增加数据库字符集设置
create database if not exists ba_test character set utf8;查询数据库 查询所有数据库 show databases # #查询全部数据库
show databases;## 查询指定数据库的创建SQL指令
show create database db_test;修改数据库 修改数据库字符集 alter database 库名 character set 字符编码集; alter database db_test character set gbk;##查询字符集修改是否成功
show create database db_test;删除数据库 删除数据库同时对数据库中的表数据同步删除 drop database 库名; drop database db_test;## 优化判断是否存在数据库再进行删除
drop database if exists db_test;3.2 对表的操作
创建数据库表 使用create table 表名(字段名 字段类型长度,是否为空是否唯一); create table students(stu_num char(8) not null unique,stu_name varchar(20) not null,stu_denger char(2) not null,stu_age int not null,stu_tel char(11) not null unique,stu_qq varchar(11) unique);查询数据库表 查询数据库向下所有的表 show tables; show tables;查询表结构 desc 表名; desc students;删除数据表
drop table students;
## 增加判断存在再删除
drop table if exists students;修改数据表 修改表名 alter table 表名 rename to 新表名; alter table students rename to stud;修改数据库表字符集 表字符集默认与数据库字符集一致 alter table 表名 character set 字符集编码 alter table students character set gbk;新增表字段 alter table 表名 add 新增字段名(字段长度); alter table students add stu_remark varchar(200);修改表的字段名和字段类型 alter table change ; alter table students change stu_remark stu_desc text;修改字段类型 alter table modify ; 删除表字段 alter table drop ; alter table students drop stu_desc;4.DML 数据操纵语言
4.1 增 insert 用于完成对数据表中数据的操作 insert into (columnName1,columnName2…) values(value1,value2…); INSERT into students(stu_num,stu_name,stu_denger,stu_age,stu_tel,stu_qq) values(1,小明,男,18,13600000002,578767873);4.2 删 delete 删除数据表中符合条件的数据 delete from where conditions; DELETE from students where stu_num 2;注意 delete 语句是删除数据库表中的数据如果不加where条件将会删除整表数据但表依然存在表结构依然存在。drop table 是从数据库删除数据表表结构删除数据库中不在存此数据表。drop database 是直接删除此数据库。 4.3 改 update 对数据库表中已存在的数据进行修改操作 update set columnName value where conditions; UPDATE students SET stu_name 蔡文姬 WHERE stu_num 1;注意update操作一定要注意where条件的设定如果不加where条件将进行全表修改。 5.DQL数据查询语言 从数据库表中提取满足条件的记录 单表查询多表联合查询 5.1 基础查询 select SELECT stu_name from ; #查询展示指定列信息 SELECT * from ; ##全表查询 SELECT * from where conditions; ##条件查询 SELECT stu_name from students; #查询展示学生姓名列信息
SELECT * from students;##全表查询
SELECT * from students where stu_num 1;##条件查询查询学号为1的学生信息5.2 where 子句 用where子句加上查询条件筛选所需要的数据 5.2.1条件关系运算符
## 等于
select * from students where stu_num 1;## 不等于
select * from students where stu_num ! 1;
select * from students where stu_num 1;## 大于
select * from students where stu_age 18;## 小于
select * from students where stu_age 18;## 大于等于
select * from students where stu_age 18;## 小于等于
select * from students where stu_age 18;## 区间查询 between...and
select * from students where stu_age between 16 and 20;5.2.2条件逻辑运算符 在where子句中可以将多个条件通过逻辑运算and or not进行连接通过多条件筛选需要的数据。 ## and并且 多条件联合查询同时满足的结果
select * from students where stu_denger 男 and stu_age 18;## or 或者 多条件联合查询至少满足其中一个条件的结果
select * from students where stu_denger 女 or stu_age 18;## not 取反
select * from students where stu_age not between 16 and 20;##年龄不在16~20之间的数据5.2.3 LIKE 模糊查询 通过like关键字来实现模糊查询 select * from where columnName like ‘reg’ 在like关键字后面的 reg表达式中%表示任意多个字符 %a% 表示字段里面包含a的所有字段a% 表示第一个字母为a的字段%a 表示最后一个字母为a的字段 _ 表示任意一个字符**_a%**表示第二个字母为a的所有字段 ## 查询学生手机号码中包含8的数据 %8%
select * from students where stu_tel like %8%;## 查询学生手机号码中136开头的数据 136%
select * from students where stu_tel like 136%;## 查询学生手机号码中尾号是9的数据 %9
select * from students where stu_tel like %9;## 查询学生手机号码中第二位是3的数据 _3%
select * from students where stu_tel like _3%;
5.3 查询结果处理
5.3.1 计算列 对查询结果进行一定运算后展示 ## 通过年龄计算出生年份 (2024 - stu_age)
SELECT stu_name, (2024 - stu_age) as birthYear from students WHERE stu_num 1;5.3.2 字段别名 对查询字段进行别名展示在查询字段用as 关键字取别名 SELECT stu_name as 学生姓名, (2024 - stu_age) as 学生出生年份 from students WHERE stu_num 1;5.3.3 去重 查询结果去重 distinct ## 查询表中年龄并去重
SELECT DISTINCT stu_age from students ;5.4 order by 排序 将查询的满足条件的记录进行升序或降序的排列展示 关键字 order by排序 asc-升序默认 desc-降序 单字段排序
##年龄大于10岁的学生按年龄由小到大的升序方式展示
SELECT * from students where stu_age 10 ORDER BY stu_age;##年龄大于10岁的学生按年龄由大到小的降序方式展示
SELECT * from students where stu_age 10 ORDER BY stu_age desc;多字段排序
## 多字段排序先按性别降序排序再按年龄升序排序
SELECT * from students where stu_age 10 ORDER BY stu_denger DESC,stu_age ASC ;5.5 聚合函数 SQL中提供了一些可以对查询记录进行计算的函数统称聚合函数 count()max()min()sum()avg() count() 统计函数统计满足条件的指定字段值的个数
## 统计表中数据总条数
SELECT COUNT(*) from students;## 统计表中学号的总个数
SELECT COUNT(stu_num) from students;## 统计表中男生的学号总个数
SELECT COUNT(stu_num) from students where stu_denger 男;max() 展示查询数据的指定列的最大值
## 学生表中最大年龄值
SELECT MAX(stu_age) from students;min() 展示查询数据的指定列的最小值
## 学生表中最小年龄值
SELECT MIN(stu_age) from students;sum() 求和满足查询条件的值的指定列的和
## 全部学生年龄的总和
SELECT sum(stu_age) from students;avg() 计算平均值满足查询条件的值的指定列的平均值
## 全部学生年龄的平均值
SELECT avg(stu_age) from students;5.6分组查询 将数据表中的数据按照分类进行分组查询 select 分组字段/聚合函数 from 表名 where 条件 group by 分组列名 having 条件 ## 查询全部数据以学生年龄分组
SELECT stu_name,stu_age FROM students GROUP BY stu_age;## 使用聚合函数count()查询男女性别的各自总人数
SELECT stu_denger,COUNT(stu_denger) from students GROUP BY stu_denger;## 使用聚合函数avg(),查询男女生的平均年龄
SELECT stu_denger,AVG(stu_age) from students GROUP BY stu_denger;## 使用聚合函数加having条件查询性别男的按年龄分组后年龄大于18岁以上的人数,再按年龄升序排序展示
SELECT stu_age,COUNT(stu_num) from students where stu_denger 男 GROUP BY stu_age HAVING stu_age 18 ORDER BY stu_age;分组查询执行顺序 先执行where语句按条件对数据表进行查询再执行group对按条件查询出来的数据进行分组再执行having对以上分组后的数据进行条件查询最后执行order by ,对以上结果进行排序 5.7 分页查询 limit
select ...
from ...
where ...
limit param1,param2param1 int :表示获取查询语句的结果中的第一条数据的索引索引从0开始param2 int : 表示获取查询记录的条数如果剩下的数据条数param2,则返回剩下的所有条数 对学生表进行数据查询总共8条数据每页展示三条一共三页 总记录数 count 8 每页显示书pagesize 3 总页数pageCount count%pagesize ? count%pagesize : count%pagesize 1 ##分页查询,第一页
SELECT * from students LIMIT 0,3; (1-1)*3 当前页码-1*每页查询条数##分页查询,第二页
SELECT * from students LIMIT 3,3; (2-1)*3##分页查询,第三页
SELECT * from students LIMIT 6,3; (3-1)*3# 如果在一张数据表中
# pageNum表示查询的页码
# pageSize表示每页查询的条数
# 通用非也语句如下
select * from tableName where conditions limit (pageNum-1)*pageSize , pageSize;三、数据表的关联关系
1.关联关系介绍 MySQL是关系型数据库不仅可以存储数据还可以维护数据与数据之间的关联关系通过在数据表中添加字段来建立外键约束 数据与数据之间的关联关系分为四种 一对一一对多多对一多对多 2.外键约束 外键约束—将一个表添加外键约束与另一张表的主键关联这个外键约束列的数据必须在关联的主键字段中存在 案例 新建班级表 CREATE TABLE class (class_id int NOT NULL,class_name varchar(255) NOT NULL,class_remark varchar(255) DEFAULT NULL,PRIMARY KEY (class_id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb3;新建学生表在学生表中添加外键与班级表的class_id主键关联 CONSTRAINT FK_STUDENT_CLASS FOREIGN KEY (cid) REFERENCES class (class_id) CREATE TABLE students (stu_num char(8) primary key,stu_name varchar(20) NOT NULL,stu_denger char(2) NOT NULL,stu_age int NOT NULL,stu_tel char(11) NOT NULL,stu_qq varchar(11) DEFAULT NULL,cid int DEFAULT NULL,CONSTRAINT FK_STUDENT_CLASS FOREIGN KEY (cid) REFERENCES class (class_id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb3;
3.外键约束-级联 主外键关联关系在设置外键时需要添加 级联修改(ON UPDATE CASCADE ) 级联删除(ON DELETE CASCADE) 保证数据完整性和一致性 ## 删除原有外键
alter table students drop foreign key FK_STUDENTS_CLASS##重新设置外键添加级联修改和级联删除
alter table students add constraint FKSTUDENTS_CLASS foreign key(cid) references class (class_id) ON UPDATE CASCADE ON DELETE CASCADE;按以上外键设置增加级联修改和级联删除设置class表中的class_id 如果修改/删除students表中的外键cid会自动同步修改/删除。
文章转载自: http://www.morning.kcdts.cn.gov.cn.kcdts.cn http://www.morning.weiwt.com.gov.cn.weiwt.com http://www.morning.wscfl.cn.gov.cn.wscfl.cn http://www.morning.bcngs.cn.gov.cn.bcngs.cn http://www.morning.qtkfp.cn.gov.cn.qtkfp.cn http://www.morning.cttgj.cn.gov.cn.cttgj.cn http://www.morning.tkjh.cn.gov.cn.tkjh.cn http://www.morning.gqjzp.cn.gov.cn.gqjzp.cn http://www.morning.wcyr.cn.gov.cn.wcyr.cn http://www.morning.kwrzg.cn.gov.cn.kwrzg.cn http://www.morning.mflqd.cn.gov.cn.mflqd.cn http://www.morning.plqhb.cn.gov.cn.plqhb.cn http://www.morning.srkqs.cn.gov.cn.srkqs.cn http://www.morning.grwgw.cn.gov.cn.grwgw.cn http://www.morning.hlxpz.cn.gov.cn.hlxpz.cn http://www.morning.ltrz.cn.gov.cn.ltrz.cn http://www.morning.xnyfn.cn.gov.cn.xnyfn.cn http://www.morning.pzwfw.cn.gov.cn.pzwfw.cn http://www.morning.wfyzs.cn.gov.cn.wfyzs.cn http://www.morning.shuangxizhongxin.cn.gov.cn.shuangxizhongxin.cn http://www.morning.ctfh.cn.gov.cn.ctfh.cn http://www.morning.yrnrr.cn.gov.cn.yrnrr.cn http://www.morning.ttrdr.cn.gov.cn.ttrdr.cn http://www.morning.cjxqx.cn.gov.cn.cjxqx.cn http://www.morning.gynkr.cn.gov.cn.gynkr.cn http://www.morning.dsxgc.cn.gov.cn.dsxgc.cn http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn http://www.morning.ljbm.cn.gov.cn.ljbm.cn http://www.morning.ndxss.cn.gov.cn.ndxss.cn http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn http://www.morning.ggtgl.cn.gov.cn.ggtgl.cn http://www.morning.rykgh.cn.gov.cn.rykgh.cn http://www.morning.txkrc.cn.gov.cn.txkrc.cn http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn http://www.morning.xxfxxf.cn.gov.cn.xxfxxf.cn http://www.morning.rtkgc.cn.gov.cn.rtkgc.cn http://www.morning.gsyns.cn.gov.cn.gsyns.cn http://www.morning.hbxnb.cn.gov.cn.hbxnb.cn http://www.morning.txqsm.cn.gov.cn.txqsm.cn http://www.morning.kpcky.cn.gov.cn.kpcky.cn http://www.morning.swdnr.cn.gov.cn.swdnr.cn http://www.morning.gyylt.cn.gov.cn.gyylt.cn http://www.morning.nypsz.cn.gov.cn.nypsz.cn http://www.morning.rxlk.cn.gov.cn.rxlk.cn http://www.morning.ckzjl.cn.gov.cn.ckzjl.cn http://www.morning.nqlx.cn.gov.cn.nqlx.cn http://www.morning.qnjcx.cn.gov.cn.qnjcx.cn http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn http://www.morning.nzmqn.cn.gov.cn.nzmqn.cn http://www.morning.ydfr.cn.gov.cn.ydfr.cn http://www.morning.addai.cn.gov.cn.addai.cn http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn http://www.morning.addai.cn.gov.cn.addai.cn http://www.morning.gkgb.cn.gov.cn.gkgb.cn http://www.morning.fswml.cn.gov.cn.fswml.cn http://www.morning.mprtj.cn.gov.cn.mprtj.cn http://www.morning.qttft.cn.gov.cn.qttft.cn http://www.morning.jcfqg.cn.gov.cn.jcfqg.cn http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn http://www.morning.brld.cn.gov.cn.brld.cn http://www.morning.hgwsj.cn.gov.cn.hgwsj.cn http://www.morning.wjwfj.cn.gov.cn.wjwfj.cn http://www.morning.tkfnp.cn.gov.cn.tkfnp.cn http://www.morning.txfzt.cn.gov.cn.txfzt.cn http://www.morning.rfldz.cn.gov.cn.rfldz.cn http://www.morning.qlbmc.cn.gov.cn.qlbmc.cn http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn http://www.morning.xqndf.cn.gov.cn.xqndf.cn http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn http://www.morning.nzfyx.cn.gov.cn.nzfyx.cn http://www.morning.zpqbh.cn.gov.cn.zpqbh.cn http://www.morning.pctsq.cn.gov.cn.pctsq.cn http://www.morning.ffmx.cn.gov.cn.ffmx.cn http://www.morning.qwqzk.cn.gov.cn.qwqzk.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.jzykq.cn.gov.cn.jzykq.cn http://www.morning.fbdkb.cn.gov.cn.fbdkb.cn http://www.morning.zqybs.cn.gov.cn.zqybs.cn http://www.morning.jspnx.cn.gov.cn.jspnx.cn