mysql基本查询使用

/**DDL:操作数据库**/ -- 查询所有数据库
SHOW DATABASES;-- 创建数据库
CREATE DATABASE stu;-- 创建数据库的第二种方式:先判断数据库是否存在,存在就创建
CREATE DATABASE
IFNOT EXISTS stu2;-- 删除数据库
DROP DATABASE stu;-- 删除数据库的第二种方式:先判断数据库是否存在,存在就删除
DROP DATABASE
IFEXISTS stu2;-- 使用数据
USE del;-- 查看当前使用的数据库
SELECT DATABASE();
/**DDL:操作表**/-- 查询表
SHOW TABLES;-- 查询表结构
DESC onetable;-- 创建表
CREATE TABLE twotable ( id INT, NAME VARCHAR ( 20 ), PASSWORD VARCHAR ( 32 ) ) -- 创建表的练习
/**
需求:设计一张学生表,请注重数据类型、长度的合理性1. 编号2. 姓名,姓名最长不超过10个汉字3. 性别,因为取值只有两种可能,因此最多一个汉字4. 生日,取值为年月日5. 入学成绩,小数点后保留两位6. 邮件地址,最大长度不超过 647. 家庭联系电话,不一定是手机号码,可能会出现 - 等字符8. 学生状态(用数字表示,正常、休学、毕业...
*/
CREATE TABLE threetable (id INT,-- 编号NAME VARCHAR ( 20 ),-- 姓名gender CHAR ( 1 ),-- 性别birthday date,-- 生日score DOUBLE ( 5, 2 ),-- 入学成绩email VARCHAR ( 64 ),-- 电子邮件tel VARCHAR ( 15 ),-- 家庭联系方式STATUS TINYINT -- 学生状态) -- 删除表
DROP TABLE onetable;-- 删除表的第二种方式:先判断数据库是否存在,存在就删除
DROP TABLE
IFEXISTS twotable;-- 修改表名
ALTER TABLE threetable RENAME TO onetable -- 添加一列  也就是新增一个字段
ALTER TABLE onetable ADD address VARCHAR ( 50 );-- 给 onetable 表新增一个字段:address  这个字段类型是 varchar(50)
-- 修改一列  也就是修改一个字段的类型
ALTER TABLE onetable MODIFY address CHAR ( 50 );-- 给 onetable 表修改一个字段:address  这个字段的类型修改成 char(50)
-- 修改字段的名称和类型  也就是字段名和类型都修改
ALTER TABLE onetable CHANGE address addr VARCHAR ( 50 );-- 把 onetable 表中的 address字段修改成 addr,并且把类型修改成 varchar(50)
-- 删除某一个字段
ALTER TABLE onetable DROP addr;
/**DML:对表中的数据进行 增删改查**/-- 查询所有数据
SELECT* 
FROMonetable;-- 给指定的表添加数据
INSERT INTO onetable
VALUES( 1, "测试1号", '男', '2000-09-15', 83.24, '2522252145@qq.com', '15245236523', 1 );-- 第二种添加数据方式:给指定的列添加数据
INSERT INTO onetable ( id, NAME )
VALUES( 2, "测试2号" );
INSERT INTO onetable ( id, NAME )
VALUES( 8, "测试8号" );-- 批量添加数据
INSERT INTO onetable
VALUES( 3, "测试3号", '男', '2000-09-15', 83.24, '2522252145@qq.com', '15245236523', 2 ),(4,"测试4号",'男','2000-09-15',83.24,'2522252145@qq.com','15245236523',1 );-- 修改某一条数据
UPDATE onetable 
SET gender = '女',
birthday = '1999-09-15' 
WHEREid = 2;-- 删除某条数据
DELETE 
FROMonetable 
WHEREid = 8;
/**DQL:对表中的数据进行 查询**/-- 先准备一些数据,方便进行查询演示
-- 删除stu表
DROP TABLE
IFEXISTS stu;-- 创建stu表
CREATE TABLE stu (id INT,-- 编号NAME VARCHAR ( 20 ),-- 姓名age INT,-- 年龄sex VARCHAR ( 5 ),-- 性别address VARCHAR ( 100 ),-- 地址math DOUBLE ( 5, 2 ),-- 数学成绩english DOUBLE ( 5, 2 ),-- 英语成绩hire_date date -- 入学时间);-- 添加数据
INSERT INTO stu ( id, NAME, age, sex, address, math, english, hire_date )
VALUES( 1, '马运', 55, '男', '杭州', 66, 78, '1995-09-01' ),( 2, '马花疼', 45, '女', '深圳', 98, 87, '1998-09-01' ),( 3, '马斯克', 55, '男', '香港', 56, 77, '1999-09-02' ),( 4, '柳白', 20, '女', '湖南', 76, 65, '1997-09-05' ),( 5, '柳青', 20, '男', '湖南', 86, NULL, '1998-09-01' ),( 6, '刘德花', 57, '男', '香港', 99, 99, '1998-09-01' ),( 7, '张学右', 22, '女', '香港', 99, 99, '1998-09-01' ),( 8, '德玛西亚', 18, '男', '南京', 56, 65, '1994-09-02' );-- 基础查询   查询所有字段
SELECT* 
FROMstu;-- 基础查询   查询指定的字段
SELECT NAME,sex 
FROMstu;-- 去除重复的记录
SELECT DISTINCTsex 
FROMstu;-- 基础查询练习:查询姓名、数学成绩、英语成绩,并且通过 as 给math和english起备用名
SELECT NAME,math AS '数学成绩',english AS '英语成绩' 
FROMstu;-- 条件查询
SELECT NAME,math AS '数学成绩' 
FROMstu 
WHEREsex = '男';-- 条件查询练习:查询年龄大于20
SELECT* 
FROMstu 
WHEREage > 20;-- 条件查询练习:查询年龄大于等于20
SELECT* 
FROMstu 
WHEREage >= 20;-- 条件查询练习:查询年龄大于20并且小于30
SELECT* 
FROMstu 
WHEREage > 20 && age < 30; SELECT * FROM stu WHERE age > 20 
AND age < 30;
SELECT* 
FROMstu 
WHEREage BETWEEN 20 adn 30;-- 条件查询练习:查询入学日期在 1998-09-011999-09-01
SELECT* 
FROMstu 
WHEREhire_date BETWEEN '1998-09-01' adn '1999-09-01';-- 条件查询练习:查询年龄不等于18
SELECT* 
FROMstu 
WHEREage != 18;
SELECT* 
FROMstu 
WHEREage <> 18;-- 条件查询练习:查询年龄等于18 或者 等于20 或者 等于22
SELECT* 
FROMstu 
WHEREage = 18 OR age = 20 OR age = 22;
SELECT* 
FROMstu 
WHEREage IN ( 18, 20, 22 );-- 条件查询练习:查询英语成绩为null
SELECT* 
FROMstu 
WHEREenglish IS NULL;
SELECT* 
FROMstu 
WHEREenglish IS NOT NULL;-- 英语成绩不等于 null
-- 模糊查询练习
/*模糊查询使用 like 作为关键字_:代表单个任意字符%:代表任意个数字符**/-- 模糊查询练习:查询 姓‘马’的信息
SELECT* 
FROMstu 
WHERENAME LIKE '马%' -- 模糊查询练习:查询第二个字是‘花’的信息
SELECT* 
FROMstu 
WHERENAME LIKE '_花%' -- 模糊查询练习:查询名字中包含‘德’的信息
SELECT* 
FROMstu 
WHERENAME LIKE '%德%' -- 排序查询
/**ASC:升序排序DESC:降序排序
*/-- 排序查询练习:查询学生信息,按照年龄升序排序
SELECT* 
FROMstu 
ORDER BYage;-- 排序查询练习:查询学生信息,按照数学成绩降序排序
SELECT* 
FROMstu 
ORDER BYmath DESC;-- 排序查询练习:查询学生信息,按照数学成绩排序,如果数学成绩一样,在按照英语成绩升序排序
SELECT* 
FROMstu 
ORDER BYmath DESC,english ASC;-- 聚合函数
/**
count  统计数量
max    最大值
min    最小值
sum    求和
avg    平均值
**/-- 聚合函数练习:统计班级一共多少学生
SELECTcount(*) 
FROMstu;-- 聚合函数练习:查询数学最高分
SELECTmax( math ) 
FROMstu;-- 聚合函数练习:查询数学最低分
SELECTmin( math ) 
FROMstu;-- 聚合函数练习:查询数学平均分
SELECTavg( math ) 
FROMstu;-- 聚合函数练习:查询数学总分
SELECTsum( math ) 
FROMstu;-- 分组查询
/**
语法:
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
**/-- 分组查询练习:查询男生和女生各自的平均分
SELECTsex,avg( math ) 
FROMstu 
GROUP BYsex;-- 分组查询练习:查询男生和女生各自的平均分已经各自人数
SELECTsex,avg( math ),count(*) 
FROMstu 
GROUP BYsex;-- 分组查询练习:查询男生和女生各自的平均分已经各自人数,要求:低于70分的不参与分组
SELECTsex,avg( math ),count(*) 
FROMstu 
WHEREmath > 70 
GROUP BYsex;-- 分组查询练习:查询男生和女生各自的平均分已经各自人数,要求:低于70分的不参与分组,分组后人数大于2个的
SELECTsex,avg( math ),count(*) 
FROMstu 
WHEREmath > 70 
GROUP BYsex 
HAVINGcount(*) > 2;-- 分页查询
/**
语法:
SELECT 字段列表 FROM 表名 LIMINT 起始索引,查询条数起始索引 = (当前页码 - 1)* 每页显示的条数
**/-- 分页查询练习,查询3条数据
SELECT* 
FROMstu LIMIT 0,3;-- 分页查询练习,每页显示2条,查询第一页的数据
SELECT* 
FROMstu LIMIT 0,2;-- 分页查询练习,每页显示2条,查询第二页的数据
SELECT* 
FROMstu LIMIT 2,2;-- 分页查询练习,每页显示2条,查询第三页的数据
SELECT* 
FROMstu LIMIT 4,2;
/***多表查询**/
DROP TABLE
IFEXISTS emp;
DROP TABLE
IFEXISTS dept;
​
​ # 创建部门表
CREATE TABLE dept ( did INT PRIMARY KEY AUTO_INCREMENT, dname VARCHAR ( 20 ) );
​ # 创建员工表
CREATE TABLE emp (id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR ( 10 ),gender CHAR ( 1 ),-- 性别salary DOUBLE,-- 工资join_date DATE,-- 入职日期dep_id INT,FOREIGN KEY ( dep_id ) REFERENCES dept ( did ) -- 外键,关联部门表(部门表的主键));-- 添加部门数据
INSERT INTO dept ( dNAME )
VALUES( '研发部' ),('市场部' ),('财务部' ),('销售部' );-- 添加员工数据
INSERT INTO emp ( NAME, gender, salary, join_date, dep_id )
VALUES( '孙悟空', '男', 7200, '2013-02-24', 1 ),( '猪八戒', '男', 3600, '2010-12-02', 2 ),( '唐僧', '男', 9000, '2008-08-08', 2 ),( '白骨精', '女', 5000, '2015-10-07', 3 ),( '蜘蛛精', '女', 4500, '2011-03-14', 1 ),( '小白龙', '男', 2500, '2011-02-14', NULL );
-- 多表查询练习
select * from emp,dept where dept.did=emp.dep_id;
-- 多表查询之 内连接查询
/**
语法:
-- 隐式内连接
SELECT 字段列表 FROM 表1,表2.。。 WHERE 条件
-- 显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON条件
**/
-- 隐式内连接
select * from dept,emp where dept.did=emp.dep_id;
select t1.NAME,t1.gender,t2.dname from dept t2,emp t1 where t2.did=t1.dep_id;
-- 显示内连接
select * from emp inner join dept on emp.dep_id = dept.did;
-- 多表查询之 外连接查询
/**
语法:
-- 左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件
-- 右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件
**/
-- 左外连接
select * from emp left join dept on emp.dep_id = dept.did;
-- 右外连接
select * from emp right join dept on emp.dep_id = dept.did;
-- 多表查询之 子查询
select * from emp where salary > (select salary from emp where name = '猪八戒');

自己的

> MySQL卸载:https://www.bilibili.com/video/BV1AG4y1B7sW/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=ebff660a6ef0a6cd2d5ffbfcf97a5312> MySQL安装:https://www.bilibili.com/video/BV1Kr4y1i7ru?spm_id_from=333.788.videopod.episodes&vd_source=ebff660a6ef0a6cd2d5ffbfcf97a5312&p=3# DDL> 用来定义数据库对象:数据库、表、列等## 1.1查询数据库> show databases;## 1.2创建数据库> + 创建数据库
>
>   > create database 数据库名称;
>
> + 创建数据库(判断,如果不存在就创建)
>
>   > create database if not exists 数据库名称;## 1.3删除数据库> + 删除数据库
>
>   > drop database 数据库名称;
>
> + 删除数据库(判断,如果存在就删除)
>
>   > drop database if exists 数据库名称;## 1.4使用数据库> + 查看当前使用的数据库
>
>   > select database();
>
> + 使用数据库
>
>   > use 数据库名称;## 2.1查询表结构+ 查询当前数据库下所有表名称> show tables;+ 查询表结构>  desc 表名称;## 2.2创建表```sql
create table cesione(id int,name varchar(30),password varchar(12)
);
# 注意:最后一行不能加逗号

3.1修改表

  • 修改表名

    alter table 表名 rename to 新表名;

  • 添加一列

    alter table 表名  add 列名 数据类型;

  • 修改数据类型

    alter table 表名 modify 列名 数据类型;

  • 修改列名和数据类型

    alter table 表名  change 旧表名 新列名 新数据类型;

  • 删除列

    alter table 表名 drop 列名;

4 DDL系列数据库代码

# 查询数据库 show databases;
SHOW DATABASES;
# 创建数据库  create database 数据库名称;
CREATE DATABASE de1;
# 创建数据库(判断,如果不存在就创建) create database if not exists 数据库名称;
CREATE DATABASE IF NOT EXISTS 数据库名称;
# 删除数据库 drop database 数据库名称
DROP DATABASE 数据库名称;
# 删除数据库,判断数据库是否存在,存在就删除
DROP DATABASE IF EXISTS del;
# 查看使用的数据库
SELECT DATABASE();
# 使用某个数据库
USE de1;
#查询当前使用数据库下所有表名称
SHOW TABLES;
# 查询表结构
DESC newCeSi_table;
DESC onetable;
# 创建表   注意:表字段最后一位不能加逗号
CREATE TABLE onetable ( id INT, NAME VARCHAR ( 30 ),PASSWORD VARCHAR ( 12 )
);
# 修改表名
alter table cesione rename to newCeSi_table;
# 添加一列
alter table onetable add likes varchar(30);
alter table onetable add chengji varchar(30);
# 修改数据类型
alter table onetable modify chengji int;
# 修改列名和数据类型
alter table onetable change PASSWORD password varchar(30);
# 删除某一列
alter table onetable drop chengji;

DML

用来对数据库中的数据进行增删改

1.1查询表数据

--查询所有数据
select * from onetable;

1.2给表增加数据

--给指定列提那就数据
insert into onetable(id,NAME) values(1,'清');
--给全部列添加数据
insert into onetable values(2,'嘿','131313');
--批量添加数据
insert into onetable values(3,'黑龙1','1111'),(3,'黑龙2','2222'),(3,'黑龙3','3333');
insert into onetanle(id,NAME,PASSWORD) values(4,'黑龙4','4444'),(5,'黑龙5','55555'),(6,'黑龙6','6666');

1.3修改表中的数据

--修改数据
update onetable set PASSWORD='55555' where name='清'&&id=1;
--注意:update语句如果没有加where条件,则会将表中所有数据全部修改

1.4删除表中的数据

--删除数据
delete from onetable where NAME="芳";
--注意:delete语句如果没有加where条件,则会将表中所有数据全部删除

DQL

用来查询数据库中表的数据

1.1 基础查询

--基础查询==============
--例子:查询name,age两列
select name,age from stu;
--例子:查询所有字段
select * from stu;
-- 查询地址信息---这个是不去重的
select address from stu;
-- 查询地址信息---这个是去重的
select distinct address from stu;
--查询姓名,数学成绩,英语成绩----这个是不带别名
select name,math,english from stu;
--查询姓名,数学成绩,英语成绩----这个是带别名
select name as 姓名,math as 数学成绩,english as 英语成绩 from stu;

1.2条件查询

符合功能
>大于
<小于
>=大于等于
<=小于等于
=等于
<>或!=不等于
between…and…在某个范围之内(都包含)
in(…)多选一
link 占位符模糊查询、单个任意字符 %多个任意字符
is null是 null
is not null不是 null
and 或 &&并且
or 或 ||或者
not 或 !非,不是
-- 模糊查询 like =====================
/*通配符:(1)_:代表单个任意字符(2)%:代表任意个数字符
*/
-- 1.查询年龄大于20岁的学员信息
select * from stu where age > 20;-- 2.查询年龄大于等于20岁的学员信息
select * from stu where age >= 20;-- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
select * from stu where age >= 20 &&  age <= 30;
select * from stu where age >= 20 and  age <= 30;select * from stu where age BETWEEN 20 and 30;-- 4.查询入学日期在'1998-09-01' 到 '1999-09-01'  之间的学员信息select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';-- 5. 查询年龄等于18岁的学员信息select * from stu where age = 18;-- 6. 查询年龄不等于18岁的学员信息
select * from stu where age != 18;select * from stu where age <> 18;-- 7. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
select * from stu where age = 18 or age = 20 or age = 22;
select * from stu where age in (18,20 ,22);-- 8. 查询英语成绩为 null的学员信息  
-- 注意: null值的比较不能使用 = != 。需要使用 is  is notselect * from stu where english = null; -- 不行的select * from stu where english is null;select * from stu where english is not null;-- 模糊查询 like =====================
/*通配符:(1)_:代表单个任意字符(2)%:代表任意个数字符
*/-- 1. 查询姓'马'的学员信息select * from stu where name like '马%';-- 2. 查询第二个字是'花'的学员信息   select * from stu where name like '_花%';-- 3. 查询名字中包含 '德' 的学员信息select * from stu where name like '%德%';

1.3 排序查询

/*排序查询:* 语法:SELECT 字段列表 FROM 表名  ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;* 排序方式:* ASC:升序排列(默认值)* DESC:降序排列
*/-- 1.查询学生信息,按照年龄升序排列 select * from stu order by age ;-- 2.查询学生信息,按照数学成绩降序排列select * from stu order by math desc ;-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列select * from stu order by math desc , english asc ;

1.4聚会函数

函数名功能
count(列名)统计数量(一般选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值

聚会函数语法:SELECT 聚合函数名(列名) FROM 表;

> 注意:null 值不参与所有聚合函数运算

上面语句根据某个字段进行统计,如果该字段某一行的值为null的话,将不会被统计。所以可以在count(*) 来实现。* 表示所有字段数据,一行中也不可能所有的数据都为null,所以建议使用 count(*)

select count(*) from stu;
  • 查询数学成绩的最高分

    select max(math) from stu;
    
  • 查询数学成绩的最低分

    select min(math) from stu;
    
  • 查询数学成绩的总分

    select sum(math) from stu;
    
  • 查询数学成绩的平均分

    select avg(math) from stu;
    
  • 查询英语成绩的最低分

    select min(english) from stu;
    

1.5分组查询

/*分组函数SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]…;
*/
select * from stu ;
-- 1. 查询男同学和女同学各自的数学平均分select sex, avg(math) from stu group by sex;-- 注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
select name, sex, avg(math) from stu group by sex;-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数select sex, avg(math),count(*) from stu group by sex;-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组select sex, avg(math),count(*) from stu where math > 70 group by sex;-- 4. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*)  > 2;

1.6分页查询

/*分页查询:SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数* 起始索引:从0开始*/
select * from stu ;
-- 1. 从0开始查询,查询3条数据
select * from stu limit 0 , 3;-- 2. 每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;
-- 3. 每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;
-- 4. 每页显示3条数据,查询第3页数据select * from stu limit 6 , 3;-- 起始索引 = (当前页码 - 1) * 每页显示的条数

2DQL系列数据表代码

--查询所有数据
select * from stu;
-- 创建stu表
CREATE TABLE stu (id int, -- 编号name varchar(20), -- 姓名age int, -- 年龄sex varchar(5), -- 性别address varchar(100), -- 地址math double(5,2), -- 数学成绩english double(5,2), -- 英语成绩hire_date date -- 入学时间
);-- 添加数据
INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date) 
VALUES 
(1,'马运',55,'男','杭州',66,78,'1995-09-01'),
(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张学右',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');--基础查询==============
--例子:查询name,age两列
select name,age from stu;
--例子:查询所有字段
select * from stu;
-- 查询地址信息---这个是不去重的
select address from stu;
-- 查询地址信息---这个是去重的
select distinct address from stu;
--查询姓名,数学成绩,英语成绩----这个是不带别名
select name,math,english from stu;
--查询姓名,数学成绩,英语成绩----这个是带别名
select name as 姓名,math as 数学成绩,english as 英语成绩 from stu;--条件查询==============
/**语法:select 字段列表 from where 添加列表*/
- 1.查询年龄大于20岁的学员信息
select * from stu where age > 20;-- 2.查询年龄大于等于20岁的学员信息
select * from stu where age >= 20;-- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
select * from stu where age >= 20 &&  age <= 30;
select * from stu where age >= 20 and  age <= 30;select * from stu where age BETWEEN 20 and 30;-- 4.查询入学日期在'1998-09-01' 到 '1999-09-01'  之间的学员信息select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';-- 5. 查询年龄等于18岁的学员信息select * from stu where age = 18;-- 6. 查询年龄不等于18岁的学员信息
select * from stu where age != 18;select * from stu where age <> 18;-- 7. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
select * from stu where age = 18 or age = 20 or age = 22;
select * from stu where age in (18,20 ,22);-- 8. 查询英语成绩为 null的学员信息  
-- 注意: null值的比较不能使用 = != 。需要使用 is  is notselect * from stu where english = null; -- 不行的select * from stu where english is null;select * from stu where english is not null;-- 模糊查询 like =====================
/*通配符:(1)_:代表单个任意字符(2)%:代表任意个数字符
*/
-- 1.查询年龄大于20岁的学员信息
select * from stu where age > 20;-- 2.查询年龄大于等于20岁的学员信息
select * from stu where age >= 20;-- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
select * from stu where age >= 20 &&  age <= 30;
select * from stu where age >= 20 and  age <= 30;select * from stu where age BETWEEN 20 and 30;-- 4.查询入学日期在'1998-09-01' 到 '1999-09-01'  之间的学员信息select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';-- 5. 查询年龄等于18岁的学员信息select * from stu where age = 18;-- 6. 查询年龄不等于18岁的学员信息
select * from stu where age != 18;select * from stu where age <> 18;-- 7. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
select * from stu where age = 18 or age = 20 or age = 22;
select * from stu where age in (18,20 ,22);-- 8. 查询英语成绩为 null的学员信息  
-- 注意: null值的比较不能使用 = != 。需要使用 is  is notselect * from stu where english = null; -- 不行的select * from stu where english is null;select * from stu where english is not null;-- 模糊查询 like =====================
/*通配符:(1)_:代表单个任意字符(2)%:代表任意个数字符
*/-- 1. 查询姓'马'的学员信息select * from stu where name like '马%';-- 2. 查询第二个字是'花'的学员信息   select * from stu where name like '_花%';-- 3. 查询名字中包含 '德' 的学员信息select * from stu where name like '%德%';/*排序查询:* 语法:SELECT 字段列表 FROM 表名  ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;* 排序方式:* ASC:升序排列(默认值)* DESC:降序排列
*/-- 1.查询学生信息,按照年龄升序排列 select * from stu order by age ;-- 2.查询学生信息,按照数学成绩降序排列select * from stu order by math desc ;-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列select * from stu order by math desc , english asc ;--聚合函数
/**| 函数名      | 功能                             |
| ----------- | -------------------------------- |
| count(列名) | 统计数量(一般选用不为null的列) |
| max(列名)   | 最大值                           |
| min(列名)   | 最小值                           |
| sum(列名)   | 求和                             |
| avg(列名)   | 平均值                           |*/
-- 查询当前表有多少数据
select count(*) from stu;
-- 查询数学成绩的最高分
select max(math) from stu;/*分组函数SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]…;
*/
select * from stu ;
-- 1. 查询男同学和女同学各自的数学平均分select sex, avg(math) from stu group by sex;-- 注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
select name, sex, avg(math) from stu group by sex;-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数select sex, avg(math),count(*) from stu group by sex;-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组select sex, avg(math),count(*) from stu where math > 70 group by sex;-- 4. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*)  > 2;/*分页查询:SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数* 起始索引:从0开始*/
select * from stu ;
-- 1. 从0开始查询,查询3条数据
select * from stu limit 0 , 3;-- 2. 每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;
-- 3. 每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;
-- 4. 每页显示3条数据,查询第3页数据select * from stu limit 6 , 3;-- 起始索引 = (当前页码 - 1) * 每页显示的条数

DCL

用来定义数据库的访问权限和安全基本,及创建用户

约束

约束名称描述关键字
非空约束保证列中所有数据不能有null值not null
唯一约束保证列中所有数据各不相同unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary yek
检查约束保证列中的值满足某一条件check
默认约束保存数据时,未指定值则采用默认值default
外键约束外键用来让两个表的数据之间建立连接,保证数据的一致性和完整性poreign key
CREATE TABLE emp(
id INT PRIMARY KEY, -- 员工id,主键且自增长
ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空并且唯一
joindate DATE NOT NULL, -- 入职日期,非空
salary DOUBLE(7,2) NOT NULL, -- 工资,非空
bonus DOUBLE(7,2) DEFAULT 0  -- 奖金,如果没有奖金就默认为0
);
INSERT INTO emp(id,ename,joindate,salary,bonus)values(1,'张三','1999-11-11',8000,5000);-- 演示主键约束:非空且唯一
INSERT INTO emp(id,ename,joindate,salary,bonus)values(null,'张三','1999-11-11',8000,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus)values(1,'张三','1999-11-11',8000,5000);
-- 演示非空约束
INSERT INTO emp(id,ename,joindate,salary,bonus)values(2,null,'1999-11-11',8000,5000);
-- 演示唯一约束
INSERT INTO emp(id,ename,joindate,salary,bonus)values(2,'张三','1999-11-11',8000,5000);SELECT * from emp;
show tables;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/62173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拥抱极简主义前端开发:NoCss.js 引领无 CSS 编程潮流

在前端开发的世界里&#xff0c;我们总是在不断追寻更高效、更简洁的方式来构建令人惊艳的用户界面。而今天&#xff0c;我要向大家隆重介绍一款具有创新性的工具 ——NoCss.js&#xff0c;它将彻底颠覆你对传统前端开发的认知&#xff0c;引领我们进入一个全新的无 CSS 编程时…

基于QT实现贪吃蛇

0.项目展示 1.游戏大厅界面搭建 1.1 效果展示 1.2 背景添加 通过重写paintEvent事件来绘画界面 部分窗口大小&#xff0c;标题&#xff0c;图标的优化 1.3 开始按钮 使用CSS机制&#xff0c;添加样式&#xff0c;去掉边框 1.4 跳转游戏界面 1.5 问题&#xff1a;如何实现…

Navicat 预览变更sql

需求 用了Flyway&#xff08;数据库迁移工具&#xff09;后&#xff0c;需要记录变更sql&#xff0c;所以要知道变更sql。 查看方式 Navicat提供了预览变更sql功能&#xff0c;右击表---->设计表&#xff0c;比如修改字段后&#xff0c;点击SQL预览标签页&#xff0c; 顺…

实时数据开发 | 一文理解Flink窗口机制

窗口操作在流处理和批处理之间起到了桥梁的作用。 Flink引擎本质上是流式引擎&#xff0c;认为批处理是流处理的一个特例。因此&#xff0c;通过窗口将流数据划分为有限大小的集合&#xff0c;使得在这些有界的数据集上可以进行批处理风格的计算。 通过配置窗口的参数&#xf…

数据结构——用数组实现栈和队列

目录 用数组实现栈和队列 一、数组实现栈 1.stack类 2.测试 二、数组实现队列 1.Queue类 2.测试 查询——数组&#xff1a;数组在内存中是连续空间 增删改——链表&#xff1a;链表的增删改处理更方便一些 满足数据先进后出的特点的就是栈&#xff0c;先进先出就是队列…

【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测

简介&#xff1a;介绍 TM-16多线激光雷达 在8210A载板&#xff0c;TX2核心模块环境&#xff08;Ubuntu18.04&#xff09;下测试ROS驱动&#xff0c;打开使用RVIZ 查看点云数据&#xff0c;本文的前提条件是你的TX2里已经安装了ROS版本&#xff1a;Melodic。 大家好&#xff0c;…

预告|ROS中超好用固定翼仿真开源平台即将上线!

迅翼计划于年底推出基于ROS环境的固定翼上层仿真开发平台。该平台将采用PX4与Gazebo架构&#xff0c;充分融合ROS、PX4和Gazebo三大生态系统&#xff0c;致力于打造最简便、易用的固定翼上层算法仿真平台。 无论您是初学者&#xff0c;还是正在寻找适合的仿真平台进行算法验证&…

什么是 SQL 注入

目录 什么是 SQL 注入&#xff1f; SQL 注入的基本原理 如何发生 SQL 注入&#xff1f; SQL 注入的工作原理 SQL 注入的危害 常见的 SQL 注入攻击场景 什么是 SQL 注入&#xff1f; SQL 注入&#xff08;SQL Injection&#xff09;是一种常见的安全漏洞&#xff0c;攻击…

染色体微阵列(CMA)技术

1. 染色体微阵列&#xff08;CMA&#xff09;简介 染色体是细胞核中载有遗传信息的物质&#xff0c;正常人体细胞具有23对染色体&#xff0c;包括22对常染色体和1对性染色体。染色体携带众多基因&#xff0c;决定着细胞功能及个体的发育。染色体数目增多、减少或局部发生微缺失…

安装QT6.8(MSVC MinGW)+QT webengine+QT5.15.2

本篇主要针对只使用过QT5的qmake&#xff0c;没有用过MSVC&#xff0c;VS的老同学。 建议一部分一部分安装&#xff0c;全部勾选安装遇到问题会中断&#xff0c;前功尽弃。 我自己需要的是QT5&#xff0c;编出的软件用在公司设备上。 QT6&#xff1a;建议也安装学习&#xf…

【我在CSDN成长】我的五周年创作纪念日

感叹 五年的时光匆匆而过&#xff0c; 像一阵风&#xff0c;拂过岁月的湖面&#xff0c; 泛起层层涟漪&#xff0c;又悄然离去。 曾经的欢笑与泪水&#xff0c; 那些奋斗的日夜&#xff0c; 如同电影般在脑海中放映&#xff0c; 却已成为遥远的回忆。 五年&#xff0c;说长不长…

使用 Docker Compose 来编排部署LMTNR项目

使用 Docker Compose 来部署一个包含 Linux、MySQL、Tomcat、Nginx 和 Redis 的完整项目的例子。假设我们要部署一个简单的 Java Web 应用&#xff0c;并且使用 Nginx 作为反向代理服务器。 项目目录结构 首先需要确保 Docker 和docker-compose已经安装并正在运行。docker --v…

如何利用ChatGPT加速开发与学习:以BPMN编辑器为例

在现代开发中&#xff0c;开发者经常会遇到各种需要编写和学习新技术的任务。ChatGPT作为一种强大的自然语言处理工具&#xff0c;不仅可以辅助编写代码&#xff0c;还可以帮助学习新的编程概念和解决开发中的难题。本文将以开发一个BPMN&#xff08;业务流程建模与标注&#x…

如何搭建一个小程序:从零开始的详细指南

在当今数字化时代&#xff0c;小程序以其轻便、无需下载安装即可使用的特点&#xff0c;成为了连接用户与服务的重要桥梁。无论是零售、餐饮、教育还是娱乐行业&#xff0c;小程序都展现了巨大的潜力。如果你正考虑搭建一个小程序&#xff0c;本文将为你提供一个从零开始的详细…

Spring Boot教程之十: 使用 Spring Boot 实现从数据库动态下拉列表

使用 Spring Boot 实现从数据库动态下拉列表 动态下拉列表&#xff08;或依赖下拉列表&#xff09;的概念令人兴奋&#xff0c;但编写起来却颇具挑战性。动态下拉列表意味着一个下拉列表中的值依赖于前一个下拉列表中选择的值。一个简单的例子是三个下拉框&#xff0c;分别显示…

aws服务--机密数据存储AWS Secrets Manager(1)介绍和使用

一、介绍 1、简介 AWS Secrets Manager 是一个完全托管的服务,用于保护应用程序、服务和 IT 资源中的机密信息。它支持安全地存储、管理和访问应用程序所需的机密数据,比如数据库凭证、API 密钥、访问密钥等。通过 Secrets Manager,你可以轻松管理、轮换和访问这些机密信息…

Redis中HGETALL和ZRANGE命令

Redis中HGETALL和ZRANGE命令 简单来说 HGETALL 命令用于返回哈希表中&#xff0c;所有的字段和值。 ZRANGE 命令用于返回有序集中&#xff0c;指定区间内的成员。 HGETALL 在 Redis 中&#xff0c;HGETALL 是一个用于操作哈希&#xff08;Hash&#xff09;数据类型的命令&…

数据结构 【双向哨兵位循环链表】

链表的结构分为8中&#xff0c;其实搞懂了单链表和双向哨兵位循环链表&#xff0c;这部分的知识也就掌握的差不多了。双向哨兵位循环链表的结构如下&#xff1a; 下面我从0构建一个双向哨兵位循环链表。 1、准备工作 构建节点结构体&#xff0c;双向循环链表的每一个…

RabbitMQ的交换机总结

1.direct交换机 2.fanout交换机

MVC、EL、JSTL

1.MVC设计模式 三层&#xff1a; MVC&#xff1a; M&#xff08;Model&#xff09;模型&#xff1a;负责业务逻辑处理&#xff0c;数据库访问。 V&#xff08;View&#xff09;视图&#xff1a;负责与用户交互。 C&#xff08;Controller&#xff09;控制器&#xff1a;负责流程…