SQL-基础

定义

SQL是用于操控关系表数据的一种语言。
过程化语言对所期望的结果和产生这些结果的执行机制或过程都进行了定义。
如:Java,C,C++等。
SQL是非过程化语言。非过程化语言定义了期望结果,但是将产生结果的过程留给外部代理来定义。
使用SQL意味着必须放弃对过程的控制,因为SQL语句只定义必要的输入和输出,而执行语句的方式则交由数据库引擎的一个组件(优化器)来处理。
优化器的工作包括查看SQL语句并考虑该表的配置信息以及有无索引等,以确定最具效率的执行路径。

术语定义
实体数据库用户所关注的对象
存储在表中的独立数据片段
所有列的一个集合,完整地描述了一个实体(或实体上的某个行为),也称之为记录
行的集合,既可以保存在内存中(未持久化),也可以保存在存储设备中(已持久化)
结果集未持久化表的另一个名字,一般为SQL查询的结果
主键用于唯一标识表中每个行的一个或多个列
外键用于标识其他表中某一行的一个或多个列

 
 

分类

SQL方案(schema)语句:用于定义存储于数据库中的数据结构。如:创建新表。
SQL数据语句:用于操作SQL方案语句所定义的数据结构。如:在表中增加数据。
SQL事务语句:用于开始,结束或回滚事务。
 
 

MySQL数据类型

字符型数据
类型含义
char(n)固定长度为n个字符的字符串
varchar(n)最大长度为n个字符的可变长字符串

固定长度的字符串使用空格向右填充,以保证占用同样的字节数。
可以使用show命令查看支持的字符集。

文本数据
类型最大字节数
tinytext255
text65535
mediumtext16777215
longtext4294967295

如果数据超过了该类型的最大长度,数据将会被截断。
在向文本列装载数据时,不会消除数据的尾部空格。
当使用文本列排序或分组时,只会使用前1024个字节,在需要时可以进行调整。

数值型数据

在类型前加上unsigned关键字,指明数据为无符号数(值大于等于0)

整数类型带符号范围无符号范围
tinyint-128 ~ 1270 ~ 255
smallint-32768 ~ 327670 ~ 65535
mediumint-8388608 ~ 83886070 ~ 16777215
int-2147483648 ~ 21474836470 ~ 4294967295
bigint-9223372036854775808 ~ 92233720368547758070 ~ 18446744073709551615
浮点类型含义
folat(p,s)总位数(精度)为p,小数位(有效位)占s位
double(p,s)总位数(精度)为p,小数位(有效位)占s位

如果数字位超过了该列所定义的精度或有效位,那么该列中存储的数据将被四舍五入。

时间数据
类型默认格式允许的值
dateYYYY-MM-DD1000-01-01 ~ 9999-12-31
datetimeYYYY-MM-DD HH:MI:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestampYYYY-MM-DD HH:MI:SS1970-01-01 00:00:00 ~ 2037-12-31 23:59:59
yearYYYY1901 ~ 2155
timeHHH:MI:SS-838:59:59 ~ 838:59:59

可以使用str_to_date(‘Feb-21-1980’ , ‘%b-%d-%Y’)进行日期格式转换。

格式含义
%a星期几的简写,如:Sun,Mon
%b月名称的简写,如:Jan,Feb
%c月份的数字形式(0……12)
%d日在月中的次序(00……31)
%f毫秒数(000000……999999)
&H24时格式中的小时(00……23)
%h12时格式中的小时(01……12)
%i小时中的分钟(00……59)
%j一年中天的次序(001……366)
%M月名称(January……December)
%m月份的数字表示
%pAM或PM
%s秒数(00……59)
%W星期名(Sunday……Saturday)
%w天在星期中的次序(0=周日……6=周六)
%Y4位数字的年份

 
 

创建表

CREATE TABLE person(
    person_id SMALLINT UNSIGNED,
    fname VARCHAR(20) NOT NULL,
    lname VARCHAR(20) NOT NULL,
    gender CHAR(1) CHECK (gerder IN ('M','F')),
    birth_date DATE,
    CONSTRAINT pk_person PRIMARY KEY (person_id)
);

 
 

null

在某些情况下,在向表中插入数据时,无法位其中某一列提供具体的值。此时该列被设置为null,以指明该值的缺失。null被用于各种不能赋值的情况。
null是指不能确定值的值,null不等于null。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值