桥西区网站建设,网站做的好的公司有,重庆网站建设,网页空间申请目录 #x1f354; 常用的关系型数据库
#x1f354; Mysql简介
#x1f354; SQL 简介
SQL语句的分类
SQL 写法
SQL 常用的数据类型
#x1f354; DDL语句
对数据库的操作
对数据表的操作
#x1f354; DML语句
插入数据 insert into
修改数据 update
删除数…
目录 常用的关系型数据库 Mysql简介 SQL 简介
SQL语句的分类
SQL 写法
SQL 常用的数据类型 DDL语句
对数据库的操作
对数据表的操作 DML语句
插入数据 insert into
修改数据 update
删除数据 delete
约束 条件查询语句 聚合查询 分组查询 分页查询 小结 常用的关系型数据库 什么是关系型数据 可以存放在Excel中的数据 数据表有明确的结构, 结构不会频繁变化 列名, 每一列有固定的类型, 每一列大小范围可以预计 用来存储关系型数据的就是关系型数据库 常用的关系型数据库 Oracle mysql sqlserver postgre 非关系型数据 文本/图像 长度不固定 结构频繁变化 常用的非关系型数据库 强调 Key-Value 的方式存储数据 Pycharm链接Mysql Mysql简介 MySQL的特点免费支持大型数据库标准的SQL语言形式跨平台。 课程使用的版本时MySQL8.0/5.6版本。 MySQL登录的两种方式 方法一mysql -uroot -p123456 (登陆本机的mysql) 方法二mysql --host192.168.88.161 --userroot --password123456 (登陆远程的mysql) SQL 简介
sql 结构化查询语言(Structured Query Language)简称SQL
不同数据库厂商在标准SQL的基础上, 都会做一些微调
标准SQL 和 Mysql /Oracle SQL 大多数语句都是一样的, 但是有一些细节上的差别 sql 语句, 如果是针对Mysql来写的, 迁移到其它的数据库, 这些SQL语句可能还需要调整, 不见得直接就能运行
SQL语句的分类
1、数据定义语言简称DDL(Data Definition Language)用来定义数据库对象数据库表列等。关键字createalterdrop等
2、数据操作语言简称DML(Data Manipulation Language)用来对数据库中表的记录进行更新。关键字insertdeleteupdate等
3、数据查询语言简称DQL(Data Query Language)用来查询数据库中表的记录。关键字selectfromwhere等
4、数据控制语言简称DCL(Data Control Language)用来定义数据库的访问权限和安全级别及创建用户。
DDL/DML/DQL 重点是查询语句 DQL
SQL 写法 在pycharm中 写SQL 所有的关键字会自动变色(默认蓝色) 在建表, 给表名,字段起名字的时候要避开关键字 注释写法 单行注释 # 多行 /* */
SQL 常用的数据类型 MySQL 支持多种类型大致可以分为三类 数值 整形/浮点型 日期/时间 日期/时间/日期时间/时间戳 字符串(字符)类型 char (100) 声明100 就会申请100个字符 varchar(100) 看用了多少, 用多少占多少,但是不会超过上限(100) text/blob 比较长的二进制文件 长文本 用的不多 DDL语句
对数据库的操作 创建数据库CREATE DATABASE 数据库名 查看数据库SHOW DATABASES; 删除数据库DROP DATABASE 数据库名 使用数据库USE 数据库名
对数据表的操作 创建表 # 创建数据表 创建表的时候, 需要指定字段名字, 字段类型, 如果某些字段需要添加约束 在类型后面写约束的内容
create table category(cid varchar(20) primary key not null ,cname varchar(100)
); 查看表 desc 表名; # 查看表结构
show tables; # 查看当前数据库内所有的数据表 删除表 drop table 表名; 修改表 增加字段 alter table 表名 add 字段名字 类型(长度) [约束] 修改字段 alter table 表名 change 要修改的字段名字 要改成的字段名字 类型(长度) [约束] 删除字段 alter table 表名 drop 字段名字 修改表名 # 修改表名
格式rename table 表名 to 新表名; DML语句
插入数据 insert into
insert into 表名(字段1, 字段2...) values (值1, 值2 ....),(值1, 值2 ....)....
# 如果所有的字段都赋值了, 字段名字可以不写, 传入值的时候, 就按照所有字段的先后顺序传入
insert into 表名 values (值1, 值2 ....),(值1, 值2 ....).... 如果数据中有中文的内容, 最好在建数据库的时候, 就指定数据库的字符集charsetutf8 建数据库的时候指定好了中文字符集, 里面所有的数据表字段都是utf8的, 否则每次建表的时候都要单独指定 修改数据 update
update 表名 set 字段名 值, 字段名 值 ...
update category2 set cname 家电; # 不加条件, 整列值都修改成相同的
update category2 set cname水果 where cid c001; # 加了条件只修改满足条件的记录 1、列名的类型与修改的值要一致. 2、修改值得时候不能超过最大长度. 3、除了数值类型外其它的字段类型的值必须使用引号引起 删除数据 delete
delete from 表名 [where 条件]
delete from category2 # 删除表中所有数据
delete from category2 where cid05; # 删除 cid是05的数据
truncate category2; # 清空表 delete from category2 truncate category2 使用delete删除表记录时主键自增序列不清零。使用truncate删除表记录时主键自增序列清零。 约束
建表的时候, 可以给字段添加约束信息, 用来对字段做一些限制
主键约束
primary key auto_increment 不能为空 不能重复 加上auto_increment 可以由Mysql自己维护, 每次自动1
create table person2(id int primary key auto_increment,last_name varchar(100),first_name varchar(100),address varchar(100),city varchar(100)
); 1主键应当是对用户没有意义的 2永远也不要更新主键。 3主键不应包含动态变化的数据如时间戳、创建时间列、修改时间列等。 4 主键应当由计算机自动生成。 当字段为主键并自增的时候, 插入数据的时候, 可以不传这一列
insert into person2(first_name,last_name) values (Bill,Gates);
如果只是声明了primary key 没有声明自动增长, 这列信息一定要传, 需要自己维护
insert into person(id,first_name,last_name) values (1,Bill,Gates); Not null
非空约束 当前列添加了非空约束, 这一列中不能有空值
create table person3(id int primary key auto_increment,last_name varchar(100) not null ,first_name varchar(100),address varchar(100),city varchar(100)
);
unique
唯一约束 当前列添加了非空约束, 这一列中不能有重复值
create table person4(id int primary key auto_increment,last_name varchar(100) unique,first_name varchar(100),address varchar(100),city varchar(100)
);
default 默认值 如果一列添加了默认值, 某一行没有传入这一列数据的时候, 就会用默认值来填充
create table person5(id int primary key auto_increment,last_name varchar(100) unique,first_name varchar(100),address varchar(100),city varchar(100) default 北京
); 条件查询语句
比较查询
select * from product where pname花花公子;
select * from product where price800;
select * from product where price!800;
select * from product where price800;
select * from product where price60;
select * from product where price800;
范围查询
select * from product where price between 200 and 1000;
select * from product where price in (200,800); 这里 in 不是范围, 而是两个具体的取值, 上面的sql语句只能查询出价格200 价格800的商品, 而不是0价格800 逻辑查询
select * from product where price 200 and price1000;
select * from product where price 200 or price800;
select * from product where not (price 800);
模糊查询
# 模糊查询
select * from product where pname like 香%;
select * from product where pname like %想%; % 通配符 这里可以代替0~多个字符 _ 代表一个字符 模糊查询遍历这列数据的所有行, 看字段是否满足传入的条件 非空查询
select * from product where category_id is Null;
select * from product where category_id is not null ; 查询结果排序 order by
select * from product order by price;
select * from product order by price ,category_id DESC ; 默认升序 ASC 降序 DESC 多字段排序, 当前面的字段排序的时候, 排序结果中有相同取值的时候, 后面排序的字段才能看到效果 聚合查询
count() 计数 NULL值会过滤
sum() 求和
avg() 求平均
min() 最小值
max() 最大值 # 聚合查询
# 查询所有商品的条目数
select count(*) from product;
select count(*) from product where category_idc001;
# 查询类别是c002的所有商品价格的总和
select sum(price) from product where category_idc002;
# 查询类别是c002的所有商品价格的平均值
select avg(price) from product where category_idc003;
# 查询c003类别中商品价格最大值最小值
select MAX(price),MIN(price) from product where category_idc003; pycharm常用快捷键 shift alt ↑↓ 移动一行/多行代码ctrlD 复制代码 分组查询
group by group by 分组字段 会把这个字段中取值相同的数据行放到一组中, 做后续的计算 分组聚合 分组过滤 分组转换 分组之后的结果可以添加having子句进行过滤, 类似于where条件 # 统计各个分类商品的个数
select category_id,count(*) from product group by category_id;
# 统计各个分类商品的个数 , 且只显示个数大于1的类别
select category_id,count(*) from product group by category_id HAVING count(*)1;
# 统计各个类别商品的平均价格
select category_id,avg(price) from product group by category_id;
selectcategory_id,max(price)
fromproduct
group bycategory_id; 1).having是在分组后对数据进行过滤,where是在分组前对数据进行过滤 2).having后面可以使用分组函数(统计函数),where后面不可以使用分组函数。 分页查询 当满足查询条件的记录比较多的时候, 我们希望控制每次返回的数据条目数, 可以使用LIMIT 做分页返回
LIMIT M,N M 从第几条开始返回 M计算 (第几页-1) * N(一页返回几条数据) N 一次返回几条数据 select * from product LIMIT 0,5;
select * from product LIMIT 5,5;
select * from product LIMIT 10,5; 小结
SQL语言 DDL 了解(对数据库和数据表的操作, 场景相对比较少, 作为了解) DML 重点掌握插入数据 insert into 表名(字段) values (值) DQL 重点掌握 基本结构 select 字段
from 表名
where 条件
group by 分组
having 分组之后条件 where 条件
名称符号说明比较查询 , , ,, !大于、小于、大于(小于)等于、不等于范围查询BETWEEN ...AND...显示在某一区间的值(含头含尾) [] IN(set)显示在in列表中的值例in(100,200)模糊查询LIKE ‘张%’LIKE ‘%涛%’模糊查询Like语句中%代表零个或多个任意字符代表一个字符例如first_name like ‘a%’;非空查询IS NULL IS NOT NULL判断是否为空逻辑查询and多个条件同时成立 or多个条件任一成立 not不成立例where not(salary100); 聚合函数 count() 计数/sum() 求和/avg() 求平均/max() 求最大/min()求最小 排序 order by ASC 升序(默认)|DESC(降序) group by分组 和 having 分页(了解) Limit 约束 (了解) 主键 primary key 一般会跟着auto_increment 非空唯一 非空 not null 唯一 unique 默认值 default