DDL 语句
创建数据库
CREATE DATABASE db02;
选择使用数据库
USE db02;-- 针对当前会话的一个临时使用数据库
SELECT DATABASE();
删除数据库
DROP DATABASE SDay1;
创建表
CREATE TABLE stu(
stu_id INT PRIMARY KEY,-- 主键约束
stu_name VARCHAR(20) UNIQUE,-- 唯一约束
gender CHAR(1) DEFAULT '男',-- 默认值约束
address VARCHAR(100) NOT NULL,-- 非空约束
birthday date
-- 联合主键 PRIMARY KEY(stu_id,stu_name)
);
查看字段列
DESC stu;
删除表
DROP TABLE stu;
删除表 先删除drop 再创建create
TRUNCATE TABLE stu;
SHOW TABLE;-- 查看当前数据库下的表
DML 语句
添加
-- INSERT INTO 表名(字段名...) value();
-- INSERT INTO 表名 value();
-- INSERT INTO 表名 values(),(),(),(),...;
INSERT INTO stu(stu_id,stu_name,address) VALUE(1001,'小王','黑龙江');
INSERT INTO stu VALUE(1002,'小林','女','河南鹤壁','1999-12-30');
INSERT INTO stu VALUES(1003,'小李','女','江苏南通','1999-12-30'),
(1004,'小七','男','安徽合肥','1999-12-30'),
(1005,'小张','女','河北保定','1999-12-30'),
(1006,'小米','女','广东肇庆','1999-12-30');
修改
– UPDATE 表名 set 字段1=值1,字段2=值2… where 条件
UPDATE stu SET birthday='2001-11-10' WHERE stu_name='小张';
删除
DELETE FROM 表 WHERE 条件
DELETE FROM stu WHERE stu_id=1003;
DQL 语句
单表查询
查询全部字段
SELECT * FROM stu;
查询指定字段
SELECT stu_id,stu_name FROM stu;
去重查询
SELECT DISTINCT gender FROM stu;
起别名查询
SELECT DISTINCT gender '性别' FROM stu;
条件查询
算术运算符
SELECT stu_id +1000,stu_name FROM stu;
比较运算符
!= 不规范 , <> 规范 都是不等于,都能用
SELECT * FROM stu WHERE stu_id < 1005;
逻辑运算符
and 和 or
SELECT * FROM stu WHERE stu_id=1004 AND birthday = '1999-12-30';
SELECT * FROM stu WHERE stu_id=1004 OR birthday = '1999-12-30';
特殊的逻辑运算符 和 比较运算符
SELECT * FROM stu WHERE stu_id=1001 OR stu_id=1003 OR stu_id=1006;
SELECT * FROM stu WHERE stu_id IN (1001,1003,1006);
SELECT * FROM stu WHERE stu_id NOT IN (1001,1003,1006);
age>=10 and age<=20
SELECT * FROM stu WHERE stu_id BETWEEN 1002 AND 1005;
特殊的比较
错误的写法,但语法没问题
SELECT * FROM stu WHERE birthday = NULL;
对于null要用is null 判断
SELECT * FROM stu WHERE birthday IS NULL;
模糊查询(通配符)
_表示一个字符 %表示0~n个字符
SELECT * FROM stu WHERE stu_name LIKE '小_';
SELECT * FROM stu WHERE stu_name LIKE '_小';
SELECT * FROM stu WHERE stu_name LIKE '大_小';
SELECT * FROM stu WHERE stu_name LIKE '小%';
SELECT * FROM stu WHERE stu_name LIKE '%小';
SELECT * FROM stu WHERE stu_name LIKE '%小%';
分组
分组将依据(一列或多列)相同的作为一组
分组之后虽然看到的数据只有一行,但这一行代表着一组,一组可能有多条数据
SELECT gender FROM stu GROUP BY gender;
聚合函数 count() max() min() avg() sum()
如下面一条语句,虽然按gender分组后,一般只会显示gender一列
但可以通过聚合函数获取到某一列的和或最大值或最小值等结果
SELECT gender,COUNT(stu_id) FROM stu GROUP BY gender;
having
分组后的 条件筛选,分组之前用where
即先分组,在分组里筛选(不是只有一列的分组),然后获取到结果
SELECT gender,COUNT(stu_id) cs FROM stu GROUP BY gender HAVING COUNT(stu_id)>2;
排序
(升序、降序,默认是升序,且只能根据一列排序)
SELECT * FROM stu ORDER BY stu_id;-- asc
SELECT * FROM stu ORDER BY stu_id DESC;-- desc
SELECT * FROM stu ORDER BY stu_id ASC,stu_name DESC;--按stu_id升序,stu_name降序
限制查询个数
LIMIT(m,n),其中m是从第几条数据开始查询,n是查询几条数据
例:LIMIT 2,3
SELECT * FROM stu LIMIT 2,3;