distinct 一般与count连用,用在count括号里面,取出重复记录
分组之后只能操作对应列和基本数据。
使用数据库
CREATE DATABASE mydb;
-- 创建表,先写ID,再写列
CREATE TABLE t_user(
-- PRIMARY KEY 申请该列为主键列。主键列不能重复,不能为null,
-- AUTO_INCREMENT 自动增长列,表示由DBMS分配该列的-。确保该列的值不重复,同时不为null。该列只能是int型
id INT PRIMARY KEY AUTO_INCREMENT,
-- VARCHAR为可变长度的字符类型,名字用字符类型数据
userName VARCHAR(20),
-- 生日要用日期类型数据,date只能表示年月日,
birthday DATE,
-- 钱有小数,使用浮点类型 最后一个列,不用加逗号
money DOUBLE
);
-- 查询语句,查询表中的所有记录
SELECT * FROM t_user
添加记录
-- 添加记录 INSERT INTO +表(列,列,)+ VALUE(值,值,值)
INSERT INTO t_user(userName,birthday,money) VALUE('张三','1988-02-02',3000);
INSERT INTO t_user(userName,birthday,money) VALUE('张四','1972-01-01',5000);
INSERT INTO t_user(userName,birthday,money) VALUE('王五','1977-05-05',7000);
批量添加 注意是逗号隔开,然后最后一条是分号
-- 批量添加记录
INSERT INTO t_user(userName,birthday,money)
VALUE('张飞','1992--09-30',3000),
('刘备','1992-04-04',3000),
('郑飞','1991-05-04',5000),
('张飞','1992-04-07',7000);
删除已有记录
-- 删除表
-- DROP TABLE t_user;
-- 删除某条记录,比如id为15
DELETE FROM t_user WHERE id=10;
-- 删除记录,通过其他列名字为张三的记录
DELETE FROM t_user
WHERE userName='张三';
修改记录
-- 修改某个坐标,例如田七的工资为5000
UPDATE t_user SET money=5000 WHERE userName='田七';
-- 修改70后人员工资为4500
UPDATE t_user SET money=8500 WHERE birthday>='1970-01-01' AND birthday<'1980-01-01';
-- 数据内部加法计算,80后的工资+100
UPDATE t_user SET money=money+100 WHERE birthday>='1980-01-01' AND birthday<='1990-01-01';
-- 修改田七名字为“无忌公子”,工资涨为6100 注意money和 where之间没有符号, 名字和money之间有逗号。
UPDATE t_user
SET userName='无忌公子', money=80000
WHERE userName='田七';
-- 修改id为12的员工,工资为5500,生日修改为1988-05-20
UPDATE t_user
SET money=5500,birthday='1988-05-20'
WHERE id=12;
显示操作
-- 只显示某些列(比如只显示姓名和工资两列)
SELECT userName,money FROM t_user;
-- 显示工资在5000以上的80后员工
SELECT *FROM t_user WHERE money>=5000 AND birthday>='1990-01-01' AND birthday<'2000-01-01' ;
-- 显示姓张的员工 ,%为通配符,表示任意长度字符, 下划线 _为通配符,匹配一个长度的任意字符,比如张_ 匹配任意姓张的一个字名字的人
SELECT * FROM t_user WHERE userName LIKE '张%';
-- 查询名字中带了张的人,就使用 %张%
SELECT * FROM t_user WHERE userName='%张%';
-- 查询员工工资,并去掉重复记录 distinct
SELECT DISTINCT money FROM t_user;
-- 显示第七条开始的3条记录
-- limit 6(起始条数),3(需要显示的行数,不是第几行) ;
-- 注意,第一条是0开始的,所以第七条的下标是6
SELECT * FROM t_user LIMIT 6,3;
-- 添加部分行记录(未添加的部分的值自动为null)
INSERT INTO t_user(userName,birthday) VALUES('张康年','1990-05-05'),('赵启贤','1990-05-06');
SELECT * FROM t_user
-- 查找null IS NUL
SELECT * FROM t_user WHERE money IS NULL;
-- 显示非null
SELECT * FROM t_user WHERE money IS NOT NULL;
-- 或者 or 显示工资在5000以上,或者
SELECT * FROM t_user WHERE money>=5000 OR userName LIKE '李%';
-- 选择操作
-- 显示张飞和王五的资料 or IN
SELECT *FROM t_user WHERE userName='张飞' OR userName='王五';
SELECT * FROM t_user WHERE userName IN('张飞','王五');
排序,插入标记行
-- 排序 order by 或者asc 默认是升序 ,降序desc
SELECT * FROM t_user ORDER BY money;
-- 练习,显示所有员工,并显示该员工的工资等级。
-- 4000以下,显示底薪,4000-5000显示中薪水,5000以上显示高薪
-- u 显示别名 when ....then else ....end
SELECT u.*,(CASE WHEN money<4000 THEN '低'
WHEN money>=4000 AND money<5000 THEN '中'
WHEN money IS NULL THEN '实习生'
ELSE '高' END
)'1' FROM t_user u;