表的操作:
1.表的创建:
create table if not exists table_name(字段定义);
例子:
create table if not exists user(id int auto_increment,
uname varchar(20),
address varchar(200),
updateTime datetime,
primary key(id)); // 设置主键
2.表(show tables;)定义查看:
show create table table_name;
DESC table_name;
show full columns from table_name;
3.表的更新:
(1) 表的重命名:alter table old_user_name rename to new_user_name;
rename table old_user_name to new_user_name ;
(2) 增加列:alter table table_name add column column_nname(修饰);
在表的第一个位置增加字段,在语句最后加上FIRST,在表的指定字段之后添加,在最后加上AFTER 属性名;
例子:alter table user add column age int not null default 0 after uname;//在uname列后增加age列,并且不为空,默认为0.
(3) 删除列:alter table table_name drop (column) column_name;
(4).字段修改:alter table table_name change cloumn old_column_name new_cloumn_name 属性名 数据类型;
例子:alter table user change column adddress address varchar(1024) not null default 'beijing';// 将adddress重新命名为address,范围为1024,不为空,默认值为beijing
(5).表的删除:drop table table_name;
(6):复制表:create table new_table_name like old_table_name ;
4.操作表的约束:
(1).非空约束(not null); 直接跟在字段后,比如:name varchar(20) not null;
(2).设置字段默认值(default 默认值); 直接跟在字段后,比如:name varchar(20) default 'name';
(3).设置唯一约束(unique); 唯一约束指的是不能添加重复值 ;直接跟在字段后,比如:name varchar(20) unique;
(4).设置主键约束(primary key);
单字段主键:constraint pk_name primary key(name);直接跟在字段后,比如:id int primary key;
多字段主键:constraint pk_name1_name2 primary key(name1, name2);这个语句放在创建表的最后就可以.
(5).设置值自动增加(auto_increment);直接跟在字段后,比如:id int auto_increment;
(6).设置外键约束(foreign key):
语法:constraint 外键约束名 foreign key(属性名1) references 表名(属性名2);设置外键只能放在外键存在的表中,放在建表的最后一句,设置之后 不能插入父表中不存在的值.
语法例子:constraint fk_deptno foreign key(deptno) references t_dept(deptno);
上面6个中除了外间约束和多字段主键约束只能放在创建表的最后一句,其余都应该放在创建表时的字段之后,多个约束条件直接紧随其后.比如:name varchar(20) not null default 'name';//设置name不为空默认值为name.
索引的操作:
1.索引的创建
(1).普通索引:
create index index_name on table_name(属性名);
例子: create index idx_name on users(username);
查询时:通过explain select * from users where username = "条件";可以看出type为rel,而普通查询是ALL,也就是全盘扫描,降低效率,建立索引可以提高查找效率.
(2).唯一索引(值唯一不可以重复):
create unnqiue index index_unique_name on table_name(属性名);
例子:create unique index idx_unique_name on users(username); // 不可以添加姓名相同的记录.
(3).主键索引(一定是唯一索引,但唯一索引不一定是主键索引):
alter table table_name add primary key(属性名);
(4).复合索引:
alter table table_name add index index_name(属性名1,属性名2....);
复合索引只有在复合查找中才起作用,也就是说多条件查询时起作用.
(5).全文索引(innodb不支持全文索引):
create fulltext index index_name on table_name(属性名);
2.索引的查看:
show create table table_name;
show index from table_name;
3.索引的删除:
drop index index_name on table_name;
索引是不能直接更新的,只有通过先删除再添加来模仿更新.通过mysql workbench中的索引操作可以详细看出执行的语句,来加深理解.
- MySQL 多表查询与事务的操作
表连接查询 什么是多表查询 # 数据准备 # 多表查询的作用 * 比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询 # 如果一条 SQL 语句查询多张表,因为查询结果在多张不同的表 ...
- dbstructsync 多套mysql环境表、字段、索引的差异sql产出(原创)
最近写了一个工具(比较两套测试环境数据库表.表字段.索引的差异) 功能:可以比较两套环境中mysql指定库中表.表字段及索引的差异,返回具体需要同步的执行sql A环境的数据库db 作为sourced ...
- mysql 复制表结构(包括索引等)、表内容
=============================================== 2019/7/16_第1次修改 ccb_warlock == ...
- Mysql单表访问方法,索引合并,多表连接原理,基于规则的优化,子查询优化
参考书籍<mysql是怎样运行的> 非常推荐这本书,通俗易懂,但是没有讲mysql主从等内容 书中还讲解了本文没有提到的子查询优化内容, 本文只总结了常见的子查询是如何优化的 系列文章目录 ...
- Mysql不同表的同名字段索引名可以相同
mysql中不同表的相同字段索引是可以重名的,因为索引文件一表一个: 命名规则: 普通索引:idx_字段名 唯一索引:ux_字段名
- mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)
full index scan:全索引扫描,查询时,遍历索引树来获取数据行.如果数据不是密集的会产生随机IO 在执行计划中是Type列,index full table scan:通过读物理表获取数据 ...
- mysql 修改表结构以支持事务操作
修改表的类型为 INNODB 的 SQL: alter table category_ ENGINE = innodb; 查看表的类型的 SQL show table status from ...
- Mysql建表的时候创建索引
创建表时可以直接创建索引,这种方式最简单.方便.其基本形式如下: CREATE TABLE 表名( 属性名 数据类型[完整性约束条件], 属性名 数据类型[完整性约束条件], ...... 属性名 数 ...
- Elasticsearch-PHP 索引操作(转)
索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...
随机推荐
- 解决exlicpe以debug模式启动或运行速度非常慢的问题
该问题可能是由于eclipse和tomcat的交互而产生的, 在以debug模式启动tomcat时,发生了读取文件错误, eclipse自动设置了断点,导致tomcat不能正常启动. 解决方法如下:以 ...
- JSP、Servlet、JDBC学习笔记
WEB的学习 * 服务器 * 网络的架构(面试题) * C/S client/server 客户端/服务器端 例子:QQ 快播 暴风影音 * 优点:交互性好,服务器压力小. * 缺点:客户端更新了,下 ...
- 云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障
3月21日,由于使用阿里云服务器自建 docker swarm 集群的不稳定,我们将自建 docker swarm 集群上的所有应用切换阿里云容器服务 swarm 版(非swarm mode). 3月 ...
- linux特殊字符及其作用
1.通配符 ? 匹配单个字符 * 代表所有字符 [abcd] 匹配[]里任意一个字符.4选1 [a-d] [!abcd] 匹配不含[]里任意一个字符的字符.[^abcd] ...
- MySql数据库的常用命令
1.连接Mysql 连接本地的mysql数据库 : mysql -u root -p (回车之后会提示输入密码) 连接远程主机的mysql数据库 : 假设远程主机的IP为:110.110.1 ...
- bzoj千题计划243:bzoj2325: [ZJOI2011]道馆之战
http://www.lydsy.com/JudgeOnline/problem.php?id=2325 设线段树节点区间为[l,r] 每个节点维护sum[0/1][0/1] 从l的A/B区域到r的 ...
- 从PRISM开始学WPF(五)MVVM(一)ViewModel?
从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WPF(三)Prism-Region? 从PRISM开始学WPF(四)Prism-Module? ...
- SENet
 \(\bf F_{tr}\) 为标准卷积操作 \(\bf F_{sq}\) 为 Global Average Pooling \(\bf F_{ex}\) 为两层全连接网络(可以看做两个1×1卷积 ...
- 彻底搞懂shell的高级I/O重定向
本文目录: 1.1 文件描述符(file description,fd) 1.2 文件描述符的复制 1.3 重定向顺序很重要:">file 2>&1"和&quo ...
- php的打印sql语句的方法
echo M()->_sql(); 这样就可以调试当前生成的sql语句: //获取指定天的开始时间和结束时间 $datez="2016-05-12"; $t = strtot ...