SQL语言分类
SQL(Structured Query Language 即结构化查询语言):SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
- DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER DDL(data definition language):
- DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE DML(data manipulation language):
- DQL语句 数据库查询语言: 查询数据SELECT DQL(Data Query Language )数据查询语言 SELECT
- DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE DCL(Data Control Language):
数据库服务器:运行着数据库应用程序的设备 DELL R760+CENTOS+Mysql
硬件+系统软件+MYSQL软件
数据库
默认的数据库:
(1)information_schema: 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
(2)performance_schema: 主要存储数据库服务器的性能参数
提供进程等待的详细信息,包括锁、互斥变量、文件信息;
保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;
对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期
(3)mysql: 授权库,主要存储系统用户的权限信息
(4)sys: 主要存储数据库服务器的性能参数
SYS database中,可以获取mem page、io 、latch/mutex/lock等各种性能数据,方便做peformance turning 和 troubleshooting。比如可以方便获取2个sql发生 lock block,用户占用的资源等信息。
表(EXCEL):记录的管理单元
记录(行):信息的载体,字段的管理单元
例:张三,男,23,工程师,月薪几k
字段(列):字段名,字段类型(长度),字段约束(可选)组成
类型:字符,数字,日期
约束:主键约束, 唯一性,不能为空,自动增长
DDL
DDL-库
系统中的位置:/var/lib/mysql/ 能选择清理/备份
数据库操作
数据库的操作基本有:创建,查看,选择,以及删除4种。
- 创建业务数据库
Create database +数据库名;
例:Create database discus; 后面的discuz是想要创建的数据库名字
注意:
数据库名要求:区别大小写、唯一性 不能重复、不能使用关键字如 create select等、不能单独使用数字和特殊符号如“ - ”、比较正常的用拼音或者单词都可以 - 查看所有数据库
Show databases; 查看已经创建的所有数据库 - 选择/进入数据库
Use +数据库名; 选择名为database_name的数据库,很多数据库的操作都需要先选中一个数据库,再执行进一步的操作;
查询当前所在库
Select database(); - 删除数据库
Drop database +数据库名;
DDL数据类型
- 数值类型
整数类型:
-
Int(232):一个正常大小整数。有符号的范围是-231 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字),无符号的范围是0到4294967295。一位大小为 4 个字节。
int 的 SQL-92 同义词为 integer。 -
Bigint(2^64):从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到18446744073709551615。一位为 8 个字节。
-
Tinyint(2^8):有符号的范围是-128 - 127,无符号的范围是 从 0 到 255 的整型数据。一位大小为 1 字节。
注意:Tinyint有符号型最大127 int有符号型最大2147483647 -
Smallint(216):一个小整数。有符号的范围是-215 (-32,768) 到 2^15 - 1 (32,767) 的整型数据,无符号的范围是0到65535。一位大小为 2 个字节。MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
-
Mediumint(2^24):一个中等大小整数,有符号的范围是-8388608到8388607,无符号的范围是0到16777215。 一位大小为3个字节。
- 浮点数类型:
- Float:float是近似数值,存在精度缺失
Double:双精度浮点。处理大多数小数。
定点数类型:
Dec:decimal是精确数值,不存在精度损失 - 浮点数和定点数都可以用类型名称后加(M,D)的方式来表示,
(M,D)表示一共显示M位数字(总数位+小数位),
其中D位于小数点后面,M和D又称为精度和标度。
- 位类型:
Bit:整型数据 1、0 或 NULL
- 字符串类型
- Char系列:
Char:char类型的长度是固定的,在创建表时就指定了,其长度可以是0255的任意值。65525之间的任意值。指定了varchar类型的最大值以后,其长度可以在o到最大长度之间。
Varchar:varchar类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取0
在检索的时候,CHAR列删除了尾部的空格,而VARCHAR则保留这些空格 - Text系列:text类型是一种特殊的字符串类型。text只能保存字符数据,如新闻的内容等。
- Blob系列:BLOB类型的字段用于存储二进制数据
类型 | 大小(单位:字节) |
---|---|
Tinyblob | 0~255 |
Blob | 0~64K |
Mediumblob | 0~16M |
Longblob | 0~4G |
- Binary系列:
Binary:固定长度的 n 个字节二进制数据。N 必须从 1 到 8,000。存储空间大小为 n+4 字节。
Varbinary:n 个字节变长二进制数据。n 必须从 1 到 8,000。存储空间大小为实际输入数据长度 +4 个字节,而不是 n 个字节。输入的数据长度可能为 0 字节。 - 枚举类型:
Enum:65536个元素(单选) - 集合类型:
Set:64个元素(可以多选)
- 时间和日期类型
year 年、time 时间、date 日期、datetime 日期和时间、timestamp 时间戳
- 完整性约束
由于生活中需要避免重名的情况,所以数据库中某列使用完整性约束来限定此类要求。
用于保证数据的完整性和一致性
约束条件 | 说明 |
---|---|
PRIMARY KEY (PK) 复合主键约束 | 标识该字段为该表的主键,可以唯一的标识记录,不可以为空 |
FOREIGN KEY (FK) 外键约束 | 标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联 |
UNIQUE KEY (UK) 唯一约束 | 标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY |
AUTO_INCREMENT 字段值增 | 标识该字段的值自动增长(整数类型,而且为主键) |
DEFAULT 默认值、空值 | 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值sex enum(‘male’,‘female’) not null default ‘male’ //默认值maleage int unsigned NOT NULL default 20 //必须为正值(无符号) 不允许为空 默认是20 |
NOT NULL | 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值 |
UNSIGNED | 无符号,正数 |
ZEROFILL | 使用0填充,例如0000001 |
DDL-表
表是数据库存储数据的基本单位,表由若干个字段(列)组成,主要用来存储数据记录(行)。
例:
- 创建表
语法:create table +表名(字段1 类型,字段2 类型,字段3 类型);
创建数据库discuz:create database discuz
使用库:use discuz
创建一个表四列:create table t1(id int,name varchar(20),sex enum(‘m’,’f’),age int); - 查看表名:show tables
- 表中插入内容
语法:insert into 表名 values(字段值列表…)
插入数据:insert into t1 values(1,‘zhangsan’,‘m’,33),
Insert into t1 values (2,’lisi’,’f’,20),
Insert into t1 values (1,’wangwu’,’m’,40), - 查看表内容
Select * from t1 插叙你表中所有字段的值 - 查看表结构
Desc t1