mysql指令集_Mysql常用指令集

本文详细介绍了MySQL数据库的创建、数据表管理、查询、删除、修改、事务处理、用户管理和权限控制等核心内容,包括数据表操作、SQL查询技巧、事务隔离级别以及权限分配,适合数据库开发者和系统管理员参考。

1、创建(Create)

1.数据库

- create database if not exists name; 创建数据库

- create database character set gbk; 指定编码创建数据库

2.数据表

- create table if not exists tablename(id int(10) primary key auto_increment,name varchar(20) ,age int(3)); 创建表

- create tablename like tablename2;复制表

- insert into 表名 (列名1,列名2) values (值1,值2); 插入数据

2、查询(Retrieve)

1.数据库

show create database name 查看创建信息

2.数据表

- show tables; 显示表

- describe tablename;或者 desc tablename; 查看表结构

- select 中加上distinct去除重复字段

- select 列名1,列名2 from 表名字;查询

- select 列名1,列名2 from 表名字 order by 列名1 ASC,列名 DESC; 排序查询(列名1升序,相同则按列名2降序)

- select count(列名或*) from tablename; 查询有多少条数据(排除null)

- select count(IFNULL(列名,值)) from wxxs;把值赋给null,然后统计数据条数

- select max(列名或*) from tablename;列最大值

- select min(列名或*) from tablename;列最小值

- select avg(列名或*) from tablename;列平均值

- select sum(列名或*) from tablename;列的和

- select sex,avg(age) from tablename group by sex;按照性别分组查询,男女平均年龄

- select sex,avg(age),count(id) from tablename group by sex where age>20 having count(id)>2;按照性别分组查询,男女平均年龄,除去年龄大于20岁的,分组后现在数量大于2个的;where用在分组前(不可跟聚合函数(sum之类)),having用在分租后;

- select sex,avg(age),count(id) **num** from tablename group by sex where age>20 having **num**>2; 别名

- select * from 表名 limit 开始索引,一页显示条数;分页查询;

- select * from 表名 where id between 5 and 10;查询id为5到10的

- select * from 表名 where id in (5,10);查询id为5和10的数据

- select * from 表名 where id is (not) null;查询id为(非)空的数据

- select * from 表名 where name like '_张%';_匹配一个字符,%匹配多个字符;

3、删除(Delete)

1.数据库

- drop database name ;直接删除数据库,不提醒

- drop datebase name if exists; 存在则删除数据库

- mysqladmin drop databasename 删除数据库前,有提示。

2.数据表

- delete from 表名字 where 条件;删除满足条件的数据

- delete from 表名; 删除所有数据(效率低)

- truncate table 表名字;清空表数据(实际是删除再创建,效率高)

4、修改(Update)

1.数据库

alter datebase name character set utf8; 修改编码

2.数据表

- alter table tablename rename to NewName;修改表名字

- alter table tablename character set utf8; 修改编码

- alter table tablename add 列名 数据类型;增加一列

- alter table tablename change 列名 新列名 新数据类型; 修改列

- alter table tablename modify 列名 数据类型; 修改列数据类型

- alter table tablename drop 列名; 删除列

- uptate tablename set 行名=值,行名=值 where 条件; 修改满足条件的值

- uptate tablename set 行名=值;修改指定列名的所有数据位指定值

5、使用数据库

use databasename; 选择数据库

select database(); 查看当前使用的数据库

select version(),current_date; 显示当前mysql版本和当前日期

6、约束

非空约束 not null;创建表时添加,或者使用alter添加/删除(alter table 表名 modify 列名 数据类型 not null),删除时不加not null即可;

唯一约束 unique;可以有多个null,创建表时添加,或者使用alter添加/删除(alter table 表名 drop index 列名),添加和非空约束一样;

主键约束 primary key;添加auto——increment可实现自增长,alter添加/删除与not null一样格式;

外键约束 foreign key;

a.创建表时添加

constraint 外健名称 foreign key 外键列名称 references 主表名称(主表列名称);

b.创建后alter添加

alter table tablename constraint 外健名称 foreign key 外键列名称 references 主表名称(主表列名称);

c.删除

alter table tablename drop foreign key 外键名字;

d.级联 更新/删除

alter table tablename constraint 外健名称 foreign key 外键列名称 references 主表名称(主表列名称)on update cascade on delete cascade;

主表删除从表数据也被删除,更新同理

7、多表查询

A、内连接查询

a.隐式内连接

select * from 表一名,表二名 where 条件;

b.显示内连接

select * from 表一名 别名1 (inner) join 表二名 别名2 on 条件;

select * from table1 w (inner) join table2 m on w.id=m.id;

B、外连接查询

a.左外连接

select 字段列表 from 表一名 left (outer) join 表二 on 条件;

查询左表全部,加上右表与左边交集;

b.又外连接

select 字段列表 from 表一名 right (outer) join 表二 on 条件;

查询又表全部,加上左表与右边交集;

C、子查询

把查询语句当成条件使用来进行查询

a。子查询结果是单行单列的

b。子查询结果是单行多列的

c。子查询的结果是多行多列的

8、事务

a.基本操作

事务开启(start transaction),执行sql,发现错误回滚事务(rollback),没出错提交事务(commit);

select @@autocommit;查看自动提交, 1为自动0为手动;

set @@autocommit=0;设置为手动提交

b.事务的四大特征

隔离性:多个事务之间,相互隔离。

原子性:是不可分割的,要么同时成功,要么同时失败。

持久性:事务提交或者回滚之后,数据会持久化保存。

一致性:数据总量不变。例如转账

c.事务的隔离级别

脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。

幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

事务隔离级别 脏读 不可重复读 幻读

读未提交(read-uncommitted) 是 是 是

不可重复读(read-committed) 否 是 是

可重复读(repeatable-read) 否 否 是

串行化(serializable) 否 否 否

查询隔离级别:select @@tx_isolation;

设置隔离级别:set global transaction isolation level 级别名;

9、用户模块

1.用户管理

1.添加用户

create user '用户名'@'主机名' identified by '密码';

2.删除用户

drop user '用户名'@'主机名';

3.修改密码

update user set passward=passward('新密码') where user='用户名';

set password for '用户名'@'localhost'= password('新密码');

4.重置root密码

停止mysql服务(net stop mysql)->管理员执行(mysqld -skip-grant-tables)->新开窗口cmd(mysql)->修改密码;

5.查询用户

select (host,user,passeword) from user;

2.权限管理

1.查询权限

show grants for '用户名'@'主机名'

2.授予权限

grant 权限列表 on 数据库名.数据表名 to '用户名'@'主机名'

grant ALL on . to '用户名'@'主机名';给全部权限;

grant update,select on 数据库名.数据表名 to '用户名'@'主机名';给特定表更新查询权限;

3.撤销权限

revoke 权限列表 on 数据库名.数据表名 from '用户名'@'主机名'

revoke ALL on . from '用户名'@'主机名';撤销全部权限;

revoke update,select on 数据库名.数据表名 from '用户名'@'主机名';撤销特定表更新查询权限;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值