笔记...学习mysql第二天
mysql第二天:
知道使用一张表可以实现自连接查询
1.能够知道数据库设计三范式
三范式:
1NF: 强调字段是最小单元,不可再分
2NF: 强调在1NF基础上必须要有主键和非主键字段必须完全依赖于主键,也就是说 不能部分依赖
3NF: 强调在2NF基础上 非主键字段必须直接依赖于主键,也就是说不能传递依赖(间接依赖)。
2.知道dropforeignkey可以删除外键约束
alter table 表名 drop foreign key 外键名;
3.能够写出分组和聚合函数组合使用的SQL语句
1. 数据准备
– 创建 “京东” 数据库
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英寸笔记本','笔记本','华硕','3399',default,default); insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default); insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default); insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default); insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default); insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default); insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default); insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default); insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default); insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default); insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default); insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default); insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default); insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default); insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default); insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default); insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default); insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default); insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default); insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default); insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default); 表结构说明: id 表示主键 自增 name 表示商品名称 cate_name 表示分类名称 brand_name 表示品牌名称 price 表示价格 is_show 表示是否显示 is_saleoff 表示是否售完 2. SQL语句演练 查询类型cate_name为 '超极本' 的商品名称、价格 select name,price from goods where cate_name = '超级本'; 显示商品的分类 select cate_name from goods group by cate_name; 求所有电脑产品的平均价格,并且保留两位小数 select round(avg(price),2) as avg_price from goods; 显示每种商品的平均价格 select cate_name,avg(price) from goods group by cate_name; 查询每种类型的商品中 最贵、最便宜、平均价、数量 select cate_name,max(price),min(price),avg(price),count(*) from goods group by cate_name; 查询所有价格大于平均价格的商品,并且按价格降序排序 select id,name,price from goods where price > (select round(avg(price),2) as avg_price from goods) order by price desc;
4.能够写出将查询结果插入到其它表中的SQL语句1.存在表的情况下复制。
复制表语法
insert into … select … SQL语句
创建跟goods表结构一样的goods_copy
1.获取创建goods的sql语句
show create table goods;
2.把表名改成goods_copy, 并生成表
完整拷贝:
insert into goods_copy select * from goods;
部分拷贝:
insert into goods_copy (name, cate_name, brand_name) select name, cate_name, brand_name from goods;
2.创建表立刻复制
CREATE TABLE
goods_copy(
idint(10) unsigned NOT NULL AUTO_INCREMENT,
namevarchar(150) NOT NULL,
cate_namevarchar(40) NOT NULL,
brand_namevarchar(40) NOT NULL,
pricedecimal(10,3) NOT NULL DEFAULT ‘0.000’,
is_showbit(1) NOT NULL DEFAULT b’1’,
is_saleoffbit(1) NOT NULL DEFAULT b’0’,
PRIMARY KEY (
id)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 select * from goods;
5.能够知道使用连接更新表中某个字段数据的SQL语句
6.能够写出创建表并给某个字段添加数据的SQL语句
创建表
create table students( id int unsigned primary key auto_increment not null, name varchar(20) not null, age tinyint unsigned default 0, height decimal(5,2), gender enum('男','女','人妖','保密') ); 说明: create table 表名( 字段名称 数据类型 可选的约束条件, column1 datatype contrai, ... );
7.能够写出修改表结构的SQL语句
修改表-添加字段
alter table 表名 add 列名 类型 约束; 例: alter table students add birthday datetime; 修改表-修改字段类型 alter table 表名 modify 列名 类型 约束; 例: alter table students modify birthday date not null;
8.能够使用PyMySQL完成数据库的增删改查
使用pymysql查询数据
d01_pymysql_select.py sql = 'select * from students;' count = cursor.execute(sql) for i in cursor.fetchall(): print(i)
使用pymysql添加数据
d02_pymysql_insert.py sql = 'insert into students(name, age) values("老王", 18);' count = cursor.execute(sql) # 提交,增删改操作都需要提交才会生效 conn.commit()
使用pymysql修改数据
d03_pymysql_update.py sql = 'update students set age=19 where name="老王";' count = cursor.execute(sql) # 提交,增删改操作都需要提交才会生效 conn.commit()
使用pymysql删除数据
d04_pymysql_delete.py sql = 'delete from students where name="老王";' count = cursor.execute(sql) # 提交,增删改操作都需要提交才会生效 conn.commit()
9.能够知道事务的四大特性
原子性,一致性,隔离性,持久性
10.能够写出创建索引的SQL语句
创建索引:
– 索引名不指定,默认使用字段名
alter table classes add index my_name (name);
- mysql 学习笔记 第二天
- python-MySQL学习笔记-第二章-在特定数据库中创建表
- 4.mysql学习笔记:mysql的复制(一)
- 26.笔记 MySQL学习——MySQL的表选项
- Head First PHP&MySQL学习笔记(五)
- Mysql学习第二天
- MYSQL学习笔记
- 2.羽翼sqlmap学习笔记之MySQL注入
- 数据库:深入浅出mysql学习笔记【超级详细(十一)番外篇】--数据库创建的六大约束
- Mysql学习笔记(十三)权限管理
- MySQL 学习笔记
- mysql学习笔记
- 转:mysql存储过程学习笔记--常用函数收藏
- MySQL学习笔记---- LOAD DATA LOCAL INFILE中文乱码
- linux C学习第二天之应用编程和网络编程笔记(上)
- Head First PHP&MySQL 学习笔记(二) —— 创建和填充数据库
- 34.笔记 MySQL学习——更改表结构
- MySQL学习笔记:InnoDB和MyISAM的差别
- PHP学习笔记:PDO连接MySQL
- 一千行MySQL学习笔记(六)