活动地址:CSDN21天学习挑战赛
数据类型 | 解释 |
---|---|
int | 整型 |
float | 单精度浮点 4字节32位 |
double | 双精度浮点 8字节64位 |
varchar | 可变长度的字符类型 |
text | 文本 |
decimal (5,2) | 5个有效长度数字,小数点后面有2位 |
image | 图片 |
char | 固定长度的字符类型 |
SHOW DATABASES; #大小写不区分,分号“;”表示结束
USE 数据库名;
SHOW TABLES;
USE 数据库名;
DESCRIBE 数据库名.表名;
可缩写成: DESC 表名;
SQL语言 | 解释 |
---|---|
DDL | 数据定义语言,用于创建数据库对象,如库、表、索引等 |
DQL | 数据查询语言,用于从数据表中查找符合条件的数据记录 |
DCL | 数据控制语言,用于设置或者更改数据库用户或角色权限 |
DML | 数据操纵语言,用于对表中的数据进行管理 |
create table orders(order_id varchar(32),cust_name varchar(64))
default charset=utf8;
建表完成后,使用 show tables 查看表
desc orders :查看表结构
show create table orders :查看建表语句
删除表:drop table orders;
**插入记录:**
INSERT INTO orders VALUES
(....),(....),(....)....;
查询所有:select * from orders;
带条件查询部分字段: select 字段1,字段2... from orders where[查询条件]
**修改记录:**
UPDATE 表名
SET 字段1 = 值1,
字段2 = 值2,
...
WHERE 条件表达式;
limit子句
作用:限制显示的笔数
格式
limit n 只显示前面n笔
limit m,n 从第m开始,总共显示n笔
示例
-- 查询所有订单,显示前2笔
SELECT * FROM orders limit 2;
-- 查询所有订单,显示金额最大的2笔
SELECT * FROM orders
ORDER BY amt DESC limit 2;
-- 利用limit分页:每页3笔数据
-- 第1页
SELECT * FROM customer limit 0,3;
-- 第2页
SELECT * FROM customer limit 3,3;
-- 第3页
SELECT * FROM customer limit 6,3;
示例
- 修改某个订单的状态
update orders set status = 2
where order_id = '201801010001';
**删除记录:**
delete from 表名 where 条件表达式;
示例
-- 删除201801010002订单的信息
delete from orders where order_id='201801010002';
**模糊查询**
格式:where 字段 LIKE "通配字符"
通配符匹配
下划线(_): 匹配单个字符
百分号(%): 匹配任意个字符
例: -- 查询所有名字以D开头的客户
SELECT * FROM customer
WHERE cust_name LIKE 'D%';
空值、非空判断
语法
判断空值:字段 IS NULL
判断非空:字段 IS NOT NULL
示例:查询电话号码为空值的客户信息
SELECT * FROM customer
WHERE tel_no IS null;
-- where tel_no is not null; -- 电话非空
查询子句
ORDER BY: 排序
格式:order BY 字段 [ASC/DESC]
ASC-升序 DESC-降序
示例:查询所有订单,按照金额降序排列
SELECT order_id, amt
FROM orders
ORDER BY amt desc; -- asc或不写,升序
distinct子句
作用:去除重复数据
语法格式
SELECT DISTINCT(要去重的字段)
FROM 表名
示例:查询客户表中一共有几个不重复的名字
SELECT DISTINCT(cust_name)
FROM customer;
聚合函数
什么是聚合:不是直接查询表中的数据,
而是对数据进行总结,返回结果
聚合函数有:
max 求最大值
MIN 求最小值
AVG 求平均值
SUM 求和
COUNT 统计笔数
示例
SELECT MAX(amt) "最大金额",
MIN(amt) "最小金额",
AVG(amt) "平均金额",
SUM(amt) "订单总金额"
FROM orders;
-- 统计订单笔数
SELECT COUNT(*) FROM orders;
-- 统计电话号码以135开头的客户数量
-- 查customer表
SELECT COUNT(*) FROM customer
WHERE tel_no LIKE '135%';
说明:对某个字段调用聚合函数时,如果
字段的值为空,不会参与聚合操作
分组:group BY
=作用:对查询结果进行分组,通常和聚合函数
搭配使用
语法格式:group BY 字段
示例
-- 统计客户数量,按照客户名称分组
SELECT cust_name, COUNT(*)
FROM customer GROUP BY cust_name;
-- 从orders表,统计每种状态订单的总金额
SELECT status, SUM(amt)
FROM orders GROUP BY status;
Having:对分组结果进行过滤
作用:对分组结果进行过滤,需要和group BY
语句配合使用
语法格式
GROUP BY 分组字段 HAVING 过滤条件
示例
-- 按照订单状态统计总金额
-- 查询结果中只保留总金额大于500的
SELECT status, SUM(amt)
FROM orders
GROUP BY status
HAVING SUM(amt) > 500;
说明:group by分组聚合的结果,只能用
having,不能用where,where只能
用户表中有的字段作为条件时候
表结构调整
添加字段
语法
- 添加到表的最后一个字段
ALTER table 表名 ADD 字段名 类型(长度)
- 添加到表的第一个字段
ALTER table 表名 ADD 字段名 类型(长度) first
- 指定添加到某个字段后面
ALTER table 表名 ADD 字段名 类型(长度)
after 字段名称
示例
CREATE TABLE student(
stu_no VARCHAR(32),
stu_name VARCHAR(128)
);
添加字段
-- 在最后添加年龄字段
ALTER TABLE student ADD age int;
-- 将id字段添加到第一个字段
ALTER TABLE student ADD id INT first;
-- 将tel_no添加到stu_name后面
ALTER TABLE student ADD tel_no VARCHAR(32)
after stu_name;
修改字段
修改字段类型
ALTER TABLE 表名 modify 字段 类型(长度)
修改字段名称
ALTER TABLE 表名
change 旧字段名 新字段名 类型(长度)
示例
-- 修改student表stu_name字段长度为64
ALTER TABLE student
modify stu_name VARCHAR(64);
-- 将student表age字段改为stu_age
ALTER TABLE student
change age stu_age int;
删除字段
语法:ALTER TABLE 表名 DROP 字段名
示例:删除student表id字段
ALTER TABLE student DROP id;