【数据分析】【MySQL】快速入门+案例+代码+命令整理+GIF实操演示

这篇博客介绍了SQL的基本语句顺序和数据库选择命令,详细讲解了数据库建表约束条件和设计范式。重点在于数据库查询,包括创建数据、初级查询、子查询、多表链接查询等,并提供了实操演示和代码示例,适合MySQL初学者快速入门。
摘要由CSDN通过智能技术生成

1.SQL的语句顺序(理论)

SELECT [ALL|DISTINCT] <目标表达式>....
FROM <表名或者视图名>..
[WHERE <条件表达式>]
[GROUP BY <列名 1> [HAVING] <条件表达式>]
[ORDER BY <列名 2> [ASC|DESC]]

2.SQL数据库的选择命令

2.1 数据库的选择(实操)
作用 命令
查看当前有哪些数据库 show databases;
选择数据库 use database_name;
查看当前使用的是哪个数据库 select database();
新建数据库 create database database_name;
删除数据库 drop database database_name;

数据库选择演示

2.2 数据库的表格选择命令(实操)
作用 命令
查看当前数据库有哪些表格 show tables;
在当前数据库新建表格 create table table_name(字段名1 字段类型, 字段名2 字段类型);
为当前数据库的表格插入数据 insert into 表格名 values (‘字段名1的值’,字段名2的值,‘字段名3的值’);
更新当前数据库某个表的数据 update 表格名 set 字段名1=“值1” where 字段名1=“值2”;
删除当前数据库某个表的数据 delete from 表名 where name=“值1”;
删除当前数据库的某个表格 drop table table_name;

表格选择演示

3. 数据库建表约束条件(理论+说明)

作用 详细 说明 命令
主键约束 单一主键 给某个字段添加约束,使得该字段不重复且不为空 create table user(
   id int primary key,
   name varchar(4));
联合主键 多个字段加起来唯一 create table user2(
   id int,
   name varchar(4),
    password varchar(20),
   primary key(id,name));
自增约束 控制某个值自动增长 create table user3(
   id int primary key auto_increment,
   name varchar(4));
唯一约束 单一约束 约束字段的值不能重复 create table user4(
   id int,
   name varchar(4) unique);
联合唯一约束 多个字段加起来的值唯一 create table user5(
   id int,
   name varchar(4),
   unique(id,name));
非空约束 非空约束 修饰字段的值不能为空 create table user6(
   id int,
   name varchar(4) not null);
默认约束 默认约束 当我们传入字段值的时候,如果没有传值,就会使用默认值 create table user7(
   id int,
   name varchar(4),
   age int default 23);
外键约束 外键约束 针对两张表:主表和附表,附表会参考主表的某个字段作为两张表的连接 create table coutries(
   id int primary key,
   name varchar(10));

create table provinces(
   id int primary key,
   name varchar(10),
   country_id int,
   foreign key(country_id) references country(id));
修改约束 添加约束 为字段加上新的约束 alter table user4 add primary key(id);
修改约束 修改字段的约束(也可视作添加约束) alter table user6 modify id int primary key auto_increment;
删除约束 删除约束 删除某个字段的约束 alter table user3 drop primary key;

4. 数据库的设计范式(理论+实例)

  • 第一范式
    数据表中的所有字段都是不可分割的原子值。字段值还可以继续拆分的,就不满足第一范式。
    -- 不满足第一范式
    create table student2(
      	id int primary key,
      	name varchar(20),
      	address varchar(30));
    
      insert into student2 values(1,'卯月','中国四川省成都市武侯区武侯大道100号');
      insert into student2 values(2,'竹秋','中国四川省成都市武侯区武侯大道90号');
      insert into student2 values(3,'花朝','中国四川省成都市武侯区武侯大道80号');
    
    -- 满足第一范式
    create table student3(
      	id int primary key auto_increment,
      	name varchar(20),
      	country varchar(20),
      	province varchar(20),
      	city varchar(20),
      	street varchar(20),
      	num varchar(10));
      insert into student3 values(1,'卯月','中国','四川省','成都市','武侯区','武侯大道100号');
      insert into student3 values(2,'竹秋','中国','四川省','成都市','武侯区','武侯大道90号');
      insert into student3 values(3,'花朝','中国','四川省','成都市','武侯区','武侯大道80号');
    
  • 第二范式
    必须是满足第一范式的前提下,第二范式要求,除主键外的每一列都必须完全依赖于主键。如果要出现不完全依赖,只可能发生在联合主键的情况下。
    -- 不满足第二范式
    create table myorder(
      	product_id int,
      	customer_id int,
      	product_name varchar(20),
      	customer_name varchar(20),
      	primary key(product_id,customer_id));
    
    -- 满足第二范式
    -- order id 和 product_id,customer_id 拆分开,可以保证下面两个表里面的name满足第二范式
    create table myorder(
      	order_id int primary key,
      	product_id int,
      	customer_id int
      	);
      create table product(
      	id int primary key,
      	name varchar(20));
      create table customer(
      	id int primary key,
      	name varchar(20));
    
  • 第三范式
    必须先满足第二范式,除开主键列的其他列之间不能有传递依赖关系。
    -- 不满足第三范式
    create table myorder(
      		order_id int primary key,
      		product_id int,
      		customer_id int,
      		customer_phone varchar(11)
      		); # 错误,customer_phone可能还依赖于customer_id
    
    -- 满足第三范式
    -- customer_phone 只和 customer表里面的id有关
    create table myorder(
      		order_id int primary key,
      		product_id int,
      		customer_id int
      		); 
    
    create table customer(
      		id int primary key,
      		name varchar(20),
      		customer_phone varchar(11));
    
  • 注意
    三大范式并不
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值