数据库语句的基本
#创建数据库Java221803
CREATE DATABASE IF NOT EXISTS Java221803
;
#创建表emp
CREATE TABLE emp
(
id
INT,
name
VARCHAR(100),
gender
VARCHAR(10),
birthday
DATE ,
slaary
FLOAT(10,2),
entry_date
DATE,
resume
TEXT
);
#向emp表中添加数据
#插入数据语法 insert into 表名(字段名1,字段名2,…,字段名n)values(数据1,数据2,…,数据n);
INSERT INTO emp(id,NAME,gender,birthday,salary,entry_date,RESUME)
VALUES(1,‘zhangsan’,‘female’,‘1990-5-10’,10000,‘2015-5-5-’,‘good girl’);
INSERT INTO emp(id,NAME,gender,birthday,salary,entry_date,RESUME)
VALUES(2,‘lisi’,‘male’,‘1995-5-10’,10000,‘2015-5-5’,‘good boy’);
INSERT INTO emp(id,NAME,gender,birthday,salary,entry_date,RESUME)
VALUES(3,‘你好’,‘male’,‘1995-5-10’,10000,‘2015-5-5’,‘good boy’);,
#如果给表的所有字段都插入数据,那么字段名的列表可以省略不写,如果只给表中的某些字段插入数据,那么这些字段各不能省略
#insert into 表名 values(数据1,数据2,…,数据n);
#insert into 表名 values(数据1,数据2,…,数据n);
INSERT INTO emp VALUES(4,‘wangwu’,‘male’,‘1998-9-9’,12500,‘2022-3-4’,‘very good’);
#可以批量的向表中插入多条数据
#insert into 表名 values(数据1,数据2,…,数据n),(数据1,数据2,…,数据n),…,(数据1,数据2,…,数据n);
INSERT INTO emp
VALUES
(5,‘wangwu’,‘male’,‘1998-9-9’,12500,‘2022-3-4’,‘very good’),
(6,‘wangwuer’,‘male’,‘1998-9-2’,12500,‘2022-3-4’,‘very good’),
(7,‘wangwusan’,‘male’,‘1998-11-9’,12500,‘2022-3-4’,‘very good’),
(8,‘wangwusi’,‘male’,‘1998-6-9’,12500,‘2022-3-4’,‘very good’);
#修改数据
#update 表名 set 字段名1=数据1,字段名2=数据2,…,字段名n=数据n [where 字段名=数据];
UPDATE emp SET salary=15000;
UPDATE emp SET salary=18000 WHERE id=2 ;
#给表中所有的男性员工工资+200
UPDATE emp SET salary =salary+200 WHERE gender=‘male’;
#将表中名叫wangwu的员工性别修改为female,薪水修改为15500
UPDATE emp SET gender=‘female’,salary=15500 WHERE name
=‘wangwu’;
#删除操作
#delete from 表名 [where 字段名=数据]
#如果不加where进行过滤,会将表中所有的数据删除
DELETE FROM emp;
#删除名称叫“你好”的记录
DELETE FROM emp WHERE name
=‘你好’;
CREATE DATABASE IF NOT EXISTS java221804
;
#查询操作(非常重要)
#select 字段名1,字段名2,…,字段名n from 表名 [where…group by…having…order by…limit…];
CREATE TABLE stu
(
sid
CHAR(6),
sname
VARCHAR(50),
age
INT,
gender
VARCHAR(50)
);
INSERT INTO stu VALUES(‘S_1001’, ‘liuYi’, 35, ‘male’);
INSERT INTO stu VALUES(‘S_1002’, ‘chenEr’, 15, ‘female’);
INSERT INTO stu VALUES(‘S_1003’, ‘zhangSan’, 95, ‘male’);
INSERT INTO stu VALUES(‘S_1004’, ‘liSi’, 65, ‘female’);
INSERT INTO stu VALUES(‘S_1005’, ‘wangWu’, 55, ‘male’);
INSERT INTO stu VALUES(‘S_1006’, ‘zhaoLiu’, 75, ‘female’);
INSERT INTO stu VALUES(‘S_1007’, ‘sunQi’, 25, ‘male’);
INSERT INTO stu VALUES(‘S_1008’, ‘zhouBa’, 45, ‘female’);
INSERT INTO stu VALUES(‘S_1009’, ‘wuJiu’, 85, ‘male’);
INSERT INTO stu VALUES(‘S_1010’, ‘zhengShi’, 5, ‘female’);
INSERT INTO stu VALUES(‘S_1011’, ‘xxx’, NULL, NULL);
CREATE TABLE emp
(
empno
INT,
ename
VARCHAR(50),
job
VARCHAR(50),
mgr
INT,
hiredate
DATE,
sal
DECIMAL(7,2),
comm
DECIMAL(7,2),
deptno
INT
);
INSERT INTO emp VALUES(7369,‘SMITH’,‘CLERK’,7902,‘1980-12-17’,800,NULL,20);
INSERT INTO emp VALUES(7499,‘ALLEN’,‘SALESMAN’,7698,‘1981-02-20’,1600,300,30);
INSERT INTO emp VALUES(7521,‘WARD’,‘SALESMAN’,7698,‘1981-02-22’,1250,500,30);
INSERT INTO emp VALUES(7566,‘JONES’,‘MANAGER’,7839,‘1981-04-02’,2975,NULL,20);
INSERT INTO emp VALUES(7654,‘MARTIN’,‘SALESMAN’,7698,‘1981-09-28’,1250,1400,30);
INSERT INTO emp VALUES(7698,‘BLAKE’,‘MANAGER’,7839,‘1981-05-01’,2850,NULL,30);
INSERT INTO emp VALUES(7782,‘CLARK’,‘MANAGER’,7839,‘1981-06-09’,2450,NULL,10);
INSERT INTO emp VALUES(7788,‘SCOTT’,‘ANALYST’,7566,‘1987-04-19’,3000,NULL,20);
INSERT INTO emp VALUES(7839,‘KING’,‘PRESIDENT’,NULL,‘1981-11-17’,5000,NULL,10);
INSERT INTO emp VALUES(7844,‘TURNER’,‘SALESMAN’,7698,‘1981-09-08’,1500,0,30);
INSERT INTO emp VALUES(7876,‘ADAMS’,‘CLERK’,7788,‘1987-05-23’,1100,NULL,20);
INSERT INTO emp VALUES(7900,‘JAMES’,‘CLERK’,7698,‘1981-12-03’,950,NULL,30);
INSERT INTO emp VALUES(7902,‘FORD’,‘ANALYST’,7566,‘1981-12-03’,3000,NULL,20);
INSERT INTO emp VALUES(7934,‘MILLER’,‘CLERK’,7782,‘1982-01-23’,1300,NULL,10);
CREATE TABLE dept
(
deptno
INT,
dname
VARCHAR(14),
loc
VARCHAR(13)
);
INSERT INTO dept VALUES(10, ‘ACCOUNTING’, ‘NEW YORK’);
INSERT INTO dept VALUES(20, ‘RESEARCH’, ‘DALLAS’);
INSERT INTO dept VALUES(30, ‘SALES’, ‘CHICAGO’);
INSERT INTO dept VALUES(40, ‘OPERATIONS’, ‘BOSTON’);
#基础查询
#查询stu表中sid字段和sname字段
SELECT sid,sname FROM stu;
#查询stu表中sid字段、sname字段和age字段
SELECT sid,sname,age FROM stu;
#查询stu表中所有的字段信息
SELECT sid,sname,age,gender FROM stu;
#当你要查询表中所有的字段信息时,你可以使用*表示所有的字段
SELECT * FROM stu;
#条件查询
#查询性别为女,并且年龄大于50的记录
SELECT * FROM stu WHERE gender=‘female’ AND age>50;
#查询学号为S_1001,或者姓名为liSi的记录
SELECT * FROM stu WHERE sid=‘S_1001’ OR sname=‘liSi’;
#查询学号为S_1001,S_1002,S_1003的记录
SELECT * FROM stu WHERE sid=‘S_1001’ OR sid=‘S_1002’ OR sid=‘S_1003’;
SELECT * FROM stu WHERE sid IN(‘S_1001’,‘S_1002’,‘S_1003’);
#查询学号不是S_1001,S_1002,S_1003的记录
SELECT * FROM stu WHERE sid!='S_1001’AND sid!=‘S_1002’ AND sid!=‘S_1003’;
SELECT * FROM stu WHERE sid NOT IN(‘S_1001’,‘S_1002’,‘S_1003’);
#查询年龄为null的记录
SELECT * FROM stu WHERE age IS NULL;
#查询年龄在20到40之间的学生记录
SELECT * FROM stu WHERE age>=20 AND age<=40;
SELECT * FROM stu WHERE age BETWEEN 20 AND 40; #between x and y 是包含x和y这两个值
#查询性别非男的学生记录
SELECT * FROM stu WHERE gender=‘female’;
SELECT * FROM stu WHERE gender!=‘male’;
SELECT * FROM stu WHERE gender<>‘male’;
SELECT * FROM stu WHERE NOT gender =‘male’;#not写在字段名的前面
#查询姓名不为null的学生记录
SELECT * FROM stu WHERE NOT sname IS NULL;
SELECT * FROM stu WHERE sname IS NOT NULL;
#模糊查询,使用关键字like来实现,搭配2个通配符,_表示任意一个字符,%表示任意0-n个字符
#查询姓名由5个字母构成的学生记录
SELECT * FROM stu WHERE sname LIKE ‘_____’;
#查询姓名由5个字母构成,并且第5个字母为“i”的学生记录
SELECT * FROM stu WHERE sname LIKE ‘____i’;
#查询姓名以“z”开头的学生记录
SELECT * FROM stu WHERE sname LIKE ‘z%’;
#查询姓名中第2个字母为“i”的学生记录
SELECT * FROM stu WHERE sname LIKE ‘_i%’;
#查询姓名中包含“a”字母的学生记录
SELECT * FROM stu WHERE sname LIKE ‘%a%’;
#字段控制查询
#去除重复记录DISTINCT
#查询emp表中的薪水,相同的数据也会显示
SELECT sal FROM emp;
#查询emp表中的薪水,去除重复数据
SELECT DISTINCT sal FROM emp;
#查看雇员的月薪与佣金之和
#一个数与null进行算术运算,结果为null,可以使用函数将null值转换为0
SELECT *, sal+comm FROM emp;
#ifnull(字段名,数据):使用函数ifnull来判断字段是否为null,如果字段为null,转换为指定的数据,如果字段不为null,不做转换,直接使用字段的值
SELECT *,sal+IFNULL(comm,0) FROM emp;
#给列名添加别名
SELECT *,sal+IFNULL(comm,0) AS ‘月薪和佣金之和’ FROM emp;
SELECT empno AS ‘员工编号’,ename AS ‘员工姓名’ FROM emp;
#as可以省略不写
SELECT empno ‘员工编号’,ename ‘员工姓名’ FROM emp;
#排序,使用order by进行排序,升序ASC,默认排序方式,可以不写,降序DESC
#查询所有学生记录,按年龄升序排序
SELECT * FROM stu ORDER BY age ASC;
SELECT * FROM stu ORDER BY age;
#查询所有学生记录,按年龄降序排序
SELECT * FROM stu ORDER BY age DESC;
#查询所有雇员,按月薪降序排序,如果月薪相同时,按编号降序排序
SELECT * FROM emp ORDER BY sal DESC,empno DESC;
#函数
#获取当前系统的时间
SELECT CURTIME();
SELECT TIMESTAMPDIFF(DAY,‘2000-01-22’,‘2022-10-18’) AS ‘宁宏已经出生天数’;
#聚合函数:用来进行纵向统计
#count():统计指定列不为NULL的记录行数;
#查询emp表中记录数
SELECT COUNT() AS ‘表中数据数量’ FROM emp;
#查询emp表中有佣金的人数:
SELECT COUNT(comm) FROM emp;
SELECT comm FROM emp WHERE comm IS NOT NULL;
#查询emp表中月薪大于2500的人数
SELECT COUNT() AS ‘月薪大于2500的人数’ FROM emp WHERE sal>2500;
#统计月薪与佣金之和大于2500元的人数
SELECT COUNT(*) AS ‘月薪与佣金之和大于2500元的人数’ FROM emp WHERE sal+IFNULL(comm,0)>2500;
#查询有佣金的人数,以及有领导的人数
SELECT COUNT(comm) AS ‘有佣金的人数’,COUNT(mgr) AS ‘有领导的人数’ FROM emp;
#SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
#AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
#查询所有雇员月薪和
SELECT SUM(sal) AS ‘所有雇员月薪和’ FROM emp;
#查询所有雇员月薪和,以及所有雇员佣金和
SELECT SUM(sal) AS ‘所有雇员月薪和’,SUM(comm) FROM emp;
#查询所有雇员月薪+佣金和
SELECT SUM(sal+IFNULL(comm,0)) AS ‘所有雇员月薪+佣金和’ FROM emp;
#统计所有员工平均工资
SELECT AVG(sal) AS ‘所有员工平均工资’ FROM emp;
#MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
#MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
#查询最高工资和最低工资
SELECT MAX(sal) ‘最高工资’ FROM emp;
SELECT MIN(sal) ‘最低工资’ FROM emp;