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. vs code编码设置

    在使用vs code(版本1.35.0)打开文件时,出现乱码问题,可通过如下方式设置: 1.针对单个文件 点击右下角的编码按钮(图中为UTF-8),然后选择操作,通过编码重新打开(Reopen wit ...

  2. 阿里云ESC服务器centos6.9使用及注意事项

    阿里云ESC服务器,配置低,但是足够新手尝试操作练习. 使用之前,注意事项: 选择操作系统 设置实例快照 安装终端工具 一,选择操作系统. 可以在购买服务器的时候进行选择系统盘,也可以在购买之后在实例 ...

  3. mybatis collection和association使用区别

    1. association-关联,用于一对一(如人与身份证)和多对一(如班级和学生) 2. collection-集合,用于一对多(如学生和班级)的关系

  4. jQuery常用方法(二)-事件

    ready(fn); $(document).ready()注意在body中没有onload事件,否则该函数不能执行.在每个页面中可以 有很多个函数被加载执行,按照fn的顺序来执行. bind( ty ...

  5. Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解

    1. 引言 在当前的微服务架构方式下,我们会有很多的服务部署在不同的机器上,相互是通过服务调用的方式进行交互,一个完整的业务流程中间会经过很多个微服务的处理和传递,那么,如何能知道每个服务的健康状况就 ...

  6. 1. jQuery中的DOM操作

    1)查找节点 通过jQuery选择器来完成 2)创建节点 创建元素节点:var newTd = $("<td></td>") 创建文本节点:在创建元素节点时 ...

  7. Java 学习笔记之 Suspend和Resume

    Suspend和Resume: Suspend和Resume使用方法: 以下例子证明了线程确实被暂停了,而且还可以恢复成运行状态. public class SuspendResumeThread e ...

  8. iOS性能优化-异步绘制

    参考地址:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/ 很久以前就看过这篇文章,但是也只是看过就过了,没有去整 ...

  9. 分库分表(6)--- SpringBoot+ShardingSphere实现分表+ 读写分离

    分库分表(6)--- ShardingSphere实现分表+ 读写分离 有关分库分表前面写了五篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论 ...

  10. python中函数调用---可变对象以及不可变对象

    # 定义函数 def demo(obj): print("原值: ",obj) obj += obj #调用函数 print("========值传递=======&qu ...