2021-06-25

查看数据库

SHOW DATABASES;//查看所有数据库
注意:一定要使用;结束

CREATE DATABASE 数据库名;//创建自定义数据库
注意:不能有重名的数据库

USE 数据库名;//选择使用指定的数据库

DROP DATABASE 数据库名;//删除指定数据库

CREATE TABLE 表名(
     列名(字段)名1 类型(长度) [约束],
     列名(字段)名2 类型(长度) [约束],
     ...
     列名(字段)名n 类型(长度) [约束]
);
在这里插入图片描述

在这里插入图片描述

SELECT *FROM user;
SHOW TABLES;//展示当前数据库中所有的表
向表中添加数据:
   INSERT INTO 表名(字段1,字段2...字段n) VALUES(值1,值2...值n);
        给表中的指定字段赋值
   INSERT INTO 表名 VALUES(值1,值2...值n);
        给表中的所有字段依次赋值。(值的顺序与数量必须与表中的字段一致)
注意:每执行一次INSERT INTO 都是添加新的一行
**注意:**
1.列名与 类型  必须写,  约束可以不写
2.每一个字段的声明使用 逗号 隔开
3.最后一个声明的字段不使用 逗号
4.不准使用中文。也最好不要使用拼音
约束:
语法:CREATE TABLE 表名(字段名 类型(长度) 约束);

非空约束:NOT NULL
   CREATE TABLE user(name VARCHAR(10) NOT NULL);
特点:给非空约束的字段赋值为null时,会报错

默认值:DEFAULT 默认值。
特点:当没有给默认值字段赋值,则该字段的值为指定的默认值

唯一约束:UNIQUE
特点:不同的行的使用唯一约束的字段值不能重复。
       但是如果值为null可以重复
主键约束:PRIMARY KEY
特点:值不能为null,并且不能重复

主键自动增长:
   每次添加一行数据,不用给主键赋值,主键在上一次添加的值的基础商+1
注意:1.只有主键能添加此约束
          2.添加此约束的字段只能整数类型
          3.如果给该字段添加自定义的值,则以自定义的值为基础自增
         实例:
	          CREATE TABLE person(
     name VARCHAR(10) NOT NULL ,
     age  INT(3) DEFAULT 20,
     birthday DATE UNIQUE,
     uid INT(10) PRIMARY KEY AUTO_INCREMENT
     );

	
INSERT INTO user VALUES('jay',3,null,3);
INSERT INTO user VALUES('jay',3,null,4);
DESC 表名;  //可以将表中字段的详细信息列举出来

修改表:
ALTER TABLE 表名 CHANGE 指定列名 新列名 新类型;//基本都是该列名
ALTER TABLE 表名 MODIFY 指定列名 新类型;//基本都是该类型
DROP TABLE 表名;
删除表:
	单表查询:从一个指定的表中查出指定的数据。
查询所有内容: SELECT * FROM 表名;//从指定的表中查出所有内容
查询指定字段内容:SELECT 字段名1,字段名2..字段名n FROM 表名;
   需求:查询所有name字段的值
   SELECT name FROM user;
去重复:DISTINCT
使用方法:把DISTINCT放在 SELECT后的字段名前面
需求:查询所有的name,要求:重复的只显示一次
SELECT  DISTINCT name FROM user;

CONCAT() 拼接字符串
用法:在select后使用CONCAT(字段1/自定义字符串,字段12/自定义字符串...) 
查询结果为:xxx商品的零售价为:xxx
SELECT CONCAT(product_name,'商品的零售价为:',sale_price)  FROM product;

使用别名:字段 as 别名/ 函数 as 别名
SELECT product_name as '名字' FROM product;
SELECT CONCAT(product_name,'商品的零售价为:',sale_price) as '商品价格' FROM product;

注意:as可以省略,但是不建议省略

mysql支持的类型:

      varchar(10):  如果赋的值的长度不足10,mysql值使用赋值的长度来存放改值。  
           优点:节约内存与容量   缺点:每次存值都要计算长度
           使用场景:不能确定数据的长度
      char(10):       如果赋的值的长度不足10,mysql也是使用10个字符的长度来存放该值。
            弊端:浪费内存与容量   优点:不用计算值的长度
            使用场景:肯定能确定数据的长度

     字符串类型的值使用单引号修饰

     int:   对应java中的int类型
     日期类型:
          DATETIME(年月日,时分秒)-->对应java中的java.sql.Date类

算术运算:

数学运算:+-*/
SELECT 字段 [+-*/]字段 FROM 表名;
需求1:查询所有货品的id,名称和批发价(批发价=卖价*折扣)
SELECT id,product_name, sale_price*cutoff as trade_price FROM product;

  
需求2:查询所有货品的id,名称,和各进50个的成本价(成本=costPirce)
SELECT id,product_name,cost_price*50 FROM product;

需求3:查询所有货品的id,名称,各进50个,并且每个运费1元的成本
SELECT id,product_name,(cost_price+1)*50 FROM product;

条件查询:

SELECT 
FROM 表名
WHERE 条件;
  
使用运算符来定义条件:= > >= < <= !=(<>)
需求1:  查询货品零售价为119的所有货品信息.
SELECT * 
FROM product
WHERE sale_price = 119;

需求2: 查询货品名为罗技G9X的所有货品信息.
SELECT *
FROM product
WHERE product_name = 'logicG9X';

需求3 :查询货品名不为罗技G9X的所有货品信息.
SELECT *
FROM product
WHERE product_name != 'logicG9X';

需求4:查询id,货品名称,批发价(salePrice*cutoff)大于350的货品
SELECT id,product_name,sale_price*cutoff as '批发价'
FROM product
WHERE sale_price*cutoff>350;

使用逻辑运算符定义条件:AND/&&  OR 
NOT:在表达式之前使用NOT
需求1: 选择id,货品名称,批发价(saleprice*cutoff)在300-400之间的货品
SELECT id,product_name, sale_price*cutoff as 'trade_price'
FROM product
WHERE sale_price*cutoff>=300 && sale_price*cutoff<=400;

需求2: 选择id,货品名称,分类编号为2,4的所有货品
SELECT id,product_name,category_id
FROM product
WHERE category_id=2 OR category_id=4;

需求3: 选择id,货品名词,分类编号不为2的所有商品
SELECT id,product_name,category_id
FROM product
WHERE NOT category_id = 2;

使用范围查询作为条件:
BETWEEN 值  AND 值

需求1: 选择id,货品名称,批发价不在300-400之间的货品
SELECT id,product_name,sale_price*cutoff
FROM product
WHERE NOT sale_price*cutoff BETWEEN 300 AND 400;

IN:集合查询

需求:选择id,货品名称,分类编号为2,4的所有货品
SELECT id,product_name,category_id
FROM product
WHERE category_id IN(2,4);


NULL查询:判断一个值是否是null,不能使用=null,应该使用is null
 需求: 查询商品名为null的所有商品信息
 SELECT *
 FROM product
 WHERE product_name is null;


 模糊查询:% _
 %:任意多个任意字符(包括0个)
 _:1个任意字符


需求:查询id,货品名称,货品名称匹配'%罗技M9_'
SELECT id,product_name
FROM product
WHERE product_name LIKE '%logicM9_';

结果排序:

ORDER BY 指定字段 DESC/ASC;
DESC:降序    ASC:升序  默认是ASC  

需求:查询M系列并按照批发价排序(加上别名)
SELECT sale_price*cutoff as 'trade_price'
FROM product
WHERE product_name LIKE '%M%'
ORDER BY sale_price*cutoff DESC ;

分页查询:
limit beginIndex,pageSize
beginIndex:开始索引
pageSize:数据数量

需求:每一页显示3条
第一页:
  SELECT * 
  FROM product 
  LIMIT 0,3;

  第二页:
  SELECT * 
  FROM product 
  LIMIT 3,3;

  第三页:
  SELECT * 
  FROM product 
  LIMIT 6,3;

聚集函数:

 COUNT(字段/*)

需求:查询商品总记录数
SELECT COUNT(*)
FROM product;

MAX(字段)  MIN(字段)  SUM(字段)  AVG(字段)
需求: 查询商品的最小零售价,最高零售价,以及所有商品零售价总和
SELECT MIN(sale_price),MAX(sale_price),SUM(sale_price),AVG(sale_price)
FROM product;

分组函数:

GROUP BY 字段
需求1: 查询每个商品分类编号和每个商品分类各自的平均零售价(求2,3,4每类商品的平均零售价)
SELECT category_id,AVG(sale_price)
FROM product
GROUP BY category_id
HAVING category_id IN(2,3,4);

分组函数基本上与聚集函数配合使用。先执行分组,在执行聚集
使用python中的pymsql完成如下:表结构与数据创建 1. 建立 `users` 表和 `orders` 表。 `users` 表有用户ID、用户名、年龄字段,(id,name,age) `orders` 表有订单ID、订单日期、订单金额,用户id字段。(id,order_date,amount,user_id) 2 两表的id作为主键,`orders` 表用户id为users的外键 3 插入数据 `users` (1, '张三', 18), (2, '李四', 20), (3, '王五', 22), (4, '赵六', 25), (5, '钱七', 28); `orders` (1, '2021-09-01', 500, 1), (2, '2021-09-02', 1000, 2), (3, '2021-09-03', 600, 3), (4, '2021-09-04', 800, 4), (5, '2021-09-05', 1500, 5), (6, '2021-09-06', 1200, 3), (7, '2021-09-07', 2000, 1), (8, '2021-09-08', 300, 2), (9, '2021-09-09', 700, 5), (10, '2021-09-10', 900, 4); 查询语句 1. 查询订单总金额 2. 查询所有用户的平均年龄,并将结果四舍五入保留两位小数。 3. 查询订单总数最多的用户的姓名和订单总数。 4. 查询所有不重复的年龄。 5. 查询订单日期在2021年9月1日至9月4日之间的订单总金额。 6. 查询年龄不大于25岁的用户的订单数量,并按照降序排序。 7. 查询订单总金额排名前3的用户的姓名和订单总金额。 8. 查询订单总金额最大的用户的姓名和订单总金额。 9. 查询订单总金额最小的用户的姓名和订单总金额。 10. 查询所有名字中含有“李”的用户,按照名字升序排序。 11. 查询所有年龄大于20岁的用户,按照年龄降序排序,并只显示前5条记录。 12. 查询每个用户的订单数量和订单总金额,并按照总金额降序排序。
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值