MySQL 基础语句
一、DDL 数据库定义语言
1.1CREATE 创建
1.1.1 创建数据库
语法结构
sql
CREATE DATABASE database_name;
示例
sql
CREATE DATABASE demo;
1.1.2 创建表
语法结构
sql
CREATE TABLE 表名 (
列1 数据类型,
列2 数据类型,
...
);
示例
sql
CREATE TABLE new_user (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
1.1.3 创建视图
语法格式
sql
create view <视图名> as select查询语句
示例
sql
create view user_view as select id,user_id,user_name from `user`
select * from user_view
1.1.4 创建索引
索引名建议以 idx开头。
语法格式
sql
CREATE INDEX 索引名 ON 表名 (列名);
示例
sql
CREATE INDEX idx_user_id ON user (user_id);
可通过explain进行验证
sql
explain select * from user where user_id = 'wu'
1.2 ALTER 修改
1.2.1 添加列
语法结构
sql
ALTER TABLE 表名 ADD 列名 数据类型;
示例
sql
ALTER TABLE user ADD age int(11) DEFAULT null COMMENT '年龄';
1.2.2 删除列
语法结构
sql
ALTER TABLE 表名 DROP 列名;
示例
sql
ALTER TABLE user DROP user_age;
1.2.3 修改列名
语法结构
sql
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;
示例
sql
ALTER TABLE user CHANGE age user_age int(11) DEFAULT null COMMENT '新年龄';
1.2.4 修改列数据类型
语法结构
sql
ALTER TABLE 表名 MODIFY 列名 新数据类型;
示例
sql
ALTER TABLE user MODIFY user_age varchar(16);
1.2.5 修改表名
语法结构
sql
ALTER TABLE 表名 RENAME TO 新表名;
示例
sql
ALTER TABLE user RENAME TO new_user;
1.2.6 创建索引
语法结构
sql
ALTER TABLE 表名 ADD INDEX 索引名 (列名);
示例
sql
ALTER TABLE user ADD INDEX idx_user_id (user_id);
1.2.7 删除索引
语法结构
sql
ALTER TABLE 表名 DROP INDEX 索引名;
示例
sql
ALTER TABLE user DROP INDEX idx_user_id;
1.3 DROP 删除
1.3.1 删除库
语法结构
sql
DROP DATABASE 数据库名称
示例
sql
DROP DATABASE demo
1.3.2 删除表
语法结构
sql
DROP TABLE 表名;
示例
sql
DROP TABLE new_user;
1.3.3 删除视图
语法结构
sql
DROP VIEW view_name;
示例
sql
DROP VIEW user_view;
二、DML 数据库操作语言
2.1 INSERT
2.1.1 插入单条
sql
INSERT INTO USER (user_id,user_name,create_time,dept_id) VALUES('sa','saname',now(),1)
2.1.2 插入多条
sql
INSERT INTO USER (
user_id,
user_name,
create_time,
dept_id
)
VALUES
('sa1', 'saname1', now(), 1),
('sa2', 'saname2', now(), 1),
('sa3', 'saname3', now(), 1)
2.2 UPDATE
sql
UPDATE USER
SET dept_id = 2
WHERE
user_id = 'sa2'
2.3 DELETE
sql
delete from user where user_id = 'sa1'
三、DQL 数据库查询语言
3.1 基础语法结构
sql
select <列名>
from <表名>
where <筛选条件>
group by <列名>
having <聚合筛选条件>
order by <排序字段>
limit <条数限制>
3.2 常见的查询语句
3.2.1 条件查询
大于、小于、不等于
大于
sql
select * from user where id > 5
小于
sql
select * from user where id < 5
不等于
sql
select * from user where id != 5
select * from user where id <> 5
BETWEEN 介于两者范围之内
注意:是包括在内,如下所示 大于等于,而不是大于
sql
select * from user where id BETWEEN 1 and 3
sql
select * from user where id >=1 and id <=3
In 在某个范围之内
sql
select * from user where id in (1,2,4)
3.2.2 逻辑查询
AND
sql
select * from user where id = 2 and user_id = 'wu'
OR
sql
select * from user where id =1 or user_id = 'wu'
3.2.3 DISTINCT 查询不重复
sql
select DISTINCT(user_name) from user
3.2.4 Like 模糊查询
sql
select * from user where user_id like 'sa%'
3.2.5 Order 排序
倒序
sql
select * from user order by id DESC
顺序
sql
select * from user order by id ASC
3.2.6 GROUP BY 分组
sql
select * from user GROUP BY dept_id
3.2.7 HAVING 分组限制
sql
select * from user GROUP BY dept_id HAVING id > 1
3.2.8 LIMIT 限制条数
sql
select * from user limit 0,10;
select * from user limit 1;
3.3 连接查询
3.3.1 内连接
sql
SELECT
*
FROM
USER t1
INNER JOIN dept t2 ON t1.dept_id = t2.id
3.3.2 全连接
查询出左表和右表所有数据,但是去除两表的重复数据;
sql
SELECT
*
FROM
USER t1
FULL JOIN dept t2 ON t1.dept_id = t2.id
以上代码执行会出现错误,因为MYSQL 不支持全连接!!!
3.3.3 左连接
左连接是左边表的所有数据都有显示出来,右边的表数据只显示共同有的那部分,没有对应的部分只能补空显示,所谓的左边表其实就是指放在left join的左边的表;
sql
select * from user t1 left join dept t2 on t1.dept_id = t2.id
3.3.4 右连接
右连接正好是和左连接相反的,这里的右边也是相对right join来说的,在这个右边的表就是右表;
sql
select * from user t1 right join dept t2 on t1.dept_id = t2.id
3.4 常用函数
3.4.1 聚合函数
count
示例
sql
select count(1) from user
select count(*) from user
select count(id) from user
sum
示例
sql
select sum(id) from user
max、min
示例
sql
select max(id) from user
select min(id) from user
3.4.2 LENGTH 字符长度
示例
sql
select user_id , LENGTH(user_id) from user
3.4.3 CASE WHEN 分支函数
语法结构
sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
示例
sql
SELECT
CASE
WHEN dept_id is NULL THEN '无部门'
ELSE '有部门'
END as DeptId,
user_id,user_name
FROM
USER;