mysql 实物开启_mysql总结

mysql总结

每日总结

安装sudo apt-get install mysql-server 安装服务端

sudo apt-get install mysql-client

sudo apt-get install update 更新 apt-get

sudo aot-get -f install 修复依赖关系

数据库服务端sudo /etc/init.d/mysql status 查看状态

sudo /etc/init.d/mysql start 打开

sudo /etc/init.d/mysql stop 关闭

sudo /etc/init.d/mysql restart 重启

客户端mysql -h主机地址 -u用户名 -p 密码

增添加数据库 CREATE DATABASE 数据库名;

添加表 CREATE TABLE table_name (column_name column_type);

添加字段 ALTER TABLE table_name ADD i INT;

添加数据 INSERT INTO table_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN );

删删除数据库 drop database ;

删除表 DROP TABLE table_name ;

删除字段 ALTER TABLE table_name DROP i;

删除数据 DELETE FROM table_name [WHERE Clause]

删除外键 alter table your_table_name drop foreign key your_foreign_key_id;

( show create table tablename) 查看外键

删除主键 (alter table customers modify c_id int;)

alter table customers drop primary key;

改修改表名 ALTER TABLE user10 RENAME TO user11;

修改字段名 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;

修改字段类型 ALTER TABLE table_name MODIFY c CHAR(10);

修改数据 UPDATE table_name SET field1=new, WHERE ''''

查库查询 show datavases

表查询 show tables

表结构查询 desc table_name

表数据查询 select * ''''''

聚合函数 , 唯一函数 \AVG

COUNT

MIN / MAX

SUM

order by

-- 按照name进行降序排序

select * from a order by name desc;

默认升序

group byselect name from score4 group by name;

select name,avg(fengshu) from score4 group by name;

主键

id int primary key not null auto_increment

表中的每一行都应该具有可以唯一标识自己的一列(或一组列)。而这个承担标识作用的列称为主键。如果没有主键,数据的管理将会十分混乱。比如会存在多条一模一样的记录,删除和修改特定行十分困难。

外键

创建表的时候增加外键:在所有的表字段之后,使用foreign key(外键字段) references 外部表(主键字段)

在新增表之后增加外键:修改表结构

alter table 表名 add [constraint 外键名字] foreign key(外键字段) references 父表(主键字段);

约束模式

外键有三种约束模式(都是针对父表的约束):

①district 严格模式(默认的),父表不能删除或者更新一个已经被子表数据引用的主键字段(不是被引用的记录,被引用的记录除外键字段外其它字段可以更新删除)

②cascade 级联模式,父表对主键字段的更新会使子表关联的外键字段对应更新;父表对主键字段的删除会使子表关联的外键字段所在记录被删除

set null 置空模式,父表对主键字段的更新或删除会使子表关联的外键字段被置空;

通常一个合理的约束模式,删除的时候子表置空,更新的时候子表级联操作

指定约束模式:foreign key(外键字段) references 父表(主键字段) on delete set null on update cascade;

索引创建索引 CREATE INDEX indexName ON mytable(columnName);

添加索引 ALTER table tableName ADD INDEX indexName(columnName)

建表的时候写索引 INDEX [indexName] (columnName)

*删除 DROP INDEX [indexName] ON mytable;

唯一索引 UNIQUE INDEX

显示索引 SHOW INDEX FROM table_name; \G

子查询

SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)

多表查询

SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件

连接查询

内连接select 字段名列表 from 表1 inner join 表2 on 条件

inner join 表3 on 条件

外连接左连接 select 字段列表 from 表1 left join 表2 on 条件语句

右连接 select 字段列表 from 表1 rigth join 表2 on 条件语句

内 外连接的区别内连接指的是把表连接时表与表之间匹配的数据行查询出来,就是两张表之间数据行匹配时,要同时满足ON语句后面的条件才行。

and左连接的意思是,无论是否符合ON语句后面的表连接条件都会把左边那张表的记录全部查询出来,右边的那张表只匹配符合条件的数据行。右连接则与之相反

数据备份

1数据备份(mysqldump ,在linux上备份)

mysqldump -uroot -p db2>db2.sql

将db2 备份到当前目录下

2数据恢复

mysql -uroot -p db2 < db2.sql;

在恢复库时,如果恢复到原来的库 ,会将表中的数据覆盖,新增的表不会删除

在恢复库时,如果库不存在,则必须先创建空库.

面试mysql理论

索引的优缺点

sql优化

避免全表扫描

1 where 字句尽量 不适应 != ,否则放弃索引,全表扫描.

2 尽量避免NULL 判断

3尽量避免用 or 连接条件 ,否则全表扫描

优化前

select id from t1 where id=10 or id =20

优化后

select id from t1 where id =10

union all

select id from t1 where id =20

4 模糊查询 尽量不免避免使用前置 % ,否则全表扫描

5 尽量避免使用in 和 not in ,否则全表扫描

6 bu

1锁类型

1读锁(共享锁)

查询 (select) 加读锁之后 ,别人不能更改此表记录,但可以进行查询.

2 写锁(互斥锁,排他锁)

更新(update) 加写锁之后,别人不能查,不能改

2锁粒度

行级锁 Innodb

表级锁 myisam select 加读锁 锁一张表 update 加写锁,锁表

存储引擎

show engines innodb myisam memory

查看 表的存储引擎

innodb 特点

1 支持实物事物 外键 行级锁

2 共享表空间

myisam

支持表级锁

独享表空间

表名.from 表记录

表名.MYD 表记录

表名.MYI 索引信息

如何决定使用哪一个存储引擎

查询多 用MyISAM

操作多 用InnoDB

mysql 分页 limit

mysql 索引

Mysql 账户管理

开启mysql远程连接

1 sudo -i

2 cp etc/mysql/mysql.cnf.d

3 cp mysql .cnf mysql.cnf.bak2 备份

4 vi mysqld.cnf

#bind-address=127.0.0.1

把前面的# 去掉 ,保存退出

用root 用户添加授权用户

用root 用户 登录mysql mysql -uroot -p13456

授权

mysql > grant 权限列表 on 库名.表名 (. 代表所有的库和表) to '用户名 '@'% ' identified by '密码' with grant option;

with grant option: 给用户 授权用户的权利

权限列表 : all privileges(全部) , select,update,drop,

库名.表名 : db2.* db2 库的所有表 . 全部的库 ,全部的表

grant all privileges on . to 'huang'@'%' identified by 'chengwei'

with grant option;

添加授权用户 rabbit 密码 ,对db2 库 所有表 只有查询权限,可以从任何ip连接

事物

事物操作

开启事物

mysql> begin; | start transactions

sql 命令 不会提交到数据库

终止事物

mysql > commit ; | rollback

事物里的操作,要么全做 要么全不做

mysql python

python3

模块 pymysql

安装 在线 sudo pip3 install pymysql

离线 解压pymysql.tar.gz 运行python3 setup.py install

python2

模块名 MySQLdb

db.close() 断开连接

db.rollback() 回滚

orm(object Relation Mapping) 对象关系映射

python 面向对象 ---- orm 框架 ----- mmysql 数据库

在django中,根据代码中的类自动生成数据库的表

类名对应------》数据库中的表名

类属性对应---------》数据库里的字段

类实例对应---------》数据库表里的一行数据

python 操作 mysql

1 pymysql 操作原生sql命令

2 orm 操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值