mysql库、表、索引
创建和删除数据库,同一个数据库下的不同表可以采用不同的引擎
mysql> create database oldboy default character set utf8 collate utf8_generial_ci;
mysql> drop database oldboy;
创建表,5.5之后默认引擎为InnoDB
mysql> create table student t (id int,name varchar(20),hobby varchar(20) ) engine=MyISAM charset=utf8;
mysql> drop table student;
索引类似书本的目录,可以加快查询速度
索引需要占用系统空间,更新数据库时也需要维护索引,因此是把双刃剑,数十到几百行的小表无需建立索引,读取较少更新频繁的表要少建立索引。
向表中插入数据,mysql中可以一个insert插入多条记录,多个记录之间用逗号分隔
mysql> insert into student values (1,'Alice','flower'),(2,'Bob','tennis'),(3,'Jack','book'),(4,''Jane,'dance');
查询数据
mysql> select name,hobby from student where id>2 [limit [3,]8];
limit m,n表示在符合条件的结果中,再从第m+1条开始,筛选n条记录;limit只跟一个参数表示从第一条开始筛选出n条记录。
在查询语句select前加explain可查看执行计划
mysql> explain select * from test where id>3 limit 3,2 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test
type: range #(扫描范围,all或range)
possible_keys: PRIMARY #(可能走的索引)
key: PRIMARY
key_len: 4
ref: NULL
rows: 6#(扫描行数)
Extra: Using where
1 row in set (0.00 sec)
索引类似书本的目录,可以加快查询速度,同时需要占用系统空间,更新数据库时也需要维护索引,因此索引是把双刃剑。
数十到几百行的小表无需建立索引,读取较少更新频繁的表要少建立索引。
索引可分为主键索引和普通索引(auto_increment自动增长的列必须设置索引),可以在单列上创建索引,也可以在多列上创建索引。
表创建后增加和删除主键索引
mysql> alter table student add primary key(id);
mysql> alter table student drop primary key;
表创建后增加和删除唯一索引
mysql>alter table student add unique index unique_id(id);
(也可以使用create语句创建唯一索引 mysql> create unique index unique_id on student(id); )
mysql> alter table student drop index unique_id;
(也可以使用drop语句删除唯一索引 mysql> drop index unique_id on student; )
表创建后增加和删除普通索引
mysql> alter table student add index index_dept(dept);
(也可以使用create语句创建普通索引 mysql> create index index_dept on student(dept); )
mysql> alter table student drop index index_dept;
(也可以使用drop语句删除普通索引 mysql> drop index index_dept on student; )
表创建后增加和删除复合索引 (复合索引具有前缀生效特性,例如index(a,b,c),只有查询条件a、ab、abc三种情况才会走索引)
mysql>create index index_name_dept on student(name(8),dept(10));(对name的前8和dept的前10个字符创建复合索引)
创建表时创建索引
create table student2 (
id int(4) NOT NULL auto_increment,name char(10) NOT NULL,age tinyint(2) NOT NULL DEFAULT 0,dept varchar(16) DEFAULT NULL,
primary key(id),unique index index_id(id),index index_dept(dept)
);或者
create table student2 (
id int(4) NOT NULL auto_increment,name char(10) NOT NULL,age tinyint(2) NOT NULL DEFAULT 0,dept varchar(16) DEFAULT NULL,
primary key(id),unique (id),key index_dept(dept)
);
修改表名
rename table 原表名 to 新表名 或者 alter table 原表名 rename to 新表名
mysql>rename table stu to student;
mysql>alter table student rename to stu;
增加字段
alter table 表名 add 字段名 类型 [约束] [ first|after 字段] [,add 字段名 类型]
mysql>alter table student add sex tinyint(2) default male after name;
增加字段时如有约束可以同时添加,增加的字段默认为最后一个字段,first表示新增的为第一个字段,after 字段表示在该字段的后增加;逗号加add可同时添加多个列
删除字段
alter table 表名 drop 字段
mysql>alter table student drop sex;
修改字段的数据类型
alter table 表名 modify 字段 新类型
mysql>alter table student modify name varchar(20);
修改字段名(需同时修改数据类型)
alter table 表名 change 原字段名 新字段名 类型
mysql>alter table student change id number int(4);
更新数据update和删除数据delete,记得要用where过滤条件,否则修改的就是整个表的数据
mysql> update student set hobby='swimming' where id=4;
mysql> delete from student where id<3;
alias mysql=’mysql -U’(永久生效需要写入/etc/profile)
在同一个界面退出重新以mysql登录时,如果执行不带where条件的update和delete时,数据库会报错
参考视频 http://blog.51cto.com/oldboy/1321061
delete逻辑删除,按行删,truncate直接清除物理文件,truncate删除更快
mysql库、表、索引的更多相关文章
- python Mysql 库表
Mysql 库表 创建 学生信息库表 学生成绩 库表
- Mysql 库表操作初识
Mysql 库表操作初识 终端登录mysql 这里只演示win下, cmd 终端. 至于怎么在win下, linux, mac安装, 感觉这是一个入门级的百度搜索问题, 安装都搞不定, 确实有点尴尬, ...
- MySQL库表状态查询
一. 查看库的各链接状态 对于一个mysql连接或者一个线程,任何时刻都有一个状态,表示其当前正在做什么.一般使用show full processlist查看. +---------+------- ...
- MySQL库表详细操作
昨天我们初始了MySQL,今天我们先从库表方面详细说一下具体操作 一.库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 ...
- mysql库表优化实例
一.SQL优化 1.优化SQL一般步骤 1.1 查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; Com_select:执行SELECT操作的次数,一次查询累加1.其他类似 以下 ...
- MySQL库表设计小技巧
前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...
- MySQL查看表索引
mysql> show index from tblname; mysql> show keys from tblname; · Table 表的名称. · Non_unique 如果索引 ...
- mysql 单表索引优化
建表语句 CREATE TABLE IF NOT EXISTS `article` ( `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMEN ...
- Mysql 库表
create database student_info default character set utf8 collate utf8_general_ci; ------------------- ...
- python之路--MySQL 库,表的详细操作
一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...
随机推荐
- wordvector to sentence vector
wordvector已经通过word2vec训练出来了,可是如何通过WV得到SV(Sentence Vector)? 思路1: 直接将句子的向量叠加取平均:效果很不好,每个词没有考虑权重,获取的向量会 ...
- JS 8-5 OOP 实现继承的方式
function Person(){} function Student(){} Student.prototype = Person.prototype;//此继承方式是错误的,当我们改变Stude ...
- CentOS6.5下实现R绘图
1.首先安装R的绘图包Cairo 下载地址:http://www.rforge.net/Cairo/files/ [root@Hadoop-NN-01 mysofts]# R CMD INSTALL ...
- jenkins 添加 证书凭证Credentials
jenkins 添加 证书凭证Credentials 大家都知道jenkins在拉取git项目代码的时候,如果没有配置 “证书凭证Credentials” 或者配置的不对, 就会出现红色报错,最终导致 ...
- Mac下安装m2crypto 解决找不到openssl头文件的错误
直接复制整段到终端运行 sudo env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --pref ...
- 响应式布局css样式
核心css /*图片列表样式*/ .img-list{ margin:-15px 0 0 -15px; *display:inline-block; } /*响应式布局*/ @media screen ...
- UVALi 3263 That Nice Euler Circuit(几何)
That Nice Euler Circuit [题目链接]That Nice Euler Circuit [题目类型]几何 &题解: 蓝书P260 要用欧拉定理:V+F=E+2 V是顶点数; ...
- git起步
关于版本控制 什么是版本控制?为什么要版本控制? 版本控制是记录文件内容变化,以便在将来查阅特定版本的系统.有了版本控制,我们就可以将某个文件或是整个项目回退到之前的某个时间段,查看现在和之前相比项目 ...
- html5-表单和input元素用法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- CSS尺寸与补白属性-----margin和padding
margin margin:[ <length> | <percentage> | auto ]{1,4} 为元素设置所有四个方向(上右下左)的外边距 auto:水平( ...