博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql基础
阅读量:5960 次
发布时间:2019-06-19

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

链接数据库

Mysql -h localhost -uUserName -pPassWd复制代码

查看所有库,选择库,删除库,创建库

查看所有表,删除表,创建表,清空表,查看表结构(desc)

清空表:

  1. truncate table_name 扔掉重建
  2. delete 删除

如何破解数据库的密码?

  1. 通过任务管理器或者服务管理,关掉mysqld(服务进程)

  2. 通过命令行+特殊参数开启:Mysqld --skip-grant-tables

  3. 此时,mysqld服务进程已经打开,并且,不需要权限检查.

  4. mysql -uroot 无密码登陆服务器.

  5. 修改权限表

    • use mysql;
    • update user set Password = password('11111') where User = 'root';
    • flush privileges;
  6. 通过任务管理器,或服务管理,关掉mysqld服务进程.

  7. 再次通过服务管理,打开mysql服务.

对表数据增删改查:

  1. insert into table_name (v1,v2...) values (v1,v2...);
  2. Update 表名 Set 列1 = 新值 1,列n = 新值n..... Where expr;
  3. Delete from 表名 where expr;
  4. Select 列1, 列2, 列3,...列n From 表名 Where expr;

整型,字符,日期

  1. char型:如果不够M个字符,内部用空格补齐,取出时再把右侧空格删掉(这意味着,如果右侧本身有空格,将会丢失
  2. Date 日期 1998-12-31
  3. Time 时间 13:56:23
  4. datetime 时期时间 1998-12-31 13:56:23
  5. timestamp

修改表

为什么建表时,加not null default '' / default 0

不想让表中出现null值.

为什么不想要的null的值

不好比较,null是一种类型,比较时,只能用专门的is null 和 is not null来比较. 碰到运算符,一律返回null 效率不高,影响提高索引效果.

用count(*),count(1),谁好呢?

  1. 对于myisam引擎的表,没有区别的.这种引擎内部有一计数器在维护着行数.
  2. Innodb的表,用count(*)直接读行数,效率很低,因为innodb真的要去数一遍.

清除重复值

SELECT DISTINCT 字段名 FROM 表名

like模糊查询( % ,_ )

子查询

  1. 子查询的结果是单行单列
    • SELECT 查询字段 FROM 表 WHERE 字段=(子查询);
  2. 子查询的结果是多行单列
    • SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
  3. 子查询的结果是多行多列
    • SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件;

多表查询

  1. A left OUTER join B on 条件
  2. A inner join B

sql1 union sql2 (列数相同)

1. mysql的函数肯定是要影响查询速度.

应该在建表时,通过合理的表结构减少函数的使用. 比如 email ,按@ 前后拆分.

2. 如果确实要用函数,

比如 时间的格式化 在mysql里用date_format,在php里用date可以实现 优先放在业务逻辑层,即php层处理.

3. 在查询时使用了函数,最大的一个坏处,

以 date_format(A)为例 则A列的索引将无法使用.

事务

  1. 原子性
  2. 隔离性
  3. 一致性
  4. 持久性
  • innobdb

  • start transaction;

  • Commit 提交

  • rollback 回滚

脏读,不可重复读(update),幻读(insert,delete)

索引

索引的创建原则:

  1. 不要过度索引
  2. 在where条件最频繁的列上加.
  3. 尽量索引散列值,过于集中的值加索引意义不大.

索引的类型

  1. 普通索引: index 仅仅是加快查询速度.
  2. 唯一索引: unique index 行上的值不能重复
  3. 主键索引: primary key 不能重复.
  4. 主键必唯一,但是唯一索引不一定是主键.
  5. 一张表上,只能有一个主键, 但是可以用一个或多个唯一索引.
  6. 全文索引 : fulltext index

建立索引

可以在建表时,直接声明索引,即在列声明完毕后,声明索引. 例如下:

create table test5 ( id int, username varchar(20), school varchar(20), intro text, primary key (id), unique (username), index (school), fulltext (intro) ) engine myisam charset utf8;复制代码

查看一张表上所有索引

Show index from 表名

添加索引

Alter table 表名 add index /unique/fulltext [索引名] (列名)Alter table 表名  add primary key (列名)   // 不要加索引名,因为主键只有一个复制代码

删除索引

  1. 删除非主键索引:Alter table 表名 drop index 索引名;
  2. 删除主键: alter table 表名 drop primary key

查看现有的存储过程:

Show procedure status复制代码

删除存储过程

Drop procedure 存储过程的名字

调用存储过程

Call 存储过程名字();

转载地址:http://uzfax.baihongyu.com/

你可能感兴趣的文章
shell 基础
查看>>
twisted的LineReceiver的接口定义
查看>>
浅解用PHP实现MVC
查看>>
MySQL常用操作
查看>>
Yxcms网站管理系统安装
查看>>
Android学习笔记---Matrix矩阵
查看>>
算法导论自学1-2章
查看>>
圆满结束【一对一私人定制,我和马哥有个约会】
查看>>
java中的Bean Validation
查看>>
spring-data-redis 使用过程中需要注意的一点
查看>>
vsftp
查看>>
Cloudera Hadoop 4系列实战课程(电商业日志流量分析项目)
查看>>
字符串,链表,树
查看>>
Linux学习笔记:MySQL主从同步
查看>>
Nginx错误日志(error_log)配置及信息详解
查看>>
Highcharts 学习笔记
查看>>
高性能python编程之协程
查看>>
PHP编译过程中常见错误信息的解决方法
查看>>
redis服务端及php客户端安装方法
查看>>
定时删除文件
查看>>