SQL语句大全(详解)
SQL
- 前言
- 1 DDL
- 1.1 显示所包含的数据库
- 1.2 创建数据库
- 1.3 删除数据库
- 1.4 使用数据库
- 1.4.1 创建表
- 1.4.2 查看表的结构
- 1.4.3 查看当前数据库下的所有表
- 1.4.4 基础的增删改查
- 1.4.4.1 删除表
- 1.4.4.2 添加列
- 1.4.4.3 修改表名
- 1.4.4.4 修改数据类型
- 1.4.4.5 修改列名和数据类型
- 2 DML
- 2.1 给指定列添加数据
- 2.1.1 修改中文列的编码格式(修改列名和数据类型):
- 2.1.2 给所有列添加数据
- 2.1.3 给所有列添加数据,列名的列表可以省略
- 2.1.4 批量添加
- 2.2 修改数据
- 2.2.1 将张三的性别改为男
- 2.2.2 将张三的生日改成2000-02-28,成绩改成99.00
- 2.2.3 如果update语句没有where条件,则表中的数据全部都被修改
- 2.3 删除数据
- 2.3.1 删除小米记录
- 2.4 简单的创建表,添加数据,查询数据
- 3 DQL
- 3.1 基础查询
- 3.1.1 查询所有列的数据,列名的列表可以使用*代替
- 3.1.2 查询name age 两列
- 3.1.3 查询英语分数
- 3.1.4 去除重复记录
- 3.1.5 查询时起别名 as
- 3.2 条件查询
- 3.2.1 查询年龄大于23岁的学员信息
- 3.2.2 查询年龄>=24岁的学员信息
- 3.2.3 查询21<=年龄<=23岁的学员信息
- 3.2.4 查询入学时间在1997-05-09--1998-07-09之间的学员信息
- 3.2.5 查询年龄等于21岁的学员信息
- 3.2.6 查询年龄等于21岁或者年龄等于24岁或者年龄等于25岁的学员信息
- 3.2.7 查询英语成绩为空null的学员信息
- 3.3 模糊查询
- 3.3.1 查询姓'张'的学员信息
- 3.4 排序查询
- 3.4.1 查询学生信息,按照年龄升序排列
- 3.4.2 查询学生信息,按照数学成绩降序排列
- 3.4.3 查询学生信息,按照英语成绩降序排列,如果英语成绩一样,再按照数学成绩升序排列
- 3.5 分组查询
- 3.5.1 聚合函数
- 3.5.1.1 统计班级有多少个学生
- 3.5.1.2 查询数学成绩最高分
- 3.5.1.3 查询数学成绩最低分
- 3.5.1.4 查询数学成绩总分
- 3.5.1.5 查询数学成绩平均分
- 3.5.2 分组函数
- 3.5.2.1 查询男同学和女同学的各自平均分
- 3.5.2.2 查询男同学和女同学的各自平均分,以及各自人数
- 3.5.2.3 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组
- 3.5.2.4 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组,分组之后人数大于2
- 3.6 分页查询
- 3.6.1 从0开始查询,查询第一页数据
- 3.62 每页显示3条数据显示第一页
- 3.6.3 每页显示3条数据显示第二页
- 3.6.4 每页显示3条数据显示第三页
- 3.6.5 每页显示4条数据显示第二页
- 3.7 约束
- 3.7.1 字段的约束
- 3.7.2 演示主键约束,非空且唯一
- 3.7.3 演示非空约束
- 3.7.4 演示唯一约束
- 3.7.5 对约束的操作
- 3.7.5.1 删除约束
- 3.7.5.2 添加约束
- 3.7.5.3 外键约束(实例演示)
- 4 外键
- 4.1 外键的建立
- 4.1.1 多对多关系
- 4.1.2 一对一关系
- 4.2 实例演示练习
- 逆向化模型
- 1.2 创建数据库
- 1.3 删除数据库
- 1.4 使用数据库
- 1.4.1 创建表
- 1.4.2 查看表的结构
- 1.4.3 查看当前数据库下的所有表
- 1.4.4 基础的增删改查
- 1.4.4.1 删除表
- 1.4.4.2 添加列
- 1.4.4.3 修改表名
- 1.4.4.4 修改数据类型
- 1.4.4.5 修改列名和数据类型
- 2 DML
- 2.1 给指定列添加数据
- 2.1.1 修改中文列的编码格式(修改列名和数据类型):
- 2.1.2 给所有列添加数据
- 2.1.3 给所有列添加数据,列名的列表可以省略
- 2.1.4 批量添加
- 2.2 修改数据
- 2.2.1 将张三的性别改为男
- 2.2.2 将张三的生日改成2000-02-28,成绩改成99.00
- 2.2.3 如果update语句没有where条件,则表中的数据全部都被修改
- 2.3 删除数据
- 2.3.1 删除小米记录
- 2.4 简单的创建表,添加数据,查询数据
- 3 DQL
- 3.1 基础查询
- 3.1.1 查询所有列的数据,列名的列表可以使用*代替
- 3.1.2 查询name age 两列
- 3.1.3 查询英语分数
- 3.1.4 去除重复记录
- 3.1.5 查询时起别名 as
- 3.2 条件查询
- 3.2.1 查询年龄大于23岁的学员信息
- 3.2.2 查询年龄>=24岁的学员信息
- 3.2.3 查询21<=年龄<=23岁的学员信息
- 3.2.4 查询入学时间在1997-05-09--1998-07-09之间的学员信息
- 3.2.5 查询年龄等于21岁的学员信息
- 3.2.6 查询年龄等于21岁或者年龄等于24岁或者年龄等于25岁的学员信息
- 3.2.7 查询英语成绩为空null的学员信息
- 3.3 模糊查询
- 3.3.1 查询姓'张'的学员信息
- 3.4 排序查询
- 3.4.1 查询学生信息,按照年龄升序排列
- 3.4.2 查询学生信息,按照数学成绩降序排列
- 3.4.3 查询学生信息,按照英语成绩降序排列,如果英语成绩一样,再按照数学成绩升序排列
- 3.5 分组查询
- 3.5.1 聚合函数
- 3.5.1.1 统计班级有多少个学生
- 3.5.1.2 查询数学成绩最高分
- 3.5.1.3 查询数学成绩最低分
- 3.5.1.4 查询数学成绩总分
- 3.5.1.5 查询数学成绩平均分
- 3.5.2 分组函数
- 3.5.2.1 查询男同学和女同学的各自平均分
- 3.5.2.2 查询男同学和女同学的各自平均分,以及各自人数
- 3.5.2.3 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组
- 3.5.2.4 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组,分组之后人数大于2
- 3.6 分页查询
- 3.6.1 从0开始查询,查询第一页数据
- 3.62 每页显示3条数据显示第一页
- 3.6.3 每页显示3条数据显示第二页
- 3.6.4 每页显示3条数据显示第三页
- 3.6.5 每页显示4条数据显示第二页
- 3.7 约束
- 3.7.1 字段的约束
- 3.7.2 演示主键约束,非空且唯一
- 3.7.3 演示非空约束
- 3.7.4 演示唯一约束
- 3.7.5 对约束的操作
- 3.7.5.1 删除约束
- 3.7.5.2 添加约束
- 3.7.5.3 外键约束(实例演示)
- 4 外键
- 4.1 外键的建立
- 4.1.1 多对多关系
- 4.1.2 一对一关系
- 4.2 实例演示练习
- 逆向化模型
- 总结
前言

本教程为常用SQL语句的汇总,我把他放到了码云上面,项目地址:https://gitee.com/love-code-bear/java/blob/master/SQL.md
1 DDL
1.1 显示所包含的数据库
SHOW DATABASES;
1.2 创建数据库
CREATE DATABASE db2;
CREATE DATABASE IF NOT EXISTS db2;
1.3 删除数据库
DROP DATABASE db2;
drop DATABASE IF EXISTS db2;
– 查看当前所使用的数据库
SELECT DATABASE();
1.4 使用数据库
use db1;
1.4.1 创建表
CREATE TABLE jd_user(
id int,
username VARCHAR(32),
password VARCHAR(32)
);
1.4.2 查看表的结构
DESC stu;
1.4.3 查看当前数据库下的所有表
USE DATABASE db1;
SHOW TABLES;
1.4.4 基础的增删改查
1.4.4.1 删除表
DROP TABLE tb_user;
DROP TABLE IF EXISTS tb_user;
1.4.4.2 添加列
ALTER TABLE jd_user ADD address VARCHAR(32);
1.4.4.3 修改表名
ALTER TABLE jd_user RENAME TO jd_user;
1.4.4.4 修改数据类型
ALTER TABLE jd_user MODIFY address CHAR(32);
DESC jd_user;
1.4.4.5 修改列名和数据类型
ALTER TABLE jd_user CHANGE address location VARCHAR(64);
1.4.5 查询所有数据
SELECT * FROM jd_user;
SELECT * FROM stu;
2 DML
2.1 给指定列添加数据
2.1.1 修改中文列的编码格式(修改列名和数据类型):
alter table stu change name name varchar(255) character set utf8;
INSERT INTO stu(id,name) VALUES(1,'张三');
2.1.2 给所有列添加数据
alter table stu change sex sex varchar(255) character set utf8;
INSERT INTO stu(id,name,sex,birthday,score,email,tel,status) VALUES
(2,'lisa','女','1999-11-11',98.00,'1@qq.com',1123,1);
2.1.3 给所有列添加数据,列名的列表可以省略
INSERT INTO stu VALUES(3,'小米','男','1998-10-17',93.00,'2@qq.com',1433,1);
2.1.4 批量添加
INSERT INTO stu VALUES
(4,'huawei','男','1998-10-17',93.00,'2@qq.com',1433,1),
(5,'荣耀','男','1998-10-17',93.00,'2@qq.com',1433,1),
(6,'苹果','男','1998-10-17',93.00,'2@qq.com',1433,1);
2.2 修改数据
2.2.1 将张三的性别改为男
UPDATE stu SET sex = '男' WHERE name = '张三';
2.2.2 将张三的生日改成2000-02-28,成绩改成99.00
UPDATE stu SET birthday = '2000-02-28',score = '99.00' WHERE name = '张三';
2.2.3 如果update语句没有where条件,则表中的数据全部都被修改
2.3 删除数据
2.3.1 删除小米记录
DELETE FROM stu WHERE name = '小米';
2.4 简单的创建表,添加数据,查询数据
– 使用数据库
USE db1;
– 创建表
CREATE TABLE stu1 (
id int,
name VARCHAR(32),
age int,
sex VARCHAR(4),
address VARCHAR(64),
math DOUBLE(5,2),
english DOUBLE(5,2),
hire_date DATE
);
– 插入数据
ALTER TABLE stu1 CHANGE name name VARCHAR(32) character set utf8;
ALTER TABLE stu1 CHANGE sex sex VARCHAR(4) character set utf8;
ALTER TABLE stu1 CHANGE address address VARCHAR(64) character set utf8;
INSERT INTO stu1(id,name,age,sex,address,math,english,hire_date)
VALUES
(1,'张一',25,'男','杭州',66.00,78.00,'1998-09-09'),
(2,'张二',24,'女','北京',87.00,76.00,'1996-09-09'),
(3,'张三',22,'男','郑州',94.00,65.00,'1997-09-09'),
(4,'张四',23,'男','合肥',69.00,75.00,'1998-09-09'),
(5,'张五',23,'女','无锡',76.00,79.00,'1999-09-09'),
(6,'张六',24,'女','苏州',88.00,94.00,'1998-03-09'),
(7,'张七',21,'男','南通',89.00,90.00,'1998-05-09'),
(8,'张八',22,'男','南充',98.00,90.00,'1998-07-09');
– 查询所有数据
SELECT * FROM stu1;
USE db1;
3 DQL
3.1 基础查询
3.1.1 查询所有列的数据,列名的列表可以使用*代替
SELECT *FROM stu1;
SELECT `name`,age,sex,address,math,english,hire_date FROM stu1;
3.1.2 查询name age 两列
SELECT `name`,age FROM stu1;
3.1.3 查询英语分数
SELECT english FROM stu1;
3.1.4 去除重复记录
SELECT DISTINCT english FROM stu1;
3.1.5 查询时起别名 as
SELECT name AS 姓名,math AS 数学,english AS 英语 FROM stu1;
3.2 条件查询
3.2.1 查询年龄大于23岁的学员信息
SELECT * FROM stu1 WHERE age > 23;
3.2.2 查询年龄>=24岁的学员信息
SELECT * FROM stu1 WHERE age >= 24;
3.2.3 查询21<=年龄<=23岁的学员信息
SELECT * FROM stu1 WHERE age>=21 AND age <= 23;
SELECT * FROM stu1 WHERE age BETWEEN 21 AND 23;
3.2.4 查询入学时间在1997-05-09–1998-07-09之间的学员信息
SELECT * FROM stu1 WHERE hire_date BETWEEN '1997-05-09' AND '1998-07-09';
3.2.5 查询年龄等于21岁的学员信息
SELECT * FROM stu1 WHERE age = 21;
3.2.6 查询年龄等于21岁或者年龄等于24岁或者年龄等于25岁的学员信息
SELECT * FROM stu1 WHERE age = 21 OR age = 24 OR age = 25;
SELECT * FROM stu1 WHERE age IN(21,24,25);
3.2.7 查询英语成绩为空null的学员信息
SELECT * FROM stu1 WHERE english IS NOT null;
3.3 模糊查询
3.3.1 查询姓’张’的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '张%';
-- 查询第二个字是'三'的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '_三%';
-- 查询名字中含有'四'的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '%四%';
3.4 排序查询
3.4.1 查询学生信息,按照年龄升序排列
SELECT * FROM stu1 ORDER BY age ASC;
3.4.2 查询学生信息,按照数学成绩降序排列
SELECT * FROM stu1 ORDER BY math DESC;
3.4.3 查询学生信息,按照英语成绩降序排列,如果英语成绩一样,再按照数学成绩升序排列
SELECT * FROM stu1 ORDER BY english DESC , math ASC;
3.5 分组查询
3.5.1 聚合函数
3.5.1.1 统计班级有多少个学生
SELECT COUNT(id) FROM stu1;
SELECT COUNT(*) FROM stu1;
3.5.1.2 查询数学成绩最高分
SELECT MAX(math) FROM stu1;
3.5.1.3 查询数学成绩最低分
SELECT MIN(math) FROM stu1;
3.5.1.4 查询数学成绩总分
SELECT SUM(math) FROM stu1;
3.5.1.5 查询数学成绩平均分
SELECT AVG(math) FROM stu1;
3.5.2 分组函数
3.5.2.1 查询男同学和女同学的各自平均分
SELECT sex,AVG(math) FROM stu1 GROUP BY sex;
3.5.2.2 查询男同学和女同学的各自平均分,以及各自人数
SELECT sex,AVG(math),COUNT(*) FROM stu1 GROUP BY sex;
3.5.2.3 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组
SELECT sex,AVG(math),COUNT(*) FROM stu1 WHERE math > 80 GROUP BY sex;
3.5.2.4 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组,分组之后人数大于2
SELECT sex,AVG(math),COUNT(*) FROM stu1 WHERE math > 80 GROUP BY sex HAVING COUNT(*) > 2;
3.6 分页查询
SELECT * FROM stu1;
3.6.1 从0开始查询,查询第一页数据
SELECT * FROM stu1 LIMIT 0,3;
3.62 每页显示3条数据显示第一页
SELECT * FROM stu1 LIMIT 0,3;
3.6.3 每页显示3条数据显示第二页
SELECT * FROM stu1 LIMIT 3,3;
3.6.4 每页显示3条数据显示第三页
SELECT * FROM stu1 LIMIT 6,3;
3.6.5 每页显示4条数据显示第二页
SELECT * FROM stu1 LIMIT 4,4;
3.7 约束
3.7.1 字段的约束
-- 员工表
CREATE TABLE emp(
id INT PRIMARY KEY,/*员工id主键,且自增长*/
ename VARCHAR(32) UNIQUE,/*员工姓名,非空且唯一*/
joindate DATE NOT NULL,/*入职日期非空*/
salary DOUBLE(7,2) NOT NULL,/*薪水,非空*/
bonus DOUBLE(7,2) DEFAULT 0/*奖金,默认为0*/
);
DESC emp;
ALTER TABLE emp CHANGE ename ename VARCHAR(32) CHARACTER set utf8;
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
SELECT * FROM emp;
3.7.2 演示主键约束,非空且唯一
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(NULL,'张三','1999-11-11',8800,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(2,'李四','1999-11-11',8800,5000);
3.7.3 演示非空约束
DELETE FROM emp WHERE id = 3;
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(3,null,'1999-11-11',8800,5000);
3.7.4 演示唯一约束
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(3,'李四','1999-11-11',8800,5000);
3.7.5 对约束的操作
3.7.5.1 删除约束
ALTER TABLE emp MODIFY ename VARCHAR(32) CHARACTER set utf8;
3.7.5.2 添加约束
ALTER TABLE emp MODIFY ename VARCHAR(32) NOT NULL ;
DESC emp;
DROP TABLE emp;
3.7.5.3 外键约束(实例演示)
-- 员工表
CREATE TABLE emp(
id INT PRIMARY KEY auto_increment,/*员工id主键,且自增长*/
name VARCHAR(32),/*员工姓名,非空且唯一*/
age INT,
dep_id INT,/*联系到拎一个表*/
-- 添加一个外键约束
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
);
-- 部门表
CREATE TABLE dept(
id INT PRIMARY KEY auto_increment,
dep_name VARCHAR(32),
address VARCHAR(32)
);
DESC emp;
DESC dept;
DROP TABLE emp;
DROP TABLE dept;
ALTER TABLE emp CHANGE name name VARCHAR(32) CHARACTER set utf8;
ALTER TABLE dept CHANGE dep_name dep_name VARCHAR(32) CHARACTER set utf8;
ALTER TABLE dept CHANGE address address VARCHAR(32) CHARACTER set utf8;
INSERT INTO emp (name,age,dep_id) VALUES
('张三',20,1),
('李四',20,1),
('王五',20,1),
('赵六',20,2),
('孙七',22,2),
('周八',18,2);
INSERT INTO dept (dep_name,address) VALUES
('研发部','广州'),
('销售部','深圳');
SELECT * FROM emp;
SELECT * FROM dept;
-- 删除外键
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;
-- 添加外键
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);
4 外键
使用数据库,展示所有表
USE db1;
SHOW TABLES;
4.1 外键的建立
4.1.1 多对多关系
-- 订单表
CREATE TABLE tb_order(
id INT PRIMARY KEY auto_increment,
payment double(10,2),
payment_type TINYINT,
status TINYINT
);
-- 商品表
CREATE TABLE tb_goods(
id INT PRIMARY KEY auto_increment,
title VARCHAR(100),
price DOUBLE(10,2)
);
-- 中间表
CREATE TABLE tb_order_goods(
id INT PRIMARY KEY auto_increment,
order_id INT,
goods_id INT
);
-- 添加外键
ALTER TABLE tb_order_goods ADD CONSTRAINT fk_order_id FOREIGN KEY(order_id) REFERENCES tb_order(id);
ALTER TABLE tb_order_goods ADD CONSTRAINT fk_goods_id FOREIGN KEY(goods_id) REFERENCES tb_goods(id);
SHOW TABLES;
4.1.2 一对一关系
-- 用户表
CREATE TABLE tb_user(
id INT PRIMARY KEY auto_increment,
photo VARCHAR(100),
name VARCHAR(32),
age INT,
sex VARCHAR(4),
desc_id INT UNIQUE,
CONSTRAINT tb_user_desc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id)
);
-- 用户详情表
CREATE TABLE tb_user_desc(
id INT PRIMARY KEY auto_increment,
city VARCHAR(32),
edu VARCHAR(32),
income DOUBLE(7,2),
status TINYINT
);
ALTER TABLE tb_user_desc CHANGE status status VARCHAR(16) CHARACTER set utf8;
INSERT into tb_user_desc(city,edu,income,status) VALUES
('广州','本科',3000,'单身'),
('广州','硕士',12000,'单身');
INSERT into tb_user(photo,`name`,age,sex,desc_id) VALUES
('c盘','林青霞',22,'女',1),
('d盘','风清扬',24,'男',2);
ALTER TABLE tb_user auto_increment = 1;
SELECT * FROM tb_user;
SELECT * FROM tb_user_desc;
DESC tb_user;
DESC tb_user_desc;
DROP TABLE tb_user;
4.1.3 查看所有外键
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
4.2 实例演示练习
-- 音乐专辑表名
CREATE TABLE music(
title VARCHAR(32),/*专辑名*/
alias VARCHAR(32),/*专辑别名*/
image VARCHAR(64),/*封面图片*/
style VARCHAR(16),/*流派(经典、流行、民谣)*/
type VARCHAR(8),/*类型(专辑,单曲)*/
medium VARCHAR(8),/*介质(胶片,cd)*/
publish_time DATE,/*发行时间*/
publisher VARCHAR(8),/*出版者*/
number TINYINT,/*唱片数量*/
barcode BIGINT,/*条形码*/
summary VARCHAR(1024),/*简介*/
artist VARCHAR(32),/*艺术家*/
id INT UNIQUE/*编号,唯一*/
);
-- 曲目表名
CREATE TABLE song(
name VARCHAR(32),/*歌曲名*/
serial_number TINYINT,/*歌曲序号*/
id INT UNIQUE/*编号,唯一*/
);
-- 评论表名
CREATE TABLE review(
content VARCHAR(1024),/*评论内容*/
rating TINYINT,/*评分1-5*/
review datetime,/*评论时间*/
content_user_id INT,
content_music_id INT
);
-- 用户表名
CREATE TABLE user(
username VARCHAR(32),
image VARCHAR(64),
signture VARCHAR(64),
name VARCHAR(32),
id INT PRIMARY KEY
);
-- 展示
DESC music;
DESC song;
DESC review;
DESC user;
-- 删除
DROP TABLE music;
DROP TABLE song;
DROP TABLE review;
DROP TABLE user;
-- 专辑和用户的中间表
CREATE TABLE music_user(
id INT PRIMARY KEY auto_increment,
music_id INT,
user_id INT
);
-- 添加专辑和用户外键
ALTER TABLE music_user ADD CONSTRAINT fk_music_id FOREIGN KEY(music_id) REFERENCES music(id);
ALTER TABLE music_user ADD CONSTRAINT fk_user_id FOREIGN KEY(user_id) REFERENCES user(id);
-- 添加短评和用户外键
ALTER TABLE review ADD CONSTRAINT fk_review_user FOREIGN KEY(content_user_id) REFERENCES user(id);
-- 添加短评专辑外键
ALTER TABLE review ADD CONSTRAINT fk_review_music FOREIGN KEY(content_music_id) REFERENCES music(id);
-- 添加曲目和专辑外键
ALTER TABLE song ADD CONSTRAINT fk_song_music FOREIGN KEY(id) REFERENCES music(id);
ALTER TABLE song DROP FOREIGN KEY fk_song_user;
逆向化模型
– 多表查询
SELECT * FROM emp;
SELECT * FROM dept;
SELECT * FROM emp,dept;
– 产生笛卡尔积(有ab两个集合,去a和b所有的组合情况)
– 消除无效数据
– 查询emp和dept的数据,emp.dep_id = dept.id
– 隐式内连接
SELECT * FROM emp,dept WHERE emp.dep_id = dept.id;
– 查询emp的name,age,dept表的dep_name
SELECT emp.`name`,emp.age,dept.dep_name FROM emp,dept WHERE emp.dep_id = dept.id;
– 给表起别名
SELECT t1.`name`,t1.age,t2.dep_name FROM emp AS t1,dept AS t2 WHERE t1.dep_id = t2.id;
– 显式内连接
SELECT * FROM emp LEFT OUTER JOIN dept ON emp.dep_id = dept.id;
SELECT * FROM emp LEFT /*OUTER*/ JOIN dept ON emp.dep_id = dept.id;
– 右外连接
SELECT * FROM emp RIGHT OUTER JOIN dept ON emp.dep_id = dept.id;
SELECT * FROM emp RIGHT /*OUTER*/ JOIN dept ON emp.dep_id = dept.id;
```# 1 DDL## 1.1 显示所包含的数据库```mysql
SHOW DATABASES;
1.2 创建数据库
CREATE DATABASE db2;
CREATE DATABASE IF NOT EXISTS db2;
1.3 删除数据库
DROP DATABASE db2;
drop DATABASE IF EXISTS db2;
– 查看当前所使用的数据库
SELECT DATABASE();
1.4 使用数据库
use db1;
1.4.1 创建表
CREATE TABLE jd_user(
id int,
username VARCHAR(32),
password VARCHAR(32)
);
1.4.2 查看表的结构
DESC stu;
1.4.3 查看当前数据库下的所有表
USE DATABASE db1;
SHOW TABLES;
1.4.4 基础的增删改查
1.4.4.1 删除表
DROP TABLE tb_user;
DROP TABLE IF EXISTS tb_user;
1.4.4.2 添加列
ALTER TABLE jd_user ADD address VARCHAR(32);
1.4.4.3 修改表名
ALTER TABLE jd_user RENAME TO jd_user;
1.4.4.4 修改数据类型
ALTER TABLE jd_user MODIFY address CHAR(32);
DESC jd_user;
1.4.4.5 修改列名和数据类型
ALTER TABLE jd_user CHANGE address location VARCHAR(64);
1.4.5 查询所有数据
SELECT * FROM jd_user;
SELECT * FROM stu;
2 DML
2.1 给指定列添加数据
2.1.1 修改中文列的编码格式(修改列名和数据类型):
alter table stu change name name varchar(255) character set utf8;
INSERT INTO stu(id,name) VALUES(1,'张三');
2.1.2 给所有列添加数据
alter table stu change sex sex varchar(255) character set utf8;
INSERT INTO stu(id,name,sex,birthday,score,email,tel,status) VALUES
(2,'lisa','女','1999-11-11',98.00,'1@qq.com',1123,1);
2.1.3 给所有列添加数据,列名的列表可以省略
INSERT INTO stu VALUES(3,'小米','男','1998-10-17',93.00,'2@qq.com',1433,1);
2.1.4 批量添加
INSERT INTO stu VALUES
(4,'huawei','男','1998-10-17',93.00,'2@qq.com',1433,1),
(5,'荣耀','男','1998-10-17',93.00,'2@qq.com',1433,1),
(6,'苹果','男','1998-10-17',93.00,'2@qq.com',1433,1);
2.2 修改数据
2.2.1 将张三的性别改为男
UPDATE stu SET sex = '男' WHERE name = '张三';
2.2.2 将张三的生日改成2000-02-28,成绩改成99.00
UPDATE stu SET birthday = '2000-02-28',score = '99.00' WHERE name = '张三';
2.2.3 如果update语句没有where条件,则表中的数据全部都被修改
2.3 删除数据
2.3.1 删除小米记录
DELETE FROM stu WHERE name = '小米';
2.4 简单的创建表,添加数据,查询数据
– 使用数据库
USE db1;
– 创建表
CREATE TABLE stu1 (
id int,
name VARCHAR(32),
age int,
sex VARCHAR(4),
address VARCHAR(64),
math DOUBLE(5,2),
english DOUBLE(5,2),
hire_date DATE
);
– 插入数据
ALTER TABLE stu1 CHANGE name name VARCHAR(32) character set utf8;
ALTER TABLE stu1 CHANGE sex sex VARCHAR(4) character set utf8;
ALTER TABLE stu1 CHANGE address address VARCHAR(64) character set utf8;
INSERT INTO stu1(id,name,age,sex,address,math,english,hire_date)
VALUES
(1,'张一',25,'男','杭州',66.00,78.00,'1998-09-09'),
(2,'张二',24,'女','北京',87.00,76.00,'1996-09-09'),
(3,'张三',22,'男','郑州',94.00,65.00,'1997-09-09'),
(4,'张四',23,'男','合肥',69.00,75.00,'1998-09-09'),
(5,'张五',23,'女','无锡',76.00,79.00,'1999-09-09'),
(6,'张六',24,'女','苏州',88.00,94.00,'1998-03-09'),
(7,'张七',21,'男','南通',89.00,90.00,'1998-05-09'),
(8,'张八',22,'男','南充',98.00,90.00,'1998-07-09');
– 查询所有数据
SELECT * FROM stu1;
USE db1;
3 DQL
3.1 基础查询
3.1.1 查询所有列的数据,列名的列表可以使用*代替
SELECT *FROM stu1;
SELECT `name`,age,sex,address,math,english,hire_date FROM stu1;
3.1.2 查询name age 两列
SELECT `name`,age FROM stu1;
3.1.3 查询英语分数
SELECT english FROM stu1;
3.1.4 去除重复记录
SELECT DISTINCT english FROM stu1;
3.1.5 查询时起别名 as
SELECT name AS 姓名,math AS 数学,english AS 英语 FROM stu1;
3.2 条件查询
3.2.1 查询年龄大于23岁的学员信息
SELECT * FROM stu1 WHERE age > 23;
3.2.2 查询年龄>=24岁的学员信息
SELECT * FROM stu1 WHERE age >= 24;
3.2.3 查询21<=年龄<=23岁的学员信息
SELECT * FROM stu1 WHERE age>=21 AND age <= 23;
SELECT * FROM stu1 WHERE age BETWEEN 21 AND 23;
3.2.4 查询入学时间在1997-05-09–1998-07-09之间的学员信息
SELECT * FROM stu1 WHERE hire_date BETWEEN '1997-05-09' AND '1998-07-09';
3.2.5 查询年龄等于21岁的学员信息
SELECT * FROM stu1 WHERE age = 21;
3.2.6 查询年龄等于21岁或者年龄等于24岁或者年龄等于25岁的学员信息
SELECT * FROM stu1 WHERE age = 21 OR age = 24 OR age = 25;
SELECT * FROM stu1 WHERE age IN(21,24,25);
3.2.7 查询英语成绩为空null的学员信息
SELECT * FROM stu1 WHERE english IS NOT null;
3.3 模糊查询
3.3.1 查询姓’张’的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '张%';
-- 查询第二个字是'三'的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '_三%';
-- 查询名字中含有'四'的学员信息
SELECT * FROM stu1 WHERE `name` LIKE '%四%';
3.4 排序查询
3.4.1 查询学生信息,按照年龄升序排列
SELECT * FROM stu1 ORDER BY age ASC;
3.4.2 查询学生信息,按照数学成绩降序排列
SELECT * FROM stu1 ORDER BY math DESC;
3.4.3 查询学生信息,按照英语成绩降序排列,如果英语成绩一样,再按照数学成绩升序排列
SELECT * FROM stu1 ORDER BY english DESC , math ASC;
3.5 分组查询
3.5.1 聚合函数
3.5.1.1 统计班级有多少个学生
SELECT COUNT(id) FROM stu1;
SELECT COUNT(*) FROM stu1;
3.5.1.2 查询数学成绩最高分
SELECT MAX(math) FROM stu1;
3.5.1.3 查询数学成绩最低分
SELECT MIN(math) FROM stu1;
3.5.1.4 查询数学成绩总分
SELECT SUM(math) FROM stu1;
3.5.1.5 查询数学成绩平均分
SELECT AVG(math) FROM stu1;
3.5.2 分组函数
3.5.2.1 查询男同学和女同学的各自平均分
SELECT sex,AVG(math) FROM stu1 GROUP BY sex;
3.5.2.2 查询男同学和女同学的各自平均分,以及各自人数
SELECT sex,AVG(math),COUNT(*) FROM stu1 GROUP BY sex;
3.5.2.3 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组
SELECT sex,AVG(math),COUNT(*) FROM stu1 WHERE math > 80 GROUP BY sex;
3.5.2.4 查询男同学和女同学的各自平均分,以及各自人数,要求分数低于80的不参与分组,分组之后人数大于2
SELECT sex,AVG(math),COUNT(*) FROM stu1 WHERE math > 80 GROUP BY sex HAVING COUNT(*) > 2;
3.6 分页查询
SELECT * FROM stu1;
3.6.1 从0开始查询,查询第一页数据
SELECT * FROM stu1 LIMIT 0,3;
3.62 每页显示3条数据显示第一页
SELECT * FROM stu1 LIMIT 0,3;
3.6.3 每页显示3条数据显示第二页
SELECT * FROM stu1 LIMIT 3,3;
3.6.4 每页显示3条数据显示第三页
SELECT * FROM stu1 LIMIT 6,3;
3.6.5 每页显示4条数据显示第二页
SELECT * FROM stu1 LIMIT 4,4;
3.7 约束
3.7.1 字段的约束
-- 员工表
CREATE TABLE emp(
id INT PRIMARY KEY,/*员工id主键,且自增长*/
ename VARCHAR(32) UNIQUE,/*员工姓名,非空且唯一*/
joindate DATE NOT NULL,/*入职日期非空*/
salary DOUBLE(7,2) NOT NULL,/*薪水,非空*/
bonus DOUBLE(7,2) DEFAULT 0/*奖金,默认为0*/
);
DESC emp;
ALTER TABLE emp CHANGE ename ename VARCHAR(32) CHARACTER set utf8;
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
SELECT * FROM emp;
3.7.2 演示主键约束,非空且唯一
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(NULL,'张三','1999-11-11',8800,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(2,'李四','1999-11-11',8800,5000);
3.7.3 演示非空约束
DELETE FROM emp WHERE id = 3;
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(3,null,'1999-11-11',8800,5000);
3.7.4 演示唯一约束
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(3,'李四','1999-11-11',8800,5000);
3.7.5 对约束的操作
3.7.5.1 删除约束
ALTER TABLE emp MODIFY ename VARCHAR(32) CHARACTER set utf8;
3.7.5.2 添加约束
ALTER TABLE emp MODIFY ename VARCHAR(32) NOT NULL ;
DESC emp;
DROP TABLE emp;
3.7.5.3 外键约束(实例演示)
-- 员工表
CREATE TABLE emp(
id INT PRIMARY KEY auto_increment,/*员工id主键,且自增长*/
name VARCHAR(32),/*员工姓名,非空且唯一*/
age INT,
dep_id INT,/*联系到拎一个表*/
-- 添加一个外键约束
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
);
-- 部门表
CREATE TABLE dept(
id INT PRIMARY KEY auto_increment,
dep_name VARCHAR(32),
address VARCHAR(32)
);
DESC emp;
DESC dept;
DROP TABLE emp;
DROP TABLE dept;
ALTER TABLE emp CHANGE name name VARCHAR(32) CHARACTER set utf8;
ALTER TABLE dept CHANGE dep_name dep_name VARCHAR(32) CHARACTER set utf8;
ALTER TABLE dept CHANGE address address VARCHAR(32) CHARACTER set utf8;
INSERT INTO emp (name,age,dep_id) VALUES
('张三',20,1),
('李四',20,1),
('王五',20,1),
('赵六',20,2),
('孙七',22,2),
('周八',18,2);
INSERT INTO dept (dep_name,address) VALUES
('研发部','广州'),
('销售部','深圳');
SELECT * FROM emp;
SELECT * FROM dept;
-- 删除外键
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;
-- 添加外键
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);
4 外键
使用数据库,展示所有表
USE db1;
SHOW TABLES;
4.1 外键的建立
4.1.1 多对多关系
-- 订单表
CREATE TABLE tb_order(
id INT PRIMARY KEY auto_increment,
payment double(10,2),
payment_type TINYINT,
status TINYINT
);
-- 商品表
CREATE TABLE tb_goods(
id INT PRIMARY KEY auto_increment,
title VARCHAR(100),
price DOUBLE(10,2)
);
-- 中间表
CREATE TABLE tb_order_goods(
id INT PRIMARY KEY auto_increment,
order_id INT,
goods_id INT
);
-- 添加外键
ALTER TABLE tb_order_goods ADD CONSTRAINT fk_order_id FOREIGN KEY(order_id) REFERENCES tb_order(id);
ALTER TABLE tb_order_goods ADD CONSTRAINT fk_goods_id FOREIGN KEY(goods_id) REFERENCES tb_goods(id);
SHOW TABLES;
4.1.2 一对一关系
-- 用户表
CREATE TABLE tb_user(
id INT PRIMARY KEY auto_increment,
photo VARCHAR(100),
name VARCHAR(32),
age INT,
sex VARCHAR(4),
desc_id INT UNIQUE,
CONSTRAINT tb_user_desc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id)
);
-- 用户详情表
CREATE TABLE tb_user_desc(
id INT PRIMARY KEY auto_increment,
city VARCHAR(32),
edu VARCHAR(32),
income DOUBLE(7,2),
status TINYINT
);
ALTER TABLE tb_user_desc CHANGE status status VARCHAR(16) CHARACTER set utf8;
INSERT into tb_user_desc(city,edu,income,status) VALUES
('广州','本科',3000,'单身'),
('广州','硕士',12000,'单身');
INSERT into tb_user(photo,`name`,age,sex,desc_id) VALUES
('c盘','林青霞',22,'女',1),
('d盘','风清扬',24,'男',2);
ALTER TABLE tb_user auto_increment = 1;
SELECT * FROM tb_user;
SELECT * FROM tb_user_desc;
DESC tb_user;
DESC tb_user_desc;
DROP TABLE tb_user;
4.1.3 查看所有外键
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
4.2 实例演示练习
-- 音乐专辑表名
CREATE TABLE music(
title VARCHAR(32),/*专辑名*/
alias VARCHAR(32),/*专辑别名*/
image VARCHAR(64),/*封面图片*/
style VARCHAR(16),/*流派(经典、流行、民谣)*/
type VARCHAR(8),/*类型(专辑,单曲)*/
medium VARCHAR(8),/*介质(胶片,cd)*/
publish_time DATE,/*发行时间*/
publisher VARCHAR(8),/*出版者*/
number TINYINT,/*唱片数量*/
barcode BIGINT,/*条形码*/
summary VARCHAR(1024),/*简介*/
artist VARCHAR(32),/*艺术家*/
id INT UNIQUE/*编号,唯一*/
);
-- 曲目表名
CREATE TABLE song(
name VARCHAR(32),/*歌曲名*/
serial_number TINYINT,/*歌曲序号*/
id INT UNIQUE/*编号,唯一*/
);
-- 评论表名
CREATE TABLE review(
content VARCHAR(1024),/*评论内容*/
rating TINYINT,/*评分1-5*/
review datetime,/*评论时间*/
content_user_id INT,
content_music_id INT
);
-- 用户表名
CREATE TABLE user(
username VARCHAR(32),
image VARCHAR(64),
signture VARCHAR(64),
name VARCHAR(32),
id INT PRIMARY KEY
);
-- 展示
DESC music;
DESC song;
DESC review;
DESC user;
-- 删除
DROP TABLE music;
DROP TABLE song;
DROP TABLE review;
DROP TABLE user;
-- 专辑和用户的中间表
CREATE TABLE music_user(
id INT PRIMARY KEY auto_increment,
music_id INT,
user_id INT
);
-- 添加专辑和用户外键
ALTER TABLE music_user ADD CONSTRAINT fk_music_id FOREIGN KEY(music_id) REFERENCES music(id);
ALTER TABLE music_user ADD CONSTRAINT fk_user_id FOREIGN KEY(user_id) REFERENCES user(id);
-- 添加短评和用户外键
ALTER TABLE review ADD CONSTRAINT fk_review_user FOREIGN KEY(content_user_id) REFERENCES user(id);
-- 添加短评专辑外键
ALTER TABLE review ADD CONSTRAINT fk_review_music FOREIGN KEY(content_music_id) REFERENCES music(id);
-- 添加曲目和专辑外键
ALTER TABLE song ADD CONSTRAINT fk_song_music FOREIGN KEY(id) REFERENCES music(id);
ALTER TABLE song DROP FOREIGN KEY fk_song_user;
逆向化模型
– 多表查询
SELECT * FROM emp;
SELECT * FROM dept;
SELECT * FROM emp,dept;
– 产生笛卡尔积(有ab两个集合,去a和b所有的组合情况)
– 消除无效数据
– 查询emp和dept的数据,emp.dep_id = dept.id
– 隐式内连接
SELECT * FROM emp,dept WHERE emp.dep_id = dept.id;
– 查询emp的name,age,dept表的dep_name
SELECT emp.`name`,emp.age,dept.dep_name FROM emp,dept WHERE emp.dep_id = dept.id;
– 给表起别名
SELECT t1.`name`,t1.age,t2.dep_name FROM emp AS t1,dept AS t2 WHERE t1.dep_id = t2.id;
– 显式内连接
SELECT * FROM emp LEFT OUTER JOIN dept ON emp.dep_id = dept.id;
SELECT * FROM emp LEFT /*OUTER*/ JOIN dept ON emp.dep_id = dept.id;
– 右外连接
SELECT * FROM emp RIGHT OUTER JOIN dept ON emp.dep_id = dept.id;
SELECT * FROM emp RIGHT /*OUTER*/ JOIN dept ON emp.dep_id = dept.id;
总结
以上就是SQL语句大全的全部内容,希望对你有所帮助。
相关文章:
SQL语句大全(详解)
SQL前言1 DDL1.1 显示所包含的数据库1.2 创建数据库1.3 删除数据库1.4 使用数据库1.4.1 创建表1.4.2 查看表的结构1.4.3 查看当前数据库下的所有表1.4.4 基础的增删改查1.4.4.1 删除表1.4.4.2 添加列1.4.4.3 修改表名1.4.4.4 修改数据类型1.4.4.5 修改列名和数据类型2 DML2.1 给…...
视频营销活动中7个常见的错误
如今,越来越多的企业在社交媒体平台上开展视频营销活动。与其他传统营销策略不同,视频营销可以为企业带来更多的销售机会。随着越来越多的视频社交媒体平台的出现,营销人员更应该抓住这个机会。但在开始视频创作之前,您需要有一个…...
MapReduce小试牛刀
部署完hadoop单机版后,试下mapreduce是怎么分析处理数据的 Word Count Word Count 就是"词语统计",这是 MapReduce 工作程序中最经典的一种。它的主要任务是对一个文本文件中的词语作归纳统计,统计出每个出现过的词语一共出现的次…...
2023年全国最新工会考试精选真题及答案7
百分百题库提供工会考试试题、工会考试预测题、工会考试真题、工会证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 21.会员大会或会员代表大会与职工代表大会或职工大会须分别行使职权,()…...
13-mvc框架原理与实现方式
1、mvc原理 # mvc 与框架## 1.mvc 是什么1. m:model,模型(即数据来源),主要是针对数据库操作 2. v:view,视图,html 页面。视图由一个一个模板构成(模板是视图的一个具体展现或载体,视图是模板的一个抽象) 3. c:controller,控制器,用于mv之间的数据交互## 2.最简单的 mvc 就是一…...
弹性盒子布局
目录一、弹性盒子属性二、认识flex的坐标轴三、简单学习父级盒子属性三、属性说明3.1、flex-grow一、弹性盒子属性 说明: div的默认样式:display:block 块盒子 display:flex弹性盒子(可以控制下级盒子的位置) 当两种盒子单独出现…...
C# Sqlite数据库加密
sqlite官方的数据库加密是收费的,而且比较贵。 幸亏微软提供了一种免费的方法。 1 sqlite加密demo 这里我做了一个小的demo演示如下: 在界面中拖入数据库名、密码、以及保存的路径 比如我选择保存路径桌面的sqlite目录,数据库名guigutool…...
高压放大器在声波谐振电小天线收发测试系统中的应用
实验名称:高压放大器在声波谐振电小天线收发测试系统中的应用研究方向:信号传输测试目的:声波谐振电小天线颠覆了传统电小天线以电磁波谐振作为理论基础的天线发射和接收模式,它借助声波谐振实现电磁信号的辐射或接收。因为同频的…...
锁相环的组成和原理及应用
一.锁相环的基本组成 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步,利用锁相环路就可以实现这个目的。 锁相环路是一种反馈控制电路,简称锁相环(PLL)。锁相环的特点是:利用外部输入的参考信号控制环路内…...
[C++]string类模拟实现
目录 前言: 1. string框架构造 2. 默认函数 2.1 构造函数 2.2 析构函数 2.3 拷贝构造 2.4 赋值重载 3. 迭代器 4. 整体程序 前言: 本篇文章模拟实现了C中string的部分功能,有助于大家了解和熟悉string类,虽然这个类不难实…...
一个更适合Java初学者的轻量级开发工具:BlueJ
Java是世界上最流行的编程语言之一,它被广泛用于从Web开发到移动应用的各种应用程序。大部分Java工程师主要是用IDEA、Eclipse为主,这两个开发工具由于有强大的能力,所以复杂度上就更高一些。如果您刚刚开始使用Java,或者您更适合…...
从程序员到项目组长,要经历六重修炼
最近和粉丝朋友们交流时发现,有很多刚刚开始做项目组长的朋友自我认可度非常低,感觉做组长之后天天打杂,技术也荒废了。领导天天找你要成果,下属天天找你说困难,你在中间受领导和下属的夹板气。时间久了,你…...
我的 System Verilog 学习记录(5)
、 引言 本文简单介绍 System Verilog 语言的 控制流。 前文链接: 我的 System Verilog 学习记录(1) 我的 System Verilog 学习记录(2) 我的 System Verilog 学习记录(3) 我的 System Ver…...
多芯片设计 Designing For Multiple Die
Why a system-level approach is essential, and why its so challenging作者:Ann MutschlerAnn Mutschler is executive editor at Semiconductor Engineering.将多个裸片或芯粒集成到一个封装中,与将它们放在同一硅片上有着很大的区别。在同一硅片上&a…...
2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(10)
目录 竞赛内容 模块A 基础设施设置与安全加固 一、项目和任务描述: 二、服务器环境说明 三、具体任务(每个任务得分以电子答题卡为准) A-1任务一 登录安全加固(Windows, Linux) 1.密码策略(Windows, …...
数据结构-简介
目录 1、简介 2、作用 3、分类 4、实现分类 1、简介 数据结构指的是组织和存储数据的方法。它涉及到一系列的算法和原则,用来设计和实现不同种类的数据类型,如数组、链表、树、图等等。数据结构的目的是在计算机程序中有效地管理和操作数据ÿ…...
python装饰器及其用法
python装饰器是什么? Python装饰器是一种语法结构,它可以让开发者在不修改原函数的基础上,在函数的前后运行额外的代码,这些代码可以达到修改函数行为的目的。Python装饰器的实质是一个可调用的对象,它可以接收函数作为参数…...
Appium自动化测试之启动时跳过初始化设置
Appium每次启动时都会检查和安装Appium Settings,这是完全没有必要的,在首次使用Appium连接设备是Appium Settings便已经安装好。怎样跳过安装Appium Settings呢?之前的做法是修改appium中的源文件中的android-helpers.js实现,如M…...
JavaScript DOM【快速掌握知识点】
目录 DOM简介 获取元素 修改元素 添加和移除元素 事件处理 DOM简介 JavaScript DOM 是指 JavaScript 中的文档对象模型(Document Object Model);它允许 JavaScript 与 HTML 页面交互,使开发者可以通过编程方式动态地修改网页…...
不需要高深技术,只需要Python:创建一个可定制的HTTP服务器!
目录 1、编写服务端代码,命名为httpserver.py文件。 2、编写网页htmlcss文件,命名为index.html和style.css文件。 3、复制htmlcss到服务端py文件同一文件夹下。 4、运行服务端程序。 5、浏览器中输入localhost:8080显示如下: 要编写一个简单的能发布…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
