Mysql 基本操作

122 阅读6分钟

1、连接数据库

MySQL-u账号 -p
密码

2、数据库信息

创建数据库

    create database 数据库名;

删除数据库

    drop database 要删除的数据库名;

查看所有数据库

    show databases;

选择数据库---切换数据库

    use 数据库名;

查看当前使用的数据库

    select database();

查看当前数据占用的端口号(默认3306)

    show variables like 'port';

查看所有数据库容量大小

    select 
    table_schema as '数据库',
    sum(table_rows) as '记录数',
    sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
    sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
    from information_schema.tables
    group by table_schema
    order by sum(data_length) desc, sum(index_length) desc;

查看指定数据库容量大小

    select 
    table_schema as '数据库',
    sum(table_rows) as '记录数',
    sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
    sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
    from information_schema.tables
    where table_schema='要查询的数据库';

查看选择数据库各表容量大小

    select 
    table_schema as '数据库',
    table_name as '表名',
    table_rows as '记录数',
    truncate(data_length/1024/1024, 2) as '数据容量(MB)',
    truncate(index_length/1024/1024, 2) as '索引容量(MB)'
    from information_schema.tables
    where table_schema='要查询的数据库'
    order by data_length desc, index_length desc;

查看当前数据库编码

 show variables like 'character%';
 
character_set_client      为客户端编码方式;
character_set_connection  为建立连接使用的编码;
character_set_database    为数据库的编码;
character_set_results     为结果集的编码;
character_set_server      为数据库服务器的编码;

3、数据表信息

查看当前数据库所有表

    show tables;

创建表

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果你不想字段为 **NULL** 可以设置字段的属性为 **NOT NULL**, 在操作数据库时如果输入该字段的数据为**NULL** ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。

删除表

DROP TABLE 表名;

添加字段

ALTER TABLE 表名 ADD 字段名 INT(字段类型);

删除字段

ALTER TABLE 表名  DROP 字段名;

修改字段类型

ALTER TABLE 表名 MODIFY 字段 类型 CHAR(10);

修该字段名称及类型

ALTER TABLE 表名 CHANGE 字段名 新字段名 BIGINT(类型);

查看字段类型详细信息

desc 表名; 
show columns from 表名;
describe 表名;

查看数据

select *(字段逗号分隔,*代表所有字段) from 表;

查询某一列数据

select 列名 from 表名

查询某一列数据,去重展示

SELECT DISTINCT 列名称 FROM 表名称

条件筛选

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

运算符

             = 等于
             > 大于
             < 小于
             <>不等于 
             >=大于等于
             <=小于等于
             BETWEEN 在某个范围内 
             LIKE 模糊查询

多条件并列

SELECT * FROM 表名 WHERE 字段='值' AND 字段='值'
SELECT * FROM 表名 WHERE 字段='值' OR 字段='值'
复杂条件独立 用括号隔离条件
LECT * FROM 表名 WHERE (字段='值' OR 字段='值')
AND 字段='值'

查询排序 DESC 逆序 ASC 顺序

SELECT * FROM 表名 ORDER BY 字段一 DESC, 字段二 ASC

向表中插入数据 如果是全部字段都有值则可省略 (列1, 列2,...)

INSERT INTO 表名 (列1, 列2,...) VALUES (值1, 值2,....)

更新数据

UPDATE 表名 SET 字段1=1, 字段2=2 WHERE 条件

删除数据

DELETE FROM 表名 WHERE 条件

正则表达式查寻 语法

SELECT * FROM 表名 WHERE 字段  REGEXP '^3'(表达式,正则);
|^           | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n''\r' 之后的位置。            |
| ---------- | ------------------------------------------------------------------------------ |
| $          | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n''\r' 之前的位置。             |
| .          | 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。                        |
| [...]      | 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'|
| [^...]     | 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'|
| p1|p2|p3 | 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 |
| **         | 匹配前面的子表达式零次或多次。例如,zo 能匹配 "z" 以及 "zoo"。* 等价于{0,}。                               |
| +          | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。                |
| {n}        | n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。           |
| {n,m}      | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

4、 事务

原子性 一致性 隔离性 持久性
开启事务  start transaction
添加保存点 savepoint 保存点名称
提交事务 commit
回滚事务 rollback
删除事物的一个保存点 release savepoint 保存点名称(必须有保存点名称)
事务回滚到保存点 rollback to 标记点保存点

5、索引

  Normal 普通索引
  Unique 唯一索引
  Full Text 全文索引
  SPATIAL 空间索引
  
  
Normal 普通索引
表示普通索引,大多数情况下都可以使用
  
unique 表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为;
约束唯一标识数据库表中的每一条记录,即在单表中不能用每条记录是唯一的(例如身份证就是唯一的),Unique(要求列唯一)和Primary Key(primary key = unique + not null 列唯一)约束均为列或列集合中提供了唯一性的保证,Primary Key是拥有自动定义的Unique约束,但是每个表中可以有多个Unique约束,但是只能有一个Primary Key约束。
Primary Key 主键自增、唯一、且不为空

Full Text 全文索引
表示全文收索,在检索长文本的时候,效果最好,短文本建议使用Index,但是在检索的时候数据量比较大的时候,现将数据放入一个没有全局索引的表中,然后在用Create Index创建的Full Text索引,要比先为一张表建立Full Text然后在写入数据要快的很多
FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。   index(普通索引,即Normal)

SPATIAL 空间索引
空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建

查看索引

  SHOW INDEX FROM table_name; \G   可以通过添加 \G 来格式化输出信息

创建(普通)索引

    CREATE INDEX 索引名称 ON 表名(字段(长度length)); 
          如果是CHARVARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

修改表结构(添加(普通)索引)

ALTER table tableName ADD INDEX indexName(columnName)

删除(普通)索引

DROP INDEX 索引名 ON 表名; 

创建(唯一)索引

CREATE UNIQUE INDEX indexName ON mytable(username(length)) 

添加(唯一)索引

ALTER table mytable ADD UNIQUE 索引名称 (字段(长度length))