MySQL操作,以及常用命令
MySQL操作,以及常用命令
创建数据库:create database 数据库名;
操作数据库:use 数据库名;
显示所有数据库:show databases;
显示所有表:show tables;
创建表:create table 表名(字段名1 字段属性,字段名2 字段属性,…);
插入表数据:insert into 表名([字段名1,字段名2,…]) values (数据1,数据2, …);
更新表数据:update 表名 set 字段名1=要更新的数据 [,字段名2=要更新的数据] [where 条件]
删除表数据:delete from 表名 [where 条件];
删除表:drop table 表名;
删除数据库:drop database 数据库;
SQL语言分类:
数据定义语言DDL(Data Definition Language),其中包括 create 、drop、 alter、 show
数据操作语言DML(Data Manipulation Language),包括 insert 、update、delete
数据查询语言DQL(Data Query Language),包括 select
数据控制语言DCL(Data Control Language),包括 grant、revoke
事务控制语言DTL(Data Transacyion Language),包括 commit、rollback 等
自增属性:auto_increment
主键:primary key
查询不重复记录:
select distinct 字段名1 [,字段名2] from 表名
SELECT DISTINCT #查询名字不重复的记录(查询结果只有name属性)
name
FROM
user1;
SELECT DISTINCT #查询name和sex同时不重复的记录(查询结果为name和sex属性)
name,
sex
FROM
user1;
**distinct只能使用需要去重的字段进行操作。** \----也就是说我didtinct了name sex,两个字段,我后面想根据id进行排序,是不可以的,因为只能name,sex两个字段进行操作.(结果只有name和sex两个字段)
**distinct去重多个字段时,含义是:几个字段 同时重复 时才会被 过滤**
添加一列
alter table 表名 add 字段名 数据类型 字段属性 插入位置
插入位置:frist
删除一列
alter table 表名 drop 字段名
修改一列:
alter table 表名 change 原字段名 新字段名 数据类型 字段属性 插入位置
重命名表:
alter table 表名 rename 新表名
条件查询:
select 字段 from 表名 where 条件;
select * from student where sex=’男’ and age>20; //查询性别是男,并且年龄大于20岁的人。
where后面的条件可以用>、<、>=、<=、!=等多种比较运算符,多个条件之间可以用or、and等逻辑运算符
排序与受限查询:
select * from 表名 [where 表名 ] [order by 字段名1 [desc/asc] [,字段名2 [desc/asc]]]
select * from student order by age desc ; #查找学生表并按年龄倒叙排序
select * from 表名 LIMIT x,y 用于分页显示
x:起始偏移量(行号)
y:偏移行数
聚合查询:
select count(字段名) [as 别名] from 表名
min max sum avg
区间查询:
select * from 表名 where 字段名 between x and y
分组查询:
select name,count(*) from 表名 group by name
以name为分组,统计每个名字出现的次数
select name,count(*) from 表名 group by name having 条件
注意 : Group不能与where连用 使用条件的时候 使用having
子查询、联合查询:
一旦给表定义了别名,那么原始的表名就不能在出现在该语句的其它子句中
内连接inner join
select 别名1.字段名,别名2.字段名,别名3.字段名3
from 表名1 as 别名1
inner join 表名2 as 别名2
on 别名1.字段名=别名2.字段名
inner join 表名3 as 别名3
on 别名2.字段名=别名3.字段名
[where 条件]
外连接
左外连接返回左表中不符合连接条件,但符合查询条件的数据行,即左表的全部
左连接left join
select 别名1.字段名,别名2.字段名,别名3.字段名3
from 表名1 as 别名1
left join 表名2 as 别名2
on 别名1.字段名=别名2.字段名
left join 表名3 as 别名3
on 别名2.字段名=别名3.字段名
[where 条件]
模糊查询:
select * from 表名 where 列 like ‘值’
% _ 各种选择
两种表类型
innodb 特点:
1)支持事务、回滚
2)行级锁
3)支持外键约束
缺点:
1)占用空间大,操作慢,不支持全文索引
myisam特点:
1)表级锁
2)支持全文索引
缺点:
不支持事务处理,不支持外键约束
索引
作用:
加快查找速度,提高查找效率,加强表的联系实现多表查询,约束数据的有效性
主键索引:
确定每条记录的唯一性,主键不能为空,每个表中只能有一个主键
id int not null auto_increment primary key
外键索引:
当前表的外键,是关联表中的主键中的数据。关联的外键和主键具有约束性
foreign key(外键名) references 关联表(主键)
唯一索引:
避免出现重复的值, 不提升访问速度
name char(30) not null default ‘DB’ unique
普通索引:
依附在某一列上,提高查询速度
create index 索引名 on 表名(字段名)
查看索引:show index from 表名
删除索引:drop index 索引名 on 表名
缺点:
影响运行速度,耗费空间,创建维护索引消耗时间
#
视图
创建视图:
create view 视图名 as select 语句
查询视图:
show create view 视图名
删除试图:
dorp view 视图名
在视图中对数据的增删改查与在表中都一样
用户管理
创建用户:
create user ‘用户名’@’地址’ identified by ‘密码’
修改密码:
update user set password = PASSWORD(‘密码’) where user = ‘用户名’@’地址’
删除用户:
drop user 用户名
授以用户的权限:
grant 权限 on 数据库.表 to ‘用户名’@’登录主机’
权限的类型:
数据权限、表结构、外键等(select insert delete ….)
收回权限:
revoke 权限 on 数据库.表 from ‘用户名’@’登录主机’
数据库事务
回滚:
rollback
关闭自动提交:
set autocommit = 0
开启自动提交:
set autocommit = 1
提交:
commit
数据库备份与恢复
备份方式:
mysqldump -u root -p 数据库名 数据表名1、表名2 密码 > 路径
恢复方式:
mysql -u root -p 密码 数据库名 < 路径
摘至本人有道云笔记
2018/08/15 20:53
《数据库操作》
还没有评论,来说两句吧...