Mysql基础语句(创建、插入、单/多表查询)

基本操作

创建数据库

create database的简单语法形式:

create database 数据库名;

-- 1.创建数据库
create database SCT;

创建关系/表

创建

create table简单语法形式:

Create table 表名( 列名 数据类型 [ Primary key |Unique ] [Not null]
[, 列名 数据类型 [Not null] , … ]) ;

  • Primary key: 主键约束。每个表只能创建一个主键约束。
  • Unique: 唯一性约束(即候选键)。可以有多个唯一性约束。
  • Not null: 非空约束。是指该列允许不允许有空值出现,如选择了Not null表
    明该列不允许有空值出现。
-- 2.创建关系/表

create table Student(S char(8) not null, Sname char(10),
Ssex char(2), Sage integer, D char(2), Sclass char(6));
   
Create Table Course (C char(3) , Cname char(12), Chours integer, 
Credit float(1), T char(3));

在这里插入图片描述

插入元素

insert into简单语法形式:

insert into 表名[ (列名 [, 列名 ]… ]
values (值 [, 值] , …) ;

-- 3.向表中追加元组
-- values后面值的排列,必须与into后面的列名一致
insert into student 
Values ( '98030101' , '张三', '男', 20, '03', '980301');

Insert Into Student (S, Sname, Ssex, Sage, D, Sclass) 
Values ( '98030102' , '张四', '女', 20, '03', '980301');

Insert Into Course Values ('001', '数据库', 40, 6, '001');

Insert Into Course(Cname, C, Credit, Chours, T) 
Values ('数据库', '001', 6, 40, '001');

在这里插入图片描述

查询

Select 的简单语法形式:

Select 列名 [[, 列名] … ] From 表名
[ Where 检索条件 ] ;

-- 4.查询语句
select * from student s ;

-- 显示部分信息(投影出个别列)
select Ssex, Sage
from student s ;

-- 加入选择条件(对关系中的每个元组检查where的条件)
select Sname, Sage
from student s 
where Sage > 19;

-- 加入distinct表示不可重复(相当于对查询结果的元组做去重操作)
select distinct Ssex 
from student s ;

-- 加入排序功能 order by 列名 [asc|desc]  升序(默认)降序
select S, Sname from student s 
order by S asc;

-- 模糊查询 列名 [not] like "字符串"
-- % 匹配零个或者多个字符  _ 匹配任意单个字符 \ 转义字符(用\%去匹配%)
select S, Sname from student s 
where Sname like '张%';

多表联合查询

1.按“001”号课成绩由高到低顺序显示所有学生的姓名(二表连接)

Select Sname From Student, SC 
Where Student.S# = SC.S# and SC.C# = ‘001’
Order By Score DESC;

多表连接时,如两个表的属性名相同,则需采用表名. 属性名方式来限定该 属性是属于哪一个表

2.按‘数据库’课成绩由高到低顺序显示所有同学姓名(三表连接)

Select Sname From Student, SC, Course 
Where Student.S# = SC.S# and SC.C# = Course.C# and Cname = ‘数据库’
Order By Score DESC;

3.连接运算涉及到重名的问题,如两个表中的属性重名,连接的两个表重名 (同一表的连接)等,因此需要使用别名以便区分

Select 列名 as 列别名 [ [, 列名 as 列别名]] 
From 表名1 as 表别名1, 表名2 as 表别名2,Where 检索条件 ;

求有薪水差额的任意两位教师(需要进行重命名):

Select T1.Tname as Teacher1, T2.Tname as Teacher2 
From Teacher T1, Teacher T2
Where T1.Salary > T2.Salary ;

有时表名很长时,为书写条件简便,也定义表别名,以简化书写

4.求“001”号课成绩比“002”号课成绩高的所有学生的学号

Select S1.S# From SC S1, SC S2 
Where S1.S# = S2.S# and S1.C#=‘001’
and S2.C#=‘002’ and S1.Score > S2.Score

猜你喜欢

转载自blog.csdn.net/gary101818/article/details/123295817