21天打卡挑战学习MySQL——《MySQL表管理》第二周 第五篇


活动地址:CSDN21天学习挑战赛

一、常用的数据类型

数据类型 解释
int 整型
float 单精度浮点 4字节32位
double 双精度浮点 8字节64位
varchar 可变长度的字符类型
text 文本
decimal (5,2) 5个有效长度数字,小数点后面有2位
image 图片
char 固定长度的字符类型

二、查看数据库结构

1.查看当前服务器中的数据库

SHOW DATABASES;		#大小写不区分,分号“;”表示结束

2.查看数据库中包含的表

USE 数据库名;
SHOW TABLES;

3.查看表的结构(字段)

USE 数据库名;
DESCRIBE 数据库名.表名;
可缩写成: DESC 表名;

三、SQL语句

SQL语言 解释
DDL 数据定义语言,用于创建数据库对象,如库、表、索引等
DQL 数据查询语言,用于从数据表中查找符合条件的数据记录
DCL 数据控制语言,用于设置或者更改数据库用户或角色权限
DML 数据操纵语言,用于对表中的数据进行管理

四、创建及删除数据库和表

1.创建表(订单表)

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 过滤条件
示例
   -- 按照订单状态统计总金额
   -- 查询结果中只保留总金额大于500SELECT 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;

你可能感兴趣的:(活动,mysql,学习,数据库)