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

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. Py中re.sub学习【转载】

    转自:https://www.crifan.com/python_re_sub_detailed_introduction/ //这个网址讲的不错. 1.re.sub的功能 re是regular ex ...

  2. Java实现个人博客网站

    说明:该项目是实验楼用户"LOU3165780622"发布在实验楼上的项目教程:[Java实现个人博客],未经允许,禁止转载: 该项目利用 SSM 框架和 Mysql 以及一些简单 ...

  3. selenium及webdriver的原理【转】

    selenium与webdriver整合后,形成的新的测试工具叫做selenium2.x.在selenium1时间,selenium使用javascript来达到测试自动化的目标. 1. seleni ...

  4. Linux系统文件目录

    下面的示例是我个人的亚马逊云服务器,查看了几个关键目录的文件信息. 可以注册一个账号,免费试用一年,自己用来玩,还是很不错的 .https://aws.amazon.com/cn/ec2/ 根目录下面 ...

  5. Python list 和 tuple 使用小记

    list和tuple是Python内置的有序集合,一个可变,一个不可变.根据需要来选择使用它们. 1.内置数据类型,列表List >>> appleVersion = ['apple ...

  6. [转]sqlserver2014两台不同服务器上数据库同步

    https://www.cnblogs.com/peng0731/p/7359465.html 同步了快一个月了,因为途中比较麻烦,第一次,遇到烦的地方就停下了,今天终于同步成功了,哈哈,下面我就来介 ...

  7. MyBatis基础入门《六》Like模糊查询

    MyBatis基础入门<六>Like模糊查询 描述: 未改动的文件,不再粘贴出来.项目中SQL的xml映射文件重要标签如下: mapper namespace cache 配置给定命令空间 ...

  8. SpringMVC.入门篇《二》form表单

    SpringMVC.入门篇<二>form表单 项目工程结构: 在<springmvc入门篇一.HelloWorld>基础上继续添加代码,新增:FormController.ja ...

  9. Install the mongdb

    #!/bin/bash#Function: Install the mongdb#Author: WangDonghui#Date: 20180124 #Installing mongdbecho & ...

  10. beego 初体验 - orm - 增删改查

    本文记录一下 beego orm 简单的增删改查,大牛请绕道. 首先,注册4个增删改查的路由: 其次,在 views 文件夹下增加对应的模板(页面): controller 类里写上增删改查的方法: ...