创建和删除数据库,同一个数据库下的不同表可以采用不同的引擎

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库、表、索引的更多相关文章

  1. python Mysql 库表

    Mysql 库表    创建 学生信息库表  学生成绩 库表

  2. Mysql 库表操作初识

    Mysql 库表操作初识 终端登录mysql 这里只演示win下, cmd 终端. 至于怎么在win下, linux, mac安装, 感觉这是一个入门级的百度搜索问题, 安装都搞不定, 确实有点尴尬, ...

  3. MySQL库表状态查询

    一. 查看库的各链接状态 对于一个mysql连接或者一个线程,任何时刻都有一个状态,表示其当前正在做什么.一般使用show full processlist查看. +---------+------- ...

  4. MySQL库表详细操作

    昨天我们初始了MySQL,今天我们先从库表方面详细说一下具体操作 一.库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 ...

  5. mysql库表优化实例

    一.SQL优化 1.优化SQL一般步骤 1.1 查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; Com_select:执行SELECT操作的次数,一次查询累加1.其他类似 以下 ...

  6. MySQL库表设计小技巧

    前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...

  7. MySQL查看表索引

    mysql> show index from tblname; mysql> show keys from tblname; · Table 表的名称. · Non_unique 如果索引 ...

  8. mysql 单表索引优化

    建表语句 CREATE TABLE IF NOT EXISTS `article` ( `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMEN ...

  9. Mysql 库表

    create database student_info default character set utf8 collate utf8_general_ci; ------------------- ...

  10. python之路--MySQL 库,表的详细操作

    一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create  select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...

随机推荐

  1. wordvector to sentence vector

    wordvector已经通过word2vec训练出来了,可是如何通过WV得到SV(Sentence Vector)? 思路1: 直接将句子的向量叠加取平均:效果很不好,每个词没有考虑权重,获取的向量会 ...

  2. JS 8-5 OOP 实现继承的方式

    function Person(){} function Student(){} Student.prototype = Person.prototype;//此继承方式是错误的,当我们改变Stude ...

  3. CentOS6.5下实现R绘图

    1.首先安装R的绘图包Cairo 下载地址:http://www.rforge.net/Cairo/files/ [root@Hadoop-NN-01 mysofts]# R CMD INSTALL ...

  4. jenkins 添加 证书凭证Credentials

    jenkins 添加 证书凭证Credentials 大家都知道jenkins在拉取git项目代码的时候,如果没有配置 “证书凭证Credentials” 或者配置的不对, 就会出现红色报错,最终导致 ...

  5. Mac下安装m2crypto 解决找不到openssl头文件的错误

    直接复制整段到终端运行 sudo env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --pref ...

  6. 响应式布局css样式

    核心css /*图片列表样式*/ .img-list{ margin:-15px 0 0 -15px; *display:inline-block; } /*响应式布局*/ @media screen ...

  7. UVALi 3263 That Nice Euler Circuit(几何)

    That Nice Euler Circuit [题目链接]That Nice Euler Circuit [题目类型]几何 &题解: 蓝书P260 要用欧拉定理:V+F=E+2 V是顶点数; ...

  8. git起步

    关于版本控制 什么是版本控制?为什么要版本控制? 版本控制是记录文件内容变化,以便在将来查阅特定版本的系统.有了版本控制,我们就可以将某个文件或是整个项目回退到之前的某个时间段,查看现在和之前相比项目 ...

  9. html5-表单和input元素用法

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  10. CSS尺寸与补白属性-----margin和padding

       margin margin:[ <length> | <percentage> | auto ]{1,4}  为元素设置所有四个方向(上右下左)的外边距 auto:水平( ...