1,登陆数据库:mysql -u root -p
2,退出数据库:exit quit ctr+d
3,创建数据库:create database 数据库名 charset=utf8
4,使用数据库:use 数据库名
5,删除数据库:drop database 数据库名 6,创建表:create table 表名(字段名,字段类型,约束条件)
7,添加字段:alter table 表名 add 字段名 字段类型 约束条件
8,修改字段类型:alter table 表名 modify 字段名 字段类型 约束条件
9,修改字段名和字段类型:alter table 表明 change 原字段名 新字段名 字段类型 约束条件
10,删除字段:alter table 表名 drop 字段名
11,删除表:drop table 表名
12,查询数据:select * from 表名;
13,插入数据:insert into 表名 values(...)
或:insert into 表名(列名1,列名2) values(1,2),(1,3);
14,修改数据:update 表名 set 列1=值1,列2=值2...where 条件
15,删除数据:delete from 表名 where 条件 准备数据库
-- 创建 "京东" 数据库
create database jing_dong charset=utf8; -- 使用 "京东" 数据库
use jing_dong; -- 创建一个商品goods数据表
create table goods(
id int unsigned primary key auto_increment not null,
name varchar(150) not null,
cate_name varchar(40) not null,
brand_name varchar(40) not null,
price decimal(10,3) not null default 0,
is_show bit not null default 1,
is_saleoff bit not null default 0
);


-- 向goods表中插入数据
insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','',default,default);
insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','',default,default);
insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','',default,default);
insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','',default,default);
insert into goods values(0,'x240 超极本','超级本','联想','',default,default);
insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','',default,default);
insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','',default,default);
insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','',default,default);
insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','',default,default);
insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','',default,default);
insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','',default,default);
insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','',default,default);
insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','',default,default);
insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','',default,default);
insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','',default,default);
insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','',default,default);
insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','',default,default);
insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','',default,default);
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','',default,default);
insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','',default,default);
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','',default,default);


-- sql强化演练( goods 表练习)

-- 查询类型 cate_name 为 '超级本' 的商品名称 name 、价格 price

select name,price from goods where cate_name = '超级本';

-- 显示商品的种类
-- 1 分组的方式( group by )

select cate_name from goods group by cate_name;

-- 2 去重的方法( distinct )

select distinct cate_name from goods;

-- 求所有电脑产品的平均价格 avg ,并且保留两位小数( round )

select round(avg(price),2) from goods;

-- 显示 每种类型 cate_name (由此可知需要分组)的 平均价格

select cate_name,avg(price) from goods group by cate_name;

-- 查询 每种类型 的商品中 最贵 max 、最便宜 min 、平均价 avg 、数量 count

select cate_name,max(price),min(price),avg(price),count(*) from goods group by cate_name;

-- 查询所有价格大于 平均价格 的商品,并且按 价格降序 排序 order desc
--1.平均价格
select avg(price) from goods;

--2.大于平均价格

select * from goods where price > 5570.571428;

select * from goods where price > (select avg(price) from goods) order by price desc;

-- 查询每种类型中最贵的电脑信息(难)

-- 1 查找 每种类型 中 最贵的 max_price 价格

select cate_name,max(price) from goods group by cate_name;

select * from goods where (cate_name,price) = ('台式机',9188);

-- 2 查询最贵的信息

select * from goods where (cate_name,price) in (select cate_name,max(price) from goods group by cate_name);

--第四部 修改表结构(重点是思路)

-- 创建表格的格式
--create table if not exists 表名 (
--id int unsigned primary key auto_increment, 这个是主键
--name varchar(40) not null); 这个名称

--第一步 创建 "商品种类表" -goods_cates
--id跟名称

create table goods_cates(id int unsigned primary key auto_increment,name varchar(100));

select cate_name from goods group by cate_name;

insert into goods_cates(name) (select cate_name from goods group by cate_name);

--第二步 创建 "商品品牌表" -goods_brands
--id跟名称

create table goods_brands (id int unsigned primary key auto_increment,name varchar(100));

--第三步 更新种类信息表
--1. 要把类型查询出来

--2. 批量插入数据
--insert into goods_cates (name) values('123');

# 批量插入的语句

--第四 更新品牌信息表
--1. 要把品牌信息查询出来

select brand_name from goods group by brand_name;

--2. 批量插入数据

insert into goods_brands(name) (select brand_name from goods group by brand_name);

--第五 更新种类信息成种类信息表中的id
--1. 种类信息跟要替换成表进行内联

select * from goods inner join goods_cates on goods.cate_name = goods_cates.name;

--2. 通过特殊的update 进行更新
# 注意两张表连接的时候 select * from 这个必须删除

update (goods inner join goods_cates on goods.cate_name = goods_cates.name)
set goods.cate_name = goods_cates.id;

--第六 更新品牌信息成品牌信息表的id
--1. 把要更新的表两张表进行内联

select * from goods inner join goods_brands on goods.brand_name = goods_brands.name ;

--2.通过特殊的update语句进行更新

update (goods inner join goods_brands on goods.brand_name = goods_brands.name)
set goods.brand_name = goods_brands.id;

--第七步 修改字段(注意类型必须跟外键的主键类型一致)
-- alter table 表名 change 旧字段 新字段 类型
alter table goods change brand_name brand_id int unsigned;
alter table goods change cate_name cate_id int unsigned;

-- 外键的使用(了解)

-- 向goods表里插入任意一条品牌数据"老王牌拖拉机"
-- 你会发现我们外键不能创建,因为没有对应的品牌

-- 约束 数据的插入 使用 外键 foreign key
-- alter table 主表名 add foreign key (主表的外键) references 外键表(外键主键);

alter table goods add foreign key (cate_id) references goods_cates(id);

-- 创建表的同时设置外键 (注意 goods_cates 和 goods_brands 两个表必须事先存在)
-- foreign key (主表的外键) references 外键表(主键)
create table if not exists goods_key(
id int primary key auto_increment not null,
name varchar(40) default '',
price decimal(5,2),
cate_id int unsigned,
brand_id int unsigned,
is_show bit default 1,
is_saleoff bit default 0,
-- 添加外键
foreign key (cate_id) references goods_brands(id)

);

-- 如何取消外键约束
-- 需要先获取外键约束名称,该名称系统会自动生成,可以通过查看表创建语句来获取名称
--show create table 表名;

show create table goods;

-- 获取名称之后就可以根据名称来删除外键约束
--alter table 表名 drop foreign key 外键名;

alter table goods drop foreign key goods_ibfk_1;

alter table goods drop key cate_id;

基本的sql 语句的更多相关文章

  1. mysql学习之 sql语句的技巧及优化

    一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...

  2. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

  3. LINQ to SQL语句(7)之Exists/In/Any/All/Contains

    适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...

  4. Oracle ------ SQLDeveloper中SQL语句格式化快捷键

    Oracle SQL Developer中SQL语句格式化快捷键: 每次sql复制到SQL Developer面板的时候,格式老不对,而且看起来很不舒服,所有的sql都挤在一行完成. 这时我们可以全选 ...

  5. SQL语句优化

    (1)      选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 ) : ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名, FROM 子句中写在最后的表 ( 基础表dri ...

  6. LinqToDB 源码分析——生成与执行SQL语句

    生成SQL语句的功能可以算是LinqToDB框架的最后一步.从上一章中我们可以知道处理完表达式树之后,相关生成SQL信息会被保存在一个叫SelectQuery类的实例.有了这个实例我们就可以生成对应的 ...

  7. 年终巨献 史上最全 ——LINQ to SQL语句

    LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...

  8. LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

    它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to S ...

  9. LINQ to SQL语句(17)之对象加载

    对象加载 延迟加载 在查询某对象时,实际上你只查询该对象.不会同时自动获取这个对象.这就是延迟加载. 例如,您可能需要查看客户数据和订单数据.你最初不一定需要检索与每个客户有关的所有订单数据.其优点是 ...

  10. LINQ to SQL语句(6)之Group By/Having

    适用场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q = from p in db.Products group ...

随机推荐

  1. RocketMQ学习 -> NameServer路由中心

    RocketMQ项目代码核心目录说明 broker:broker启动进程 client:消息客户端,包含消息生产者,消息消费者相关类 common:公共包 dev:开发者信息(非源代码) distri ...

  2. linux 指定tomcat的具体路径

    1.直接修改catalina.sh中对应的变量 CATALINA_HOME=/xx/xxCATALINA_BASE=/xx/xx (该方法需要找到所有的变量进行修改,不适合,推荐使用方式2) 2.在p ...

  3. eclipse与hadoop集成,运行wordCount1

    搭好了hadoop集群之后,就该使用它了 第一步:下载hadoop eclipse的插件,将它放到eclipse\plugins的目录下,然后重启eclipse,点击windows->show ...

  4. php-fpm启动,重启,退出

    首先确保php-fpm正常安装,运行命令php-fpm -t输出查看: ##确定php-fpm配置正常 [root@iz2vcf47jzvf8dxrapolf7z php7.-Oct-::] NOTI ...

  5. 夯实Java基础系列11:深入理解Java中的回调机制

    目录 模块间的调用 多线程中的"回调" Java回调机制实战 实例一 : 同步调用 实例二:由浅入深 实例三:Tom做题 参考文章 微信公众号 Java技术江湖 个人公众号:黄小斜 ...

  6. 用深度学习做命名实体识别(六)-BERT介绍

    什么是BERT? BERT,全称是Bidirectional Encoder Representations from Transformers.可以理解为一种以Transformers为主要框架的双 ...

  7. TouchListener PK OnTouchEvent + 多点触碰

    1.基于监听的TouchListener 代码示例: 实现效果图: 实现代码: main.xml <RelativeLayout xmlns:android="http://schem ...

  8. LitePal的聚合函数

    传统的聚合函数用法   虽说是聚合函数,但它的用法其实和传统的查询还是差不多的,即仍然使用的是select语句.但是在select语句当中我们通常不会再去指定列名,而是将需要统计的列名传入到聚合函数当 ...

  9. 搭建docker+swoole+php7 的环境

    最近在学习swoole php扩展,苦恼于其运行环境不能在win系统下运行, 但开发代码一直在win系统上,很无奈,,,, 所以就用docker来代替,舒服~ 有很多相关docker的swoole镜像 ...

  10. C#的FTP服务器源代码

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...