MySql修改查询部分
- MySql修改表结构
- 数据表添加列 列名 desc 可变字符255
- 修改列的数据表型 desc列,修改为int
- 修改列名 desc为description
- 修改表名 student 修改为 student_table
- MySql添加数据
- 添加数据的格式1:
- 添加数据的格式2:
- 添加数据的格式3:批量数据
- MySql更新数据
- MySql删除数据
- MySql 约束
- 主键约束:
- 创建主键的方式1: 创建表的同时直接创建
- 创建主键的方式2:在创建表的约束区域创建
- 创建主键的方式3:先建好表,利用修改命令alter table
- 联合主键,
- 自动增长列
- 唯一约束(唯一性)
- 创建唯一约束的方式1:创建表的同时创建
- 创建唯一约束的方式2:constraint区域添加
- 创建唯一约束的方式3:修改表结构 alter table
- 删除唯一约束
- 默认约束
- 创建默认约束方式1:创建表直接添加
- 创建默认约束方式2:修改表结构
- Mysql查询
- 基本查询
- 查询数据表,查询单列 去重
- 查询数据表 列进行运算 并取新列名
- 条件查询
- 排序查询
- 聚合查询_重点
- 分组查询 重点_难点
- 限制查询limit
MySql修改表结构
具有风险性(数据丢失)
关键字 alter table
数据表添加列 列名 desc 可变字符255
alter table 表明 add 列名 数据类型[长度] [约束]
ALTER TABLE student ADD `desc` VARCHAR(255);
修改列的数据表型 desc列,修改为int
alter table 表明 modify 列名 新数据类型【长度】 [约束]
ALTER TABLE student MODIFY `DESC` INT;
修改列名 desc为description
alter table 表名 change 旧列名 新列名 新数据类型[长度] [约束]
ALTER TABLE student CHANGE `dexc` `description` INT;
修改表名 student 修改为 student_table
rename table 旧表名 to 新表明
RENAME TABLE student TO student_table
MySql添加数据
添加数据的格式1:
insert [into] 表名(列名1,列名2,列名3)values(值1,值2,值3)
数据库中,值的引号问题,数字可以不写任何符号,其他数据类型加引号(双单引号都行 推荐用单引号)
添加数据的格式2:
insert [into] 表名 values(全部的值)
添加数据的格式3:批量数据
insert [into] 表名 values(全部的值),(全部的值),(全部的值)
MySql更新数据
update 表名 set 列=值, 列=值,列=值 where 条件
MySql删除数据
delete from 表名 where 条件
MySql 约束
主键约束:
被设置为主键约束的列,数据在表中具有唯一性
这个主键列的数据不能为空,每个表只能设置一个主键 每个表都应该有一个主键
创建主键的方式1: 创建表的同时直接创建
CREATE TABLE persons(
id INT PRIMARY KEY,
****
****
);
创建主键的方式2:在创建表的约束区域创建
关键字:constraint,可以指定约束的名字
CREATE TABLE persons(
id INT,
***,
***
CONSTRAINT PRIMARY KEY pk_id (id)
);
创建主键的方式3:先建好表,利用修改命令alter table
CREATE TABLE persons(
id INT,
***,
***
);
ALTER TABLE persons ADD CONSTARINT PRIMARY KEY pk_id (id);
联合主键,
多个列实现一个主键 多个列的值在一起算不能重复
CREATE TABLE persons(
id INT,
firstname varchar(50),
lasetname varchar(50),
```,
```,
CONSTARINT PRIMARY KEY pk(firstname,lastname)
);
自动增长列
(必须是整数 必须是主键)
关键字: auto_increment
CREATE TABLE persons(
id INT PRIMARY KEY AUTO_INCREMENT,
***,
***
);
添加语句可以简化书写
主键列,写值是null,自动增长
唯一约束(唯一性)
关键字:unique
创建唯一约束的方式1:创建表的同时创建
CREATE TABLE persons(
id INT PRIMARY KEY AUTO_INCREMENT,
firstname varchar(255) UNIQUE,
***
);
创建唯一约束的方式2:constraint区域添加
CREATE TABLE persons(
id INT PRIMARY KEY AUTO_INCREMENT,
firstname varchar(255) ,
***
CONSTRAIT UNIQUE qk_firstname(firstname)
);
创建唯一约束的方式3:修改表结构 alter table
CREATE TABLE persons(
id INT PRIMARY KEY AUTO_INCREMENT,
firstname varchar(255) ,
****
);
ALTER TABLE persons MODIFY firstname VARCHAR(255) UNIQUE;
删除唯一约束
添加唯一约束后:数据口认为,这个列会经常被查询,会为这个列自动添加索引(提高数据查询效率)删除的是这个索引
ALTER TABLE persons DROP INDEX firstname
默认约束
对一个列的数据默认
关键字: default
创建默认约束方式1:创建表直接添加
CREATE TABLE persons(
id INT PRIMARY KEY AUTO_INCREMENT,
firstname varchar(255) ,
address VARCHAR(255) DEFAULT '北京市'
****
);
创建默认约束方式2:修改表结构
ALTER TABLE persons MODIFY firstname VARCHAR(255) UNIQUE;
Mysql查询
基本查询
关键字
select 选择 from 来自哪里里 where条件 as重命名 distinct去重
基本语法:
select 列名 from 表名 where
查询数据表,查询单列 去重
select DISTINCT(列名) from 表名
查询数据表 列进行运算 并取新列名
select 列名+100 AS 新列名 FROM 表名
简化:
select 列名+100 新列名 from 表名
条件查询
比较运算符 | < <= > >= = <> | 大于、小于、大于(小于)等于、不等于 |
BETWEEN …AND… | 显示在某一区间的值(含头含尾) | |
IN(set) | 显示在in列表中的值,例:in(100,200) | |
LIKE ‘字符’ | 模糊查询,like语句中,% 代表零个或多个任意字符,_ 代表一个字符, 例如: | |
IS NULL | 判断是否为空 | |
逻辑运行符 | and | 多个条件同时成立 |
or | 多个条件任一成立 | |
not | 不成立,例: |
排序查询
通过order by语句,可以将查询出的结果进行排序。暂时放置在select语句的最后
SELECT * FROM 表名 ORDER BY 列名 ASC|DESC;
#ASC 升序 (默认), 从小到大排序
#DESC 降序, 从大到小排序
聚合查询_重点
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。
五个聚合函数:
- count:统计指定列不为NULL的记录行数;
- sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
- max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
- min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
- avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
分组查询 重点_难点
分组查询是指使用group by字句对查询信息进行分组。
- 格式:
SELECT 字段1,字段2… FROM 表名 where 条件 GROUP BY 分组字段 HAVING 分组条件;
因为where不能再查询后的临时数据表中使用,所以用having
- having与where的区别:
- having是在分组操作执行后, 对分组后的数据进行过滤.
where是在分组操作执行前, 对分组前的数据 只能使用表原始列进行条件过滤 - having后面可以使用 聚合函数
where后面不可以使用 聚合函数。 - 当一条SQL语句中, 既有where 又有 group by \ having时, 先执行 where, 再执行 group by, 最后执行having
优先级:
select 6
from 1
where 2
group by 3
having 4
order by 5
- 练习附答案
#统计各个分类商品的个数
select category_id,count(*) from product group by category_id;
#统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id,count(*) from product GROUP BY category_id HAVING count(*)>1;
#统计价格>200元的 各个分类商品的个数,且只显示个数大于1的信息
-- select * from product where price>200 group by category_id;
-- select category_id,count(*) from product where price>200 group by category_id ;
select category_id,count(*) from product where price>200 group by category_id HAVING count(*)>1;
限制查询limit
关键字:limit(放在sql’语句最末尾)
语法:limit m,n
适用于分页查询
规律:
limit 第二个 参数,就是一页显示多少条
limit 第一个参数 代表索引
索引=(当前的页数-1)*每页的条数
count(pid) 总数据量
页数=总数据量/每页条数 (向上取整)