Mysql数据库学习--模式及基本表操作

目录

1.模式

1.1模式创建

1.2模式删除

2.基本表

2.1基本表创建

2.2基本表修改

2.3基本表删除

2.4为表增加计算列

3.数据查询

3.1连接查询

3.2内连接查询

3.3外连接查询

3.4嵌套查询

3.5基于派生表的查询

4.数据更新

4.1数据插入

4.2数据修改

4.3数据删除


 

1.模式

1.1模式创建

Create database 模式名 [authorization 用户名];

 

1.2模式删除

Drop database 模式名 [cascade/restrict];

 

2.基本表

2.1基本表创建

Create table 表名(

       列名 数据类型 [列级完整性约束条件]

       …

       表级完整性约束条件

)

2.2基本表修改

修改表名:

Alter table 表名 rename 新表名;

添加列

Alter table 表名 add (column) 列名 数据类型 [列级完整性约束条件] first| after 列名;

删除列

Alter table 表名 drop (column) 列名;

修改列名

Alter table 表名 change 原列名 新列名 数据类型 [列级完整性约束条件] first| after 列名;

修改列数据类型

Alter table 表名 modify 列名 数据类型 [列级完整性约束条件] first| after 列名;

添加表级完整性约束

Alter table 表名 add 表级完整性约束;

删除表级完整性约束

Alter table 表名 drop表级完整性约束;

 

2.3基本表删除

Drop table [if exists] 表名 [cascade/restrict];

 

2.4为表增加计算列

Create table 表名(

       a int default null , b int default null,

       c int generated always as ((a+b)) [virtual | stored]

);

 

3.数据查询

Select [all | distinct] 列名[,列名…]

From 表名[,表名] | Select语句 As 别名

Where 条件表达式

Group by 列名 [Having 条件表达式]

Order by 列名 [ASC | DESC];


eg:

Select Sname ,2014-Sage as Birthday ,LOWER( Sdept ) from Student;

Select Sname from Student where Sname like‘王%’;(%:任意长度字符串, _:单个任意字符)

Select COUNT(*) from SC group by Cno having COUNT(*)>3;

 

3.1连接查询

Select 列名… from 表1,表2 where 判断条件;

 

3.2内连接查询

Select 列名… from 表1 inner join 表2 on 判断条件;

 

3.3外连接查询

左连接:左表全显示,右表对应显示,无对应显示为null

Select 列名… from 表1 left join 表2 on 判断条件;

右链接:右表全显示,左表对应显示,无对应显示为null

Select 列名… from 表1 right join 表2 on 判断条件;

 

3.4嵌套查询

带IN谓词的子查询

eg:查询与‘刘晨’同一个系的学生:

Select Sno,Sname,Sdept 

From Student

Where Sdept IN (  Select Sdept 

                  From Student

                  Where Sname = ‘刘晨’);

带ANY、ALL谓词的子查询

eg:查询非CS系中比CS系中任意一个学生年龄小的学生姓名和学号:

Select Sname,Sno

From Student

Where Sage < ANY(  Select Sage

                   From Student

                   where Sdept = ‘CS’)

And Sdept <> ‘CS’;  

带EXISTS谓词的子查询

eg:查询所有选修了1号课程的学生姓名

Select Sname 

From Student as s

Where exists (  Select * 

                From SC

                Where Sno = s.Sno and Cno = ‘1’);

带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值TRUE和逻辑假值FALSE

子查询分类:不相关子查询(1,2)、相关子查询(3)

 

3.5基于派生表的查询

Select Sno,Cno

From SC,( Select Sno, AVG(Grade) 

          From SC Group by Sno) 

     as Avg_sc (acg_sno, avg_grade)

Where SC.Sno = Avg_sc.avg_sno and SC.Grade >= Avg_sc.avg_grade;

 

4.数据更新

4.1数据插入

Insert into 表名(列1,…) values(值1,…);

Insert into 表名(列1,…) Select (列1,…) from 表2 where 条件表达式

 

4.2数据修改

Update 表名 set 列名=值,… where 条件表达式|子查询判断

 

4.3数据删除

Delete from 表名 where 条件表达式|子查询判断

 

 

本文为个人学习总结,如有错误和问题,欢迎评论留言!

 

 

Mysql数据库学习系列

1.Mysql数据库学习--模式及基本表操作

2.Mysql数据库学习--索引及视图操作

3.Mysql数据库学习--用户及权限操作

4.Mysql数据库学习--数据库完整性

5.Mysql数据库学习--数据库系统概述

6.Mysql数据库学习--关系数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值