MySQL常用处理

一、常用命令

1、USE 数据库名 :选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
2、SHOW DATABASES;:列出 MySQL 数据库管理系统的数据库列表。
3、SHOW TABLES;:显示指定数据库的所有表,使用该命令前需要使用 use命令来选择要操作的数据库。
4、SHOW COLUMNS FROM 数据表;:显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
5、CREATE DATABASE testdb charset “utf8”; :创建一个叫testdb的数据库,且让其支持中文
6、DROP DATABASE testdb;:删除数据库
7、SHOW INDEX FROM 数据表;:显示数据表的详细索引信息,包括PRIMARY KEY(主键)。

二、数据类型

1、数值类型
这里写图片描述
2、日期和时间类型
这里写图片描述
3、字符串类型
这里写图片描述

三、grant 授权命令

语法
GRANT privilege [, …] ON object [, …] TO { PUBLIC | GROUP group | username }
可能的权限有:
SELECT :访问声明的表/视图的所有列/字段.
INSERT :向声明的表中插入所有列字段.
UPDATE :更新声明的表所有列/字段.
DELETE :从声明的表中删除所有行.
RULE :在表/视图上定义规则 (参见 CREATE RULE 语句).
ALL :赋予所有权限
例子:

GRANT ALL ON testdb.* TO 'pzh'@'localhost' IDENTIFIED BY '123';

给本机授权,允许pzh在本机,可以对testdb数据库进行所有的操作,密码123,命令执行后会自动在user表中插入一条数据

四、ALTER命令

1、删除,添加或修改表字段

ALTER TABLE student DROP COLUMN age; #从student表删除age字段
ALTER TABLE student ADD tel INT(11) NOT NULL; #添加teldbdb字段

2、修改字段类型及名称

ALTER TABLE student MODIFY tel CHAR(11); #把字段 tel 的类型从 INT(11) 改为 CHAR(11)
ALTER TABLE student CHANGE tel phone int(11);#把字段 tel 的类型改为 INT(11) ,并且将字段名修改为 phone

3、ALTER TABLE 对 Null 值和默认值的影响

ALTER TABLE student MODIFY phone VARCHAR(11) NOT NULL DEFAULT '12345678901'; );#把字段 phone 的类型改为 VARCHAR(11) ,并且将设置非空及默认值

4、修改表名

ALTER TABLE student RENAME TO stu;

五、NULL处理

1、IS NULL: 当列的值是NULL,此运算符返回true。
2、IS NOT NULL: 当列的值不为NULL, 运算符返回true。
3、<=>: 比较操作符(不同于=运算符),当比较的的两个值为NULL时返回true(或者是1)

select name<=>null from stu

当name为NULL的时候,返回1或者true,其余为0或者fals

六、join连接的差异

这里写图片描述

七、事务

1、事务的特点
一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)
1)事务的原子性:一组事务,要么成功;要么撤回。
2)稳定性 : 有非法数据(外键约束之类),事务撤回。
3)隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
4)可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。
在MySQL中只有使用了Innodb数据库表才支持事务

begin; #开始一个事务
rollback; #回滚 , 这样数据是不会写入的
commit; #写代码片

八、索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

使用索引有很多好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。

1、创建索引

CREATE INDEX indexName ON mytable(username(length);

2、修改索引

ALTER mytable ADD INDEX [indexName] ON (username(length)) 

有四种方式来添加数据表的索引:

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULLALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。

3、删除索引

SHOW INDEX FROM table_name\G

猜你喜欢

转载自blog.csdn.net/xiaoshiyiqie/article/details/80269924