SQL简介
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
允许各家的数据库有差异,这些差异,我们称之为“方言”。
SQL语法
SQL分类
- DDL(Data Definition Language):
数据定义语言,用来定义数据库对象:库、表、列等 - DML(Data Manipulation Language):
数据操作语言,用来定义数据库记录(增、删、改) - DCL(Data Control Language):
数据控制语言,用来定义访问权限和安全级别; - DQL(Data Query Language):
数据查询语言,用来查询记录(数据)
SQL的数据类型
SQL语句中数据类型大致可分为三类:
- 数值型类型(Number)
- 字符串类型(Text)
- 日期与时间类型(Date)
- Number类型:
- 整型:
数据类型 | 含义 |
---|---|
TINYINT | 1字节,范围(-128~127) |
SMALLINT | 2字节,范围(-32768~32767) |
MEDIUMINT | 3字节,范围(-8388608~8388607) |
INT | 4字节,范围(-2147483648~2147483647) |
BIGINT | 8字节,范围(-9.22E18~9.22E18) |
- 浮点型(size规定最大位数,d规定小数点后最大位数):
数据类型 | 含义 |
---|---|
FLOAT(size,d) | 4字节,单精度浮点型,范围(-3.4E38~3.4E38(7个有效位)) |
DOUBLE(size,d) | 8字节,双精度浮点型,范围(-1.7E308~1.7E308(15个有效位)) |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点 |
- Text类型(n规定字符个数):
数据类型 | 含义 |
---|---|
CHAR(n) | 固定长度,最多255个字符 |
VARCHAR(n) | 可变长度,最多65535个字符 |
TINYTEXT | 可变长度,最多255个字符 |
TEXT | 可变长度,最多65535个字符 |
MEDIUMTEXT | 可变长度,最多2^24-1个字符 |
LONGTEXT | 可变长度,最多2^32-1个字符 |
- Date类型:
数据类型 | 含义 |
---|---|
DATE | 3字节,日期,格式:yyyy-MM-dd |
TIME | 3字节,时间,格式:hh:mm:ss |
DATETIME | 8字节,日期时间,格式:yyyy-MM-dd hh:mm:ss |
TIMESTAMP | 4字节,自动存储记录修改的时间 |
YEAR | 1字节,年份 |
DDL——数据定义语言
DDL的作用是对数据库对象进行创建和修改,操作对象是库、表、列以及其各自的属性(名称、表头、列名等等)。
- 操作库:
语法 | 作用 |
---|---|
create database 数据库名; | 创建数据库 |
show databases; | 查询所有库 |
drop database 数据库名; | 删除数据库 |
alter database 数据库名 character set='编码'; | 修改数据库编码 |
show create database 数据库名; | 查看建库语句 |
- 操作表:
语法 | 作用 |
---|---|
use 数据库名 | 切换库 |
show tables; | 查看库下所有的表 |
create table 表名(列名1 数据类型,列名2 数据类型2(长度), ......); | 创建表 |
alter table 旧表名 rename to 新表名 | 修改表名 |
drop table 表名 | 删除表 |
desc 表名; | 查看表结构 |
- 操作表结构:
语法 | 作用 |
---|---|
alter table 表名 add(列名 数据类型); | 添加一个列 |
alter table 表名 drop 列名; | 删除一个列 |
alter table 表名 change 旧列名 新列名 数据类型; | 修改列名 |
alter table student 表名 modify 列名 新数据类型; | 修改数据类型 |
show create table 表名; | 查看建表语句 |
DML——数据操控语言
DML的作用是在表中操作插入数据、删除数据、修改数据。
select * from 表名;
可以浏览表中数据。
- 插入数据(
INSERT
):
语法:insert into 表名(字段名,字段名2,.....) valuses(值1,值2,......);
字符串类型的值和日期类型的值需要用单引号引起来,如果要给表中所有字段都插入值,可以省略字段名:insert into 表名 valuses(值1,值2,......);
- 删除数据(
DELETE
):
语法 | 作用 |
---|---|
delete from 表名; | 无条件的删除,删除表中所有数据 |
delete from 表名 where 条件; | 根据条件删除 |
条件控制删除符合条件的记录,条件逻辑中需要使用数学运算符: **= > < >= <=
**以及 “并且:and” 和 “或 :or”来形成逻辑。
- 修改数据(
UPDATE
):
语法:update 表名 set 列名1 = 新值1 , 列名2 = 新值2... where 条件
DQL——数据查询语言
DQL的作用是查询表中数据。
- 条件查询:
select 列名,列名2... from 表名 where 条件逻辑;
- 列名控制需要显示的列
- 条件逻辑控制需要显示哪一条记录
- **
*
**为通配符,代表所有
- 模糊查询:
select 列名,列名2... from 表名 where 列名 like 条件;
_
:匹配单个任意字符,需要匹配几个字符就用几个下划线。%
:匹配多个任意字符,数量不限。
- 字段控制
修改字段的别名:AS
- 给列的字段的起别名:
- 给表起别名(可以简化书写):