执行:
1.创建数据库
create database 库名 charset=utf8;
2.使用数据库
use 数据库名;
3.创建表
create table 表名(字段名 类型 约束条件, 字段名 类型 约束条件...);
注意: varchar类型必须限制字数,int无所谓
4.修改表结构
增加字段: alter table 表名 add 字段名 约束;
增加多个字段: alter table 表明 add 字段名1 约束,add 字段名2 约束;
删除字段:alter table 表名 drop 字段名;
删除多个字段: alter table 表名 drop 字段名1,drop 字段名2;
修改字段:alter table 表名 modify 列名 类型及约束,modify 列名 类型及约束;
改名:alter table 表名 change 旧字段名 新字段名 新字段名 约束,change 旧字段名 新字段名 约束;
5.删除表信息
物理删除:delete from 表名 ; 删除全部信息
部分信息:delete from 表名 where 条件= ;
逻辑删除: update 表名 set is_delete = 1;
6.删除表
drop table 表名;
7.插入信息和修改
insert into 表名(字段1,字段2..)values(值1,值2,..);
全列插入:值的顺序与表中字段的顺序对应
insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');
全列多行插入:值的顺序与给出的列顺序对应
insert into classes values(0,'python1'),(0,'python2');
insert into students(name) values('杨康'),('杨过'),('小龙女');
修改表信息:
update 表名 set 列1=值1,列2=值2... where 条件
查看:
1.查看表信息
select * from 表名;
表的创建语句: show create table 表名;
2.查看表结构
desc 表名;
3.查看当前所在的数据库
select database();
4.查看特定字段的信息
select 字段名,字段名 from 表名;
5.联合查询
select 字段名,字段名 from ( 表A名 inner join 表B名 on 表A.XX=表B.XX);
取交集 自联结
note:MYSQL会先显示 inner join 前方的表的字段
括号可加可不加,加括号可以使sql语句看起来结构性更强
注意:联合查询必须在各表有一致的键时才能成立,若有重名的字段名,需用表A.字段名或表B.字段名加以区分.
左联: select * from 表A left join 表B on 条件;
以A表为基准,取并集
右联:select * from 表A right join 表B on 条件;
以B表为基准,联合表A和表B,取并集
6.子查询(×难点×)
查询班级学生平均年龄
查询大于平均年龄的学生
select * from students where age > (select avg(age) from students);
列级子查询
查询还有学生在班的所有班级名字
找出学生表中所有的班级 id
找出班级表中对应的名字
select name from classes where id in (select cls_id from students);
行级子查询
需求: 查找班级年龄最大,身高最高的学生
行元素: 将多个字段合成一个行元素,在行级子查询中会使用到行元素
select * from students where (height,age) = (select max(height),max(age) from students);
子查询中特定关键字使用
in 范围
格式: 主查询 where 条件 in (列子查询)
7.分组
select gender from students group by gender;
+--------+
| gender |
+--------+
| 男 |
| 女 |
| 中性 |
| 保密 |
+--------+
select gender,group_concat(name) from students group by gender;
+--------+-----------------------------------------------------------+
| gender | group_concat(name) |
+--------+-----------------------------------------------------------+
| 男 | 彭于晏,刘德华,周杰伦,程坤,郭靖 |
| 女 | 小明,小月月,黄蓉,王祖贤,刘亦菲,静香,周杰 |
| 中性 | 金星 |
| 保密 | 凤姐 |
+--------+-----------------------------------------------------------+
8.聚合函数
为了快速的得到数据 我们经常使用以下五个函数
总数
count(*)表示计算总行数,括号中写星与列名,结果是相同的
例1:查询学生总数
select count(*) from students;
最大值
max(列)表示求此列的最大值
例2:查询女生的编号最大值
select max(id) from students where gender=2;
最小值
min(列)表示求此列的最小值
例3:查询未删除的学生最小编号
select min(id) from students where is_delete=0;
求和
sum(列)表示求此列的和
例4:查询男生的总年龄
select sum(age) from students where gender=1;
-- 平均年龄
select sum(age)/count(*) from students where gender=1;
平均值
avg(列)表示求此列的平均值
例5:查询未删除女生的编号平均值
select avg(id) from students where is_delete=0 and gender=2;
9. 排序 默认是 asc 升序
例1:查询未删除男生信息,按学号降序
select * from students where gender=1 and is_delete=0 order by id desc;
例2:查询未删除学生信息,按名称升序
select * from students where is_delete=0 order by name;
例3:显示所有的学生信息,先按照年龄从大-->小排序,当年龄相同时 按照身高从高-->矮排序
select * from students order by age desc,height desc;
高阶:
#视图
叫什么视图
有什么用:
1.一个复杂sql语句可以使用视图替换,代替
2. 数据库表结构更换了,我们可以不用更换python代码
代码:
create view v_视图名 as (select xxxxxx);
删除
drop view v_视图名;
注意:
不要在视图上去修改数据(道德).
#事务
1.事务
2.事务作用:保证数据修改的完整性
3. 特性:
数据操作后可以,可以回滚(注意删除表,删除库没办法)
acid 原子性,一致性,隔离性,持久性
#索引
1.叫索引
2.有什么用:加快查询的速度
3. 原理:对我们的字段进行分组,如果大并发的情况下,修改数据会变慢
4. 创建
5. create index 名字 on 表名(索引的字段);
6. 查看
7. show index from 表名;
8. 删除
9. drop index 索引名 on 表名;
网友评论