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

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. RNN/LSTM/GRU/seq2seq公式推导

    概括:RNN 适用于处理序列数据用于预测,但却受到短时记忆的制约.LSTM 和 GRU 采用门结构来克服短时记忆的影响.门结构可以调节流经序列链的信息流.LSTM 和 GRU 被广泛地应用到语音识别. ...

  2. go https ajax

    这个很好用啊,估计大有用武之地 你会喜欢 //https-ajax.go package main import ( "fmt" "io" "net/ ...

  3. 5.C#释放非托管资源1

    释放非托管资源 在介绍释放非托管资源的时候,我觉得有必要先来认识一下啥叫非托管资源,既然有非托管资源,肯定有托管资源. 托管资源指的是.net可以自棕进行回收的资源,主要是指托管堆上分配的内存资源.托 ...

  4. Selenium基本使用(十三)测试中常见问题

    我们在使用selenium测试过程中,经常会遇到这样的问题: 1.frame或iframe <iframe id='frame1' name='frame1'> <input typ ...

  5. mybatis多表关联查询之resultMap单个对象

    resultMap的n+1方式实现多表查询(多对一) 实体类 创建班级类(Clazz)和学生类(Student),并在Student中添加一个Clazz类型的属性,用于表示学生的班级信息. mappe ...

  6. 寻路——AI

    小球找到目标位置, 必要时候进行跳跃 进行跳跃时,需要在cube上加上  Off Mesh Link  组件,并添加起跳位置和目标位置 在static位置选Navigation static 编写脚本 ...

  7. c# 在mongo中查询经纬度范围

    #region 索引 //IndexKeysDocument doc = new IndexKeysDocument();//新建索引 //2d 平面坐标索引,适用于基于平面的坐标计算.也支持球面距离 ...

  8. SQLSetStmtAttr

    SQLSetStmtAttr 函数定义: Stmt是用来执行SQL语句的句柄,这个函数是用来设置她的属性的 SQLRETURN SQLSetStmtAttr( SQLHSTMT     , 这是由游标 ...

  9. git分支流

    ## 新建一个iss1分支 $ git branch iss1 ## 切换到iss1分支 $ git checkout iss1 Switched to branch 'iss1' ## 查看分支,当 ...

  10. Java多线程-----理解CountDownLatch

       CountDownLatch简介  CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier.Semaphore.ConcurrentHa ...