【MySQL】基础使用(二):常用 SQL 语句大全
1.库操作
登录数据库
mysql -h {
ip} -u {
username} -p{
password} -P {
port}
# -h ip默认是 localhost
# -p 指定密码时中间不要空格,比如 -p123456
# -P 端口默认是 3306
增
create database 库名
删
drop database 库名
查
show databses
用
use 库名
2.表操作
增
create table 表名( 列名 类型 约束 )
PS:约束是为了数据完整性,常见的有:
- 主键约束 primary key
- 非空约束 not null
- 唯一约束 unique
- check 约束(自定义条件)
eg
CREATE TABLE t_user (
uid BIGINT AUTO_INCREMENT,
uname VARCHAR(50) NOT NULL,
uage INT NOT NULL,
PRIMARY KEY(uid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
删
drop table 表名
改
重命名
rename table 旧名 to 新名
列操作
Alter table 表名 add 列名 类型 约束 // 新增
Alter table 表名 drop // 删除
Alter table 表名 change 旧名 新名 dataType // 修改列信息
Alter table 表名 modify 列名 类型 约束 // 列类型修改
索引操作
ALTER table 表名 add PRIMARY KEY (列名) // 添加主键索引
ALTER table 表名 add UNIQUE (列名) // 添加唯一索引
ALTER table 表名 add INDEX (列名) // 添加普通索引
ALTER table 表名 add INDEX (列名1,列名2) // 添加联合索引
show index from 表名 // 查看索引信息
ALTER table 表名 drop INDEX 索引名 // 删除索引
查
show tables
查看某个数据表信息
describe 表名
3.数据操作
insert
insert into 表(列,列)values ( , )
注:不考虑自增主键
delete
delete from 表 where ...
update
update 表 set 列=值 where ...
select
基本查询
select 列 from 表 where ...
1)单表查询
select 列(+n) (as别名) from 表 (别名) where ... (order by 列 ASC/DESC)
where条件:
- 逻辑运算符:and / or / not
- 关系运算符:= / <= / >= 或者 in( , ) / between … and …
- 模糊查询:like(“%…%”)
- isNull等
分页查询:
select 列 from 表 limit (page-1)*n,n
2)多表查询
联合查询:
select 列 from 表1 ~join 表2 on 表1.字段= 表2.字段
# 这种写法默认是内连接
select 列 from 表1,表2 where 表1.字段=表2.字段
- inner join : 内联,返回左右表联结字段都非空的行
- left join:左联,返回左表所有与右表联结字段非空的行
- right join:右联,返回右表所有与左表联结字段非空的行
- outter join:外联,返回左右表所有的行
嵌套查询:
select * from 表1 where 表1.列1 in (select * from 表2)
select * from (select 列 from 表1 where ...)
集合查询(并集):
select 相同列名 from 表1 union select 同列名 from 表2
注:union默认去重,union all允许重复
3)聚合函数
select count(列)/sum(列)/max(列)/min(列)/arg(列) from 表 (group by(列)) (having) ...
group by : 将相同的分为一组(一行数据),常配合聚合函数使用
where与having的区别?
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据。where条件中不能包含聚合函数,可以使用where条件过滤出特定的行。
Having字句与where子句一样可以进行条件判断的,另外Having子句通常用来筛选满足条件的组,即在分组之后过滤数据。条件中经常包含聚合函数,使用having条件过滤出特定的组,也可以使用多个分组标准进行分组。
通常使用group by+having的时候会使用聚合函数,因为分组之后的列要么是聚合函数,要么是group by(列)中的列。
4.视图操作
视图(view),是一种有结构(有行有列),但没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义的,而是从对应的基表(视图的数据来源)中产生的。
对视图的修改,会改变基本表的数据,
- 单表视图一般用于查询和修改(会改变基本表数据)
多表视图一般用于查询(不会改变基本表的数据)
—创建视图—
CREATE VIEW 视图名 AS select语句—查看有哪些视图—
show table status where comment=’view’;—从视图中检索数据—
SELECT 列 FROM 视图名 WHERE 条件—删除视图—
drop VIEW 视图名;
还没有评论,来说两句吧...