博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql(三)-数据库操作
阅读量:5798 次
发布时间:2019-06-18

本文共 4439 字,大约阅读时间需要 14 分钟。

数据库存储引擎

设置默认的存储引擎:

vim /etc/my.conf[mysqld]default_storage_engine= InnoDB;

查看mysql支持的存储引擎:

show engines;

查看当前默认的存储引擎:

show variables like '%storage_engine%';

查看库中所有表使用的存储引擎

Show table status from db_name;

查看库中指定表的存储引擎

show table status like ‘tb_name‘;show create table tb_name;

设置表的存储引擎:

CREATE TABLE tb_name(... ) ENGINE=InnoDB;ALTER TABLE tb_name ENGINE=InnoDB;

数据库操作

命名规则:

必须以字母开头可包括数字和三个特殊字符(# _ $)不要使用MySQL的保留字同一database(Schema)下的对象不能同名

创建数据库

create database if not exists newdb;       if not exists:条件判断,如果不存在就创建数据库创建一个默认字符集为utf8的数据库create database db default character set utf8;create database db default collate 'utf8_general_ci';

查看一个数据库创建时的默认字符集

show create database newdb;+----------+------------------------------------------------------------------+| Database | Create Database                                                  |+----------+------------------------------------------------------------------+| newdb    | CREATE DATABASE `newdb` /*!40100 DEFAULT CHARACTER SET latin1 */ |+----------+------------------------------------------------------------------+

查看支持所有字符集

SHOW CHARACTER SET;

查看支持所有排序规则

SHOW COLLATION;

修改数据库

语法:ALTER database 数据库名 修改的属性 ...修改指定数据库默认字符集alter database db default character set utf8;

删除数据库(删除操作无法恢复)

drop database if exists newdb;               if exists:条件判断,如果不存在就创建数据库

数据表操作

查看表结构

desc 表名;

查看表状态

show table status from db

创建表

全新创建表

CREATE TABLE [IF NOT EXISTS] '表名' (字段名1 类型 修饰符, 字段名2 类型 修饰符, ...)

基于现有表创建新表,主键会丢失

create table 新表名 select * from 旧表名;

基于现有表数据插入到新表,新表结构必须与旧表一致

insert into db select * from mysql.user;
所有类型:•NULL 数据列可包含NULL值•NOT NULL 数据列不允许包含NULL值•DEFAULT 默认值•PRIMARY KEY 主键•UNIQUE KEY 唯一键•CHARACTER SET name 指定一个字符集数值型•AUTO_INCREMENT 自动递增,适用于整数类型•UNSIGNED 无符号

示例

create table students     -> (id int unsigned not null primary key,    -> name varchar(20) not null,    -> age tinyint unsigned);desc students;+-------+---------------------+------+-----+---------+-------+| Field | Type                | Null | Key | Default | Extra |+-------+---------------------+------+-----+---------+-------+| id    | int(10) unsigned    | NO   | PRI | NULL    |       || name  | varchar(20)         | NO   |     | NULL    |       || age   | tinyint(3) unsigned | YES  |     | NULL    |       |+-------+---------------------+------+-----+---------+-------+取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~255)

表别名

select user as 用户,host as 主机 from mysql.user;+--------+-----------+| 用户   | 主机      |+--------+-----------+| hunk3  | %         || root   | 127.0.0.1 |

创建一个纯粹的索引

优点:提高查询速度

缺点:占用额外空间,影响插入速度

索引实现在存储引擎

查看表上的索引

SHOW INDEXES FROM [db_name.]tbl_name;

在没有索引前,找到RAFAH记录一共找了4321行

explain select * from city where NAME='RAFAH'\G;*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: city         type: ALLpossible_keys: NULL          key: NULL      key_len: NULL          ref: NULL         rows: 4321             查找了多少行        Extra: Using where

创建索引

create index 索引名 on 表名(需要索引的字段)create index index_name on city(name);*************************** 3. row ***************************        Table: city   Non_unique: 1     Key_name: index_name       这里是索引名 Seq_in_index: 1  Column_name: Name    Collation: A  Cardinality: 184     Sub_part: NULL       Packed: NULL         Null:    Index_type: BTREE      Comment: Index_comment: 同时,查看表结构的时候,发现在Name中的key栏出现了MULdesc city    -> ;+-------------+----------+------+-----+---------+----------------+| Field       | Type     | Null | Key | Default | Extra          |+-------------+----------+------+-----+---------+----------------+| ID          | int(11)  | NO   | PRI | NULL    | auto_increment || Name        | char(35) | NO   | MUL |         |                || CountryCode | char(3)  | NO   | MUL |         |                || District    | char(20) | NO   |     |         |                || Population  | int(11)  | NO   |     | 0       |                |+-------------+----------+------+-----+---------+----------------+

利用了索引之后

explain select * from city where NAME='RAFAH'\G;*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: city         type: refpossible_keys: index_name          key: index_name      key_len: 35          ref: const         rows: 1                查找了一行        Extra: Using index condition

删除索引

drop index 索引名 on 表名drop index index_name on city;

转载于:https://blog.51cto.com/191226139/2092002

你可能感兴趣的文章
开发者论坛一周精粹(第五十五期) 全站HTTPS之OSS教程 一次可以备案几个网站?...
查看>>
(干货)Linux学习资源推荐
查看>>
蓝图(Blueprint)详解
查看>>
Spark之SQL解析(源码阅读十)
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
C#字符串的不变性
查看>>
前端路由简介以及vue-router实现原理
查看>>
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)...
查看>>
分享15款很实用的 Sass 和 Compass 工具
查看>>
AMD优势: 与众不同 选择丰富
查看>>
玩转高性能超猛防火墙nf-HiPAC
查看>>
简单按日期查询mysql某张表中的记录数
查看>>
自动化部署之jenkins发布PHP项目
查看>>
C/C++编程可用的Linux自带工具
查看>>
Oracle ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名...
查看>>
多线程之volatile关键字
查看>>
如何判断webview是不是滑到底部
查看>>
Raptor实践2——控制结构
查看>>
Smartisan OS一步之自定义拖拽内容
查看>>
海贼王十大悲催人物
查看>>