操作和应用
数据库基本操作
创建数据库
create database test1;
查看全部数据库
show databases;
选择数据库
use test1;
删除数据库
drop database test1;
数据库存储引擎和数据类型
存储类型
显示所支持的所有存储引擎
show engines\g
查询默认存储引擎
show variables like '%storage_engine%';
数据类型
整数
浮点数类型、定点数类型和位类型
float double
dec decimal
bit
时间和日期
字符串类型
- charm系列
- charm(M)
- varchar(M)
- text 字符串长度经常变化
- tinytext
- longtext
- binary 存储二进制数据 图片、音乐或视频文件
- binary
- varvinary 数据长度经常变化
- blob 存储二进制数据 图片、音乐或视频文件
- BINYBLOB
- LONGBLOB
表的操作
表的基本概念
表中的数据库对象包含列、索引和触发器
创建表
create table table_name(属性名 数据类型,属性名 数据类型)
先创建数据库,然后选择数据库,再创建表
查看表结构
- describe语句查看表定义
describe t_dept;
- show create table语句查看表详细定义
show create table t_dapt;
navicat
删除表
删除表中所有的数据
drop table table_name
修改表
修改表名
alter table old_table_name rename [to] new_table_name
增加字段
- 在表的最后一个位置 alter table table_name add 属性名 属性类型;
- 在表的第一个位置 alter table table_name add 属性名 属性类型 first;
- 在表的任意字段后添加 alter table table_name add 属性名 属性类型 after 属性名;
删除字段
alter table table_name drop 属性名;
修改字段
- 修改字段数据类型 alter table table_name modify 属性名 数据类型
- 修改字段名称 alter table table_name change 旧属性名 新属性名 旧数据类型
- 修改字段名称和数据类型 alter table table_name change 旧属性名 新属性名 新数据类型
- 修改字段顺序
- 调整到第一 alter table table_name modify 属性名1 数据类型 first
- 调整到某个字段后 alter table table_name modify 属性名1 数据类型 after 属性名2
操作表的约束
设置约束标识符时,使用 约束缩写_字段名
完整性检查操作
MySQL支持的完整性约束
not null :非空约束,即数据不能为空
default:默认值约束,即可指定字段的默认值
unique key (uk):唯一性约束,即该字段的值不可重复。例:身份证号
primary key(pl):主键约束,用于唯一标识表中一条数据。
auto_increment :自动增长,通常搭配主键字段使用。
foreign key(fk):外键约束,用于多表之间建立联系
zerfill :使用0进行填充
unsigned :无符号
设置非空约束 NOT NUll,UK
create table table_name(属性名 数据类型 NOT NULL,...);
设置字段的默认值 default
create table table_name(属性名 数据类型 DEFAULT 默认值,...);
设置唯一约束 unique UK
create table table_name(属性名 数据类型 UNIQUE,...);
设置主键约束 primary key,pk
主键字段的值时唯一的,非空的
主键约束相当于非空约束加上唯一约束
- 单字段主键
- create table table_name(属性名 数据类型 primary key,...);
- 给字段上的pk约束设置一个名字 create table table_name(属性名 数据类型,...,constraint 约束名 primary key 属性名);
- 多字段主键
- 给字段上的pk约束设置一个名字 create table table_name(属性名 数据类型 ,...,constraint 约束名 primary key 属性名,...);
设置字段值自动增加 auto_increment
自动生成唯一id,该字段的数据类型必须是整数型,经常被设为pk主键
create table table_name(属性名 数据类型 auto_increment);
设置外键约束 foreign key,fk
外键约束则保证多个表之间的参照完整性,构建于两个表之间
两个表具有父子关系,子表中某个字段的取值范围由父表决定
设置fk约束的字段必须依赖于数据库中一级存在的父表的主键,同事外键可以为null
在设置外建史,子表中所设外键字段的数据类型必须与父表中所参考的字段的数据类型一致
在父表中创建主键
create table t_d(deptno int primary key);
在子表中创建外键关联
create table t_e(deptno int,constraint fk_deptno foregin key (deptno) references t_d(deptno);
索引的操作
为什么使用索引
为了提高从表中检索数据的速度
索引分类:B行树索引和哈希索引
创建索引:
- 经常被查询的字段,where子句中出现的字段
- 在分组的字段,group by子句中出现的字段
- 存在依赖关系的子表和父表之间的联合查询,即主键或外键字段
- 设置唯一完整性约束的字段
创建和查看索引
创建和查看普通索引
- 创建表时创建索引 创建一个名为index_deptno的索引,关键字为deptno
- create table table_name(deptno int,index index_deptno(deptno));
- 在已存在的表上创建普通索引
- create index 索引名 on 表名 (属性名 【(长度)】【ASC|DESC】)
- 通过SQL语句alter table创建普通索引
- ALTER TABLE table name ADD INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
创建和查看唯一索引
限制索引的值必须是唯一的,索引分为:自动索引和手动索引
自动索引:设置完整性约束时,表会被系统自动创建索引
手动索引:手动在表上创建索引
当设置表中的某个字段设置主键或唯一完整性约束的时,系统就会自动创建关联该字段的唯一索引
- 创建表时创建索引
- create table table_name(deptno int,UNIQUE index |key index_deptno(deptno));
- 在已存在的表上创建普通索引
- create UNIQUE index 索引名 on 表名 (属性名 【(长度)】【ASC|DESC】)
- 通过SQL语句alter table创建普通索引
- ALTER TABLE table name ADD UNIQUE INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
创建和查看全文索引
主要关联在数据类型为CHAR、VARCHAR和TEXT字段上
只能在存储引擎为MyIsam的数据库表上创建全文索引
全文索引的搜索执行防止不区分大小写
关联的字段为二进制数据类型,区分大小写的搜索方式执行
- 创建表时创建索引
- create table table_name(deptno int,FULLTEXT index |key index_deptno(deptno));
- 在已存在的表上创建普通索引
- create FULLTEXT index 索引名 on 表名 (属性名 【(长度)】【ASC|DESC】)
- 通过SQL语句alter table创建普通索引
- ALTER TABLE table name ADD FULLTEXT INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
创建和查看多列索引
关联的是多个字段
只有查询条件中使用里所关联字段中的第一个字段,多列索引才会被使用
- 创建表时创建索引
- create table table_name(deptno int, index |key index_deptno(deptno 【(长度)】【ASC|DESC】,属性2【(长度)】【ASC|DESC】,....));
- 在已存在的表上创建普通索引
- create index 索引名 on 表名 (属性名 【(长度)】【ASC|DESC】,属性2【(长度)】【ASC|DESC】,....)
- 通过SQL语句alter table创建普通索引
- ALTER TABLE table name ADD INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】,属性2【(长度)】【ASC|DESC】,....)
通过SQLyog创建索引
删除索引
语法形式
drop index index_name on table_name
通过SQLyog删除索引