设为首页 加入收藏

TOP

MySQL知识篇-SQL1(一)
2019-09-17 18:17:05 】 浏览:36
Tags:MySQL 知识 -SQL1

1 SQL是什么?

答:是结构话语言,是一种操作关系型数据库的语言。

2 SQL语言分类?

SQL语言 说明 举例
DDL 数据定义语言 create  drop
DML 数据操作语言 insert  update  delete
DQL  数据查询语言 select
DCL 数据管理语言 grant  revoke
TPL 事务处理语言 begin  transaction  commit  rollback
CCL 指针控制语言 declear  cursor

 

 

 

 

 

 

 

 

 

3 数据类型?

  • 整数:int,bit

  • 小数:decimal

  • 字符串:varchar,char

  • 日期时间: date, time, datetime

  • 枚举类型(enum)

说明:

  • decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位

  • char表示固定长度的字符串,如char(3),如果填充ab时会补一个空格

  • varchar表示可变长度的字符串,如varchar(3),填充ab时就会存储ab

  • 字符串text表示存储大文本,当字符大于4000时推荐使用

  • 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径

 

 4 数值类型对应的字节大小?

数值类型 类型 字节大小
TINYINT 1 -128 ~ 127
SMALLINT 2 -32768 ~ 32767 
MEDIUMINT 3 -8388608 ~ 8388607
INT 4  
BIGINT 8  

 

 

 

 

 

 

 

 

5 字符串对应的字节大小?

字符串 类型 字节大小
CHAR 0-255 类型:char(3) 输入 'ab', 实际存储为'ab ', 输入'abcd' 实际存储为 'abc'
VARCHAR 0-255 类型:varchar(3) 输 'ab',实际存储为'ab', 输入'abcd',实际存储为'abc'
TEXT 0-65535 文本

 

 

 

 

 

 

 

6 日期时间对应字节大小?

类型 字节大小 例子
DATE 4 ‘2020-01-01’
TIME 3 ‘12:00:00’
DATETIME 8 '2020-01-01 12:00:00'
YEAR 1 '2019'
TIMESTAMP

4

'1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC

 

 

 

 

 

 

 

 

 

7 约束?

  • 主键primary key:物理上存储的顺序
  • 非空not null:此字段不允许填写空值
  • 惟一unique:此字段的值不允许重复
  • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
  • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常

 

 (1)primary key

       假如有一张学生信息表,里面记录了学生的学号 ,姓名,成绩等,那么,会不会有两个学号相同的学生,答案肯定是否定的,如果有的话也只能是插入信息的时候犯下的错误,那么我们如何去避免这种错误呢,这时候,primary key就发挥作用了。

下面我们创建一个stu_inform表:

create table stu_inform(

     id int,

     name varchar(20),

     grade double,

     primary key(id),

);

(2) 联合主键

这样的话我们就为id 加上了主键约束,我们来插入一个错误的信息

insert into stu_inform values(1,'张三',100.00),(1,'李四',100.00); -- Error

[同时两个id]

如果是这样插入的话环境会报出一个错误,这个错误正是主键约束的作用。

但是如果你也想让姓名也不能相同,你可能会这样写

create table stu_inform(

        id int,

        name varchar(20),

        grade double,

        primary key(id,name) );

接下来我们插入一个数据

insert into stu_inform values(1,'张三',100.00),(1,'李四',100.00);

你会发现这条语句是完全可行的,是完全没有错误的,这是为什么呢,这是因为这是一个联合主键,它的作用是id不能重复 且 姓名也不能重复,注意是且

你如果这样写的话

insert into stu_inform values(1,'张三',100.00),(1,'张三',100.00);//Error

你如果这样写的话就是大错特错了,因为这违反了联合主键。因为id和姓名同时相同了就是这个道理。

那么要怎样才能实现id不能相同,同时姓名也不能相同呢,这就是下一篇要讲的unique的作用了。

 

(3) primary key习惯

1、不更新主键列的值

2、不重用主键列的值

3、不在主键列中使用可能会更改的值(例如,如果使用一个名字作为主键以标识某个供应商,应该供应商合并和更改其名字时,必须更改这个主键)

4、在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键

 

(4) foreign key外键

 foreignkey  是指一对多关系时建立的关系:

 外键是表中与另一个表的另一个字段匹配的字段。

 外键对相关表中的数据施加限制,这使MySQL能够保持参照完整性。  

操作:

  

 

我们有两个表:customersorders. 

每个客户都有零个或多个订单,每个订单只能属于一个客户。

customers表和orders表之间的关系是一对多关系,并且orders由该customerNumber字段指定的表中的外键建立。

表中的customerNumber字段与orders表中的customerNumber主键字段相关  cus

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇oracle学习笔记(十) 查询练习(.. 下一篇测试merge效率

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目