一.数据定义语言DDL
一.概述
DDL用于定义和管理数据库的结构
DDL关键字:1.CREATE; 2.ALTER; 3.DROP
二.SQL命名规定和规范
1.标识符命名规则
2.标识符命名规范
三.库管理
1.
CREATE DATABASE 数据库名;
2.
CREATE DATABASE IF NOT EXISTS 数据库名;
3.
CREATE DATABASE 数据库名 CHARACTRE 字符集;
CREATE DATABASE 数据库名 COLLATE 排序规则;
4.
CREATE DATABASE 数据库名 CHARACTRE 字符集 COLLATE 排序规则;
1.
SHOW DATABASES;
2.
SELECT DATABASE();
3.
SHOW TABLES FROM 数据库名
4.
SHOW CREATE DATABASE 数据库名
5.
USE 数据库名
ALTER DATABASE 数据库名 CHARACTRE 字符集;
ALTER DATABASE 数据库名 COLLATE 排序规则;
ALTER DATABASE 数据库名 CHARACTRE 字符集 COLLATE 排序规则;
DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名;
四.表管理
CREATE TABLE IF NOT EXISTS 表名{
列名 类型 [列可选约束],
列名 类型 [列可选约束],
列名 类型 [列可选约束],
}[表可选约束][COMMENT '注释']
数据类型:整数,浮点数,定点数,字符串,日期时间等
整数:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
注意:无符号=无负号,整数类型可以添加unsigned,添加以后对应列数据变成无负号类型
浮点数:FLOAT(M,D),DOUBLE(M,D)
注意:float4个字节,double8个字节,支持加unsigned
定点数:BECIMAL(M,D)
存储精确的数组数据值。当需要保持精确精度时,列如货币
字符串:CHAR(M),VARCHAR(M)
CHAR是固定长度,会补充空格.
varchar是可变长度
时间类型:
YEAR:YYYY或YY 1个字节
TIME:HH:MM:SS 3个字节
DATE:YYYY-MM-DD, 3个字节
DATEIME:YYYY-MM-DD HH:MM;SS 8个字节
TIMESTAMPYYYY-MM-DD HH:MM;SS 4个字节
二.数据操纵语言DML
一.概述
DML作用:
插入,更新,删除,查询
INSERT;UPDATE;DELETE;SELECT
数据操作最基本的单位是行,按照行进行增删改查
二.语法
1.
INSERT INTO 表名 VALUES(value1,value2...)
2.
INSERT INTO 表名(列名1,列名2,...) VALUES(value1,value2...)
1.
UPDATE table_name SET column1=value1,column2=value2...
2.
UPDATE table_name SET column1=value1,column2=value2...
[WHERE condition]
1.
DELETE FORM table_name
2.
DELETE FORM table_name [WHERE condition]
1.
SELECT 1
2.
SELECT 列名1,列名2 FROM 表名;
SELECT 表名.列名1 FROM 表名;
3.
SELECT 列名1 as 别名,列名2 FROM 表名
SELECT 表名.列名 表名 FROM 表名;
4.
SELECT DISTINCT 列名 FROM 表名;
5.
SELECT '哈哈哈' as corporation 列名 FROM 表名
6.
SELECT 字段1,字段2 FROM table where condition
三.数据库约束
一.概述
概述:表级别的规定,数据的限制语法
约束分类:
a.列级约束
非空约束 NOT NULL,默认值约束 DEFAULT,检查约束 CHECK
b.行级约束
主键约束 PRIMARY KEY,唯一约束 UNQUE,自增长约束 AUTO_INCREMENT
c.多表约束
外键约束 FOREIGN KEY
二.非空约束
关键字:NOT NULL
特点:
默认:所有类型列默认都可以为null,包括数字类型
列上添加:非空约束只能添加到列上
多次使用:一个表中可以有很多列进行非空限定
空值判定:空字符串不是null,0也不是null
建表时添加
CREATE TABLE 表名称{
字段名 数据类型 NOT NULL
}
建表后修改
alter table 表名称 modify 字段名 数据类型 not null;
三.默认值约束
关键字:DEFAULT
特点:
位置约定:不能添加到唯一或主键上
生效时间:插入数据时,没有显示赋值,赋予默认值
细节特点:添加约束时,default默认值,默认值对应正确数据类型
建表时添加
CREATE TABLE 表名称{
字段名 数据类型 default 默认值
}
建表后修改
alter table 表名称 modify 字段名 数据类型 default 默认值;
四.检查约束
关键字:CHECK
特点:
新特性:8+以后才支持
万能约束:check(表达式)
不推荐使用
建表时添加
CREATE TABLE 表名称{
字段名 数据类型,
check(表达式)
}
建表后修改
alter table 表名称 add CONSTRAINT 约束名 CHECK(表达式);
删除约束
alter table 表名称 drop CONSTRAINT 约束名;
查看约束
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = '库名'
AND TABLE_NAME = '表名'
五.唯一约束
关键字:UNIQUE
特点:
约束数量:同一个表可以有多个唯一约束
空值处理:唯一约束允许列值为空
约束名称:在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同
建表时添加
CREATE TABLE 表名称{
字段名 数据类型 unique
}
建表后修改
alter table 表名称 add CONSTRAINT constraint_name UNIQUE(列名);
六.主键约束
主键分类:自定义主键,自然主键
特点:
主键数量:每个表只有一个主键
单一和复合:主键可以由单个列或者多个列组成
主键列类型:可以是任意类型,只要唯一且不重复
主键命名:主键一般采用identify
主键索引:创建主键约束时,系统会默认在所在的列或列组合建立对应的主键索引
建表时添加
CREATE TABLE 表名称{
字段名 数据类型 primary key
}
CREATE TABLE 表名称{
字段名 数据类型,
[constraint 约束名] primary key(字段名)
}
建表后修改
alter table 表名称 add CONSTRAINT PRIMARY KEY(字段列表);
七.自增长约束
关键字: AUTO_INCREMENT
特点:
添加位置:只能添加到键列
约束数量:每张表只能由一个自增长约束
数据类型:必须是整数类型
特殊情况:如果自增长字段设置为0或者null,列数据会自增长赋值
如果设置的是非0或非空数据,那么将真实设置值
建表时添加
CREATE TABLE 表名称{
字段名 数据类型 primary key auto_increment
}
CREATE TABLE 表名称{
字段名 数据类型 unique key auto_increment
}
建表后修改
alter table 表名称 modify 字段名 数据类 auto_increment;
八.外键约束
外键:引用或参照其他表主键列值的列
外键值约束:外键应该引用主键的值,但是如果不添加约束,可能会出现错误数据
特点:
外键数量:每个表可以包含多个外键
外键跨表:被引用为主表,外键表为子表
外键类型:外键类型应该和主键对应
主外键关系:关系型数据库,关系就是指主外键关系
其他影响:存在主外键关系,删除主表数据可能会因为子表引用而删除失败
建表时添加
CREATE TABLE 主表名称{
字段名 数据类型 primary
}
CREATE TABLE 子表名称{
字段1 数据类型 primary key,
[CONSTRAINT <外键约束名称>] FOREIGN KEY
reference 主表名(主键)
}
建表后修改
alter table 子表名称 add [CONSTRAINT <外键约束名称>] FOREIGN KEY(从表的字段)
reference 主表名(被引用的字段)