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

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. 【Java】-NO.16.EBook.4.Java.1.002-【疯狂Java讲义第3版 李刚】- 数据类型

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.002-[疯狂Java讲义第3版 李刚]- 数据类型 Style:EBook Series:Java ...

  2. 百度云同同步盘 mac版

    百度云同步盘

  3. Elasticsearch集群管理工具head插件安装

    Elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es.或直接下载源码,在本地打开index.html ...

  4. Tesseract 模块

    https://www.cnblogs.com/new-june/p/9249903.html

  5. python模拟艺龙网登录带验证码输入

    1.使用urllib与urllib2包 2.使用cookielib自动管理cookie 3.360浏览器F12抓信息 登录请求地址和验证码地址都拿到了如图 # -*- coding: utf-8 -* ...

  6. 突然pom.xml中引用的jar包出错。

    在你的本地仓库中,用window搜索包含.lastupdated的文件,全部删除!然后再去项目上maven ------update project

  7. java基础练习

    String str = "Nothing is impossible to a willing heart"; String str2 = "No cross, no ...

  8. shell作业控制(后台前台命令)

    ctrl+z暂停命令(任务) fg调回命令    |          fg +id号 bg放在后台持续执行 vmstat 1 &  在后面加上‘&’ 即相当于bg jobs列出当前的 ...

  9. Necklace of Beads (polya定理的引用)

    Beads of red, blue or green colors are connected together into a circular necklace of n beads ( n &l ...

  10. fzu2204 dp

    2015-10-06 19:31:05 n个有标号的球围成一个圈.每个球有两种颜色可以选择黑或白染色.问有多少种方案使得没有出现连续白球7个或连续黑球7个. 每组包含n,表示球的个数.(1 <= ...