03_MySQL基本SQL语句讲解

 

#课程目标

  • 能够创建、删除数据表
  • 能够对表里的==数据记录==进行==增加、删除、修改、查询操作==
  • 能够==创建、删除用户==
  • 能够给==用户授权并回收权限==
  • 了解delete和truncate语句的区别

#一、数据库基本操作

##1、查看数据库相关信息

mysql> show databases;      查看所有数据库
mysql> show schemas;            查看所有数据库
mysql> use 数据库名;            指定数据库,类似于进入到某个库里进行操作
mysql> show tables;         查看所有表
mysql> show variables;      查看变量
mysql> show variables like '%char%';
mysql> show variables like '%data%';
mysql> show engines;            查看存储引擎
​
说明:";"号代表一条sql语句结束,所以,每条SQL语句结束都需要加";"

2、服务器字符集设置

注意:只要是永久更改,必然更改配置文件!

[mysqld]
basedir=/mysql_3306
datadir=/mysql_3306/data
socket=/tmp/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

3、创建库(==create database==)

创建db1库
create database db1;
创建db1库并指定默认字符集
create database db1 default charset gbk;
如果存在不报错(if not exists)
create database if not exists db1 default character set utf8;
说明:不能创建相同名字的数据库!

##4、更改数据库信息(==alter database==)

更改db1库的默认字符集
alter database db1 default character set gbk;
alter database db2 default charset utf8;

##5、删除数据库(==drop database==)

删除db1库
drop database db1;

#二、数据表基本操作

##1、创建表(==create table==)

###㈠ 语法格式

create table 表名 (字段1,字段2,...)
create table 表名 (字段1 数据类型(字符长度),字段2,...)
create table 表名 (字段1 数据类型(字符长度) 约束条件,字段2,...)

###㈡ 示例

创建t1表,id列整型,name列字符串
int(10)
varchar(30)
​
create table t1 (id int,name varchar(10));
创建t2表,id列整型,并且为主键,name列字符串
create table t2 (id int key,name varchar(20) not null,......)
查看表的结构
desc t1;
describe t2;

##2、插入记录(==insert into==)

以下是往表里插入数据的几种不同方法
insert into 表名 set 字段1=xx,字段2=xx;
insert into t1 set id=3,name='li';
​
insert into 表名 values(值1,值2),(值1,值2)
insert into t1 values(1,'zhang'),(2,'wang');
​
insert into 表名 (指定字段1,指定字段2) values(字段1值,字段2值);
insert into t2 (id,name) values(3,'li');
​
​
insert into t1 select * from t2;
insert into t1(name) select name from t2;
说明:
1.插入的数据来自于另外一张表
2.一定要保证两张表的结构一致(插入表里字段数和后面表查找出来的字段要相匹配)
3.两张表结构完全一致;或者人造让两边字段一致
​
查询表里所有记录
select * from t1;

##3、删除记录(==delete from==)

删除表里所有的记录
delete from 表名;delete from t1;
truncate 表名;
根据条件删除
delete from t1 where id>3;
注意:
truncate不能加where条件删除数据;只能全部删除表里的所有记录。

##4、更新记录(==update 表名==)

###㈠ 语法

update 表名 set 字段1=新值,字段2=新值,... where条件;

###㈡ 示例

update t1 set name='harry' where id=1;
update t1 set name='jack',id=33 where id=3;
update t1 set id=222,name='wanger' where id=2;

##5、更改表属性信息(==alter table==)

增加一列成为第一列
alter table t2 add id int first;
在id后面增加一列叫id2
alter table t2 add id2 int after id;
alter table t1 add sex varchar(10) not null;删除id2这个列
alter table t2 drop id2;修改列名和数据类型
alter table t2 change id ID bigint;
修改列的数据类型
alter table t2 modify ID int;查看数据库有哪些存储引擎
show engines;
修改表的存储引擎
alter table t2 engine MyISAM;
查看修改存储引擎是否成功
show create table t2;
修改表的默认字符集
alter table t2 default charset=utf8;

##6、重命名或移动表(==rename table==)

移动表到另一个库里并重命名
rename table db01.t1 to db02.t11;
或者
alter table db01.t1 rename db02.t11;只重命名表名不移动
rename table tt1 to tt2;
或者
alter table tt1 rename  tt2;

##7、删除表(==drop table==)

drop table 表名;

##8、delete/truncate/drop区别

  • delete:删除==数据记录==

    • 数据操作语言(DML)

    • 在事务控制里,DML语句要么commit,要么rollback

    • 删除==大量==记录速度慢,==只删除数据==不回收高水位线

    • 可以==带条件==删除

  • truncate:删除==所有数据记录==

    • 数据定义语言(DDL)

    • ==不在==事务控制里,DDL语句执行前会提交前面所有未提交的事务

    • 清里大量数据==速度快==,回收高水位线(high water mark)

    • ==不能带条件删除==

  • drop:删除==数据库对象==

    • 数据定义语言(DDL)

    • 数据库对象包括库、表、用户等

#三、用户管理

##1、创建用户(==create user==)

注意:MySQL中不能单纯通过用户名来说明用户,必须要加上主机。如==jack@10.1.1.1==

###㈠ 语法

创建用户不设置密码
create user 'user'@'host';创建用户设置密码
create user 'user'@'host' identified by 'password';说明:用户的信息保存在mysql数据库中的user表中,验证用户是否创建成功如下:
select user,host from mysql.user; 

###㈡ 示例

create user 'tom'@'localhost' identified by '123';
create user 'harry'@'localhost' identified by '123';
create user 'tom'@'10.1.1.1' identified by '123';
create user  'jack'@'%' identified by '123';

###㈢ 用户主机表示方式

'user'@'localhost'			表示user只能在本地通过socket登录数据库
'user'@'192.168.0.1'			表示user用户只能在192.168.0.1登录数据库
'user'@'192.168.0.0/24'		表示user用户可以在该网络任意的主机登录数据库
'user'@'%'						表示user用户可以在所有的机器上登录数据库;本机为匿名用户

2、删除用户(==drop user==)

㈠ 语法

drop user 用户;

㈡ 示例

删除'user01'@'localhost'用户
mysql> drop user 'user01'@'localhost';
默认删除user01从任意主机登录
mysql> drop user 'user01';
mysql> drop user 'user01'@'%';重命名用户名
mysql> rename user 'harry'@'10.1.1.%' to 'harry'@'10.1.1.1';删除一个匿名用户
mysql> drop user ''@'localhost';删除mysql中的匿名用户
mysql> delete from mysql.user where user='';
删除root用户从本机::1登录(::1表示IPv6地址)
mysql> delete from mysql.user where user='root' and host='::1';
mysql> flush privileges;注意:如果tcp/ip登录,服务器端口不是默认3306,则需要加端口号

3、用户权限管理(==grant==)

㈠ 权限说明

所有权限说明MySQL :: MySQL 5.7 Reference Manual :: 6.2.2 Privileges Provided by MySQL

USAGE	无权限,只有登录数据库,只可以使用test或test_*数据库
ALL	所有权限以下权限为指定权限
select/update/delete/super/replication slave/reload...with grant option 选项表示允许把自己的权限授予其它用户或者从其他用户收回自己的权限

###㈡ 权限保存位置

mysql.user				所有mysql用户的账号和密码,以及用户对全库全表权限(*.*)
mysql.db					非mysql库的授权都保存在此(db.*)
mysql.table_priv		某库某表的授权(db.table)
mysql.columns_priv	某库某表某列的授权(db.table.col1)
mysql.procs_priv		某库存储过程的授权

###㈢ 给用户授权

####① 语法

grant 权限1,权限 on 库.表 to 用户@主机
grant 权限(列1,列2,...) on 库.表 to 用户@主机

####② 用户授权示例

给tom@10.1.1.1用户授予查看db01库里所有表权限
mysql> grant select on db01.* to 'tom'@'10.1.1.1';
刷新权限表
mysql> flush privileges;给tom@10.1.1.1用户授予修改db01库的ID字段的权限
mysql> grant update(ID) on db01.tt1 to 'tom'@'10.1.1.1';
mysql> flush privileges;
查看当前用户权限
mysql> show grants;
查看指定用户权限
mysql> show grants for 'tom'@'10.1.1.1';
③ 使用grant创建用户

说明:5.7以后==不推荐==,未来会被弃用!

grant all on *.* to 'harry'@'10.1.1.%' identified by '123'; 

####④ with grant option选项

with grant option:用户是否可以下放和回收权限grant all on *.* to 'amy'@'10.1.1.%' identified by '123' with grant option;
grant all on *.* to 'harry'@'10.1.1.%' identified by '123'; 测试harry用户和amy用户是否可以将自己的权限下放:
harry用户登录:mysql> grant select on db01.* to 'tom'@'10.1.1.1';
ERROR 1044 (42000): Access denied for user 'harry'@'10.1.1.%' to database 'db01'amy用户登录:
mysql> grant select on db01.* to 'tom'@'10.1.1.1';

####⑤ 总结

  • 创建用户方法

    • create user... ==需要单独grant授权==

    • grant xxx ==直接创建用户并授权==

  • 扩展补充

    • 从MySQL 5.7.6开始,不赞成使用grant修改密码;使用 ALTER USER来代替。

    ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; 

###㈣ 回收用户权限

revoke 权限 on 库.表 from 用户;
撤消指定的权限
mysql> revoke update on db01.tt1 from 'tom'@'10.1.1.1';
撤消所有的权限
mysql> revoke select on db01.* from 'tom'@'10.1.1.1';

#四、查询语句

##1、常见符号

符号说明
%匹配0个或任意多个字符
_(下划线)匹配单个字符
like模糊匹配
=等于,精确匹配
>大于
<小于
>=大于等于
<=小于等于
!=和<>不等于
! 和 not逻辑非
|| 和 or逻辑或
&& 和 and逻辑与
between...and....两者之间
in (....)在...
not in (....)不在

##2、其他关键字

符号说明
regexp使用正则来匹配
order by排序
asc升序排列
desc降序排列
group by聚合
having筛选
distinct去除重复的行

##3、查询举例

###㈠ 基本简单查询

select 字段1,字段2,... from 表名;查看所有数据
select * from emp;
查看指定列
select empno,ename,job,sal from emp;
给列指定别名
select empno 工号,ename 姓名,job 工作,sal 工资 from emp;
或者
select empno as 工号,ename as 姓名,job as 工作,sal as 工资 from emp;

###㈡ 带where条件查询

支持逻辑运算符,支持正则表达式
select * from t3 where english >60 && english <90;
select * from t3 where math >= 60 and english >= 60;
select * from t3 where math >= 60 or english >= 60;
select * from t3 where math >= 60 and not english >= 60;select * from t3 where name regexp '^h';
select * from t1 where name regexp '.*[0-9]';
select * from t1 where name regexp '.*[0-9]+.*';
select * from t1 where name regexp '.*[0-9]{2}.*' ;sal不在3000与5000之间的记录 
select * from emp where sal not between 3000 and 5000;sal在500-1000或者3000-5000之间
select * from emp where sal >= 3000 and sal <= 5000 or sal >=500 and sal <=1000;

###㈢ 排序

默认按照deptno列升序排列
select * from emp order by deptno;
指定按照deptno列升序排列
select * from emp order by deptno asc;
指定deptno列按降序排列
select * from emp order by deptno desc;

###㈣ 去重

select distinct deptno from emp;

###㈤ group by和having

####① group by

根据给定==数据列==的查询结果进行分组统计,最终得到一个==分组汇总表==

注:一般情况下group by需与==统计函数==一起使用才有意义

常见统计函数说明
max求最大值
min求最小值
sum求和
avg求平均值
count求总行数
  • 举例说明

查找每个部门的最高工资:
select deptno,max(sal) from emp group by deptno;
每个部门最大工资和部门人数:
select deptno,max(sal),count(*) from emp group by deptno;
+--------+----------+----------+
| deptno | max(sal) | count(*) |
+--------+----------+----------+
|     10 |  5000.00 |        3 |
|     20 |  3000.00 |        5 |
|     30 |  2850.00 |        6 |
+--------+----------+----------+
查找10号和20号部门最大工资和人数
select deptno,max(sal),count(*) from emp where deptno in (10,20) group by deptno;
+--------+----------+----------+
| deptno | max(sal) | count(*) |
+--------+----------+----------+
|     10 |  5000.00 |        3 |
|     20 |  3000.00 |        5 |
+--------+----------+----------+

####② having

  • having与where类似,根据条件对==数据==进行过滤筛选

  • where==针对表中的列==发挥作用,查询数据

  • having==针对查询结果集==发挥作用,筛选数据

举例说明

查询员工数大于5个的部门编号和最大工资及员工数
select deptno,max(sal),count(*) from emp group by deptno having count(*)>5;
查询底薪+提成大于2000的员工相关信息
select empno,ename,sal+ifnull(comm,0) sum from emp having sum >2000;
查询每个部门最大工资的员工信息
select ename,empno,deptno,sal from emp where (deptno,sal) in (select deptno,max(sal) from emp group by deptno) ;
+-------+-------+--------+---------+
| ename | empno | deptno | sal     |
+-------+-------+--------+---------+
| BLAKE |  7698 |     30 | 2850.00 |
| SCOTT |  7788 |     20 | 3000.00 |
| KING  |  7839 |     10 | 5000.00 |
| FORD  |  7902 |     20 | 3000.00 |
+-------+-------+--------+---------+
4 rows in set (0.00 sec)查询20和30号部门基本工资加提成大于2000的人员信息
select deptno,empno,ename,sal+ifnull(comm,0) sum from emp where deptno in(30,20)having sum >2000;
  • IFNULL函数扩展

IFNULL()函数:
MySQL中的IFNULL函数类似于Oracle中的NVL函数,其表达式为:IFNULL(expr1,expr2),如果第一个参数不为空,则返回第一个参数,否则返回第二个参数。
ifnull(comm,0)IFNULL(expr1,expr2)
If expr1 is not NULL, IFNULL() returns expr1; otherwise it returns expr2.IF()函数:
IF(expr1,expr2,expr3)类似于Oracle中的NVL2函数,如果第一个表达式的值为TRUE(不为0或null),则返回第二个参数的值,否则返回第三个参数的值IF(expr1,expr2,expr3)
If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL), IF() returns expr2. Otherwise, it returns expr3.NULLIF()函数:
NULLIF(expr1,expr2),如果expr1=expr2为真,返回null;否则返回expr1NULLIF(expr1,expr2)
Returns NULL if expr1 = expr2 is true, otherwise returns expr1. This is the same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.

###㈥ 合并列函数(concat)

select concat(user,'    ',password) as 用户名和密码 from mysql.user;
create table t3(path1 varchar(255),homedir varchar(255));
insert into t3 set path1='/www/itcast',homedir='u01';
select concat(path1,'/', homedir) from t3;
select concat(path1,'/', homedir) as '家目录' from t3;

###㈦ 分页函数(limit)

用法:limit 起始位置,偏移量			  起始位置从0开始
select * from t1 limit n;			显示前n行
select * from t1 limit n,m;		显示n+1行至表中的n+m行select * from t1 limit 10;			显示前10行
select * from t1 limit 10,10;	   显示11至20行
select * from t1 limit 1;			显示第1行 
select * from t1 limit 0,2;		显示第1,2行 
select * from t1 limit 2,2;		显示3,4行
select * from t1 limit 4,2;		显示5,6行
select * from t1 limit 6,2;		显示第7,8行

###㈧ 多表联合查询

常规查询表:
select * from emp,dept where emp.deptno=dept.deptno;select dept.deptno,dept.dname,emp.ename,emp.job from emp,dept where emp.deptno=dept.deptno;select e.ename,e.job,e.hiredate,d.dname,e.deptno from emp e,dept d where e.deptno=d.deptno;表的连接:纵向连接/内连接/左连接/右连接左连接(以左表为标准连接右表):
left join=left [outer] join
select emp.ename,emp.job,dept.deptno from dept left join emp on emp.deptno=dept.deptno;右连接(以右表为标准连接左表):
right join= right [outer] join
select emp.ename,emp.job,dept.deptno from dept right join emp on emp.deptno=dept.deptno;内连接:取多表之间的交集
inner join
select emp.ename,emp.job,dept.deptno from emp inner join dept on emp.deptno=dept.deptno;纵向连接:合并【表结构相同】
select name,math,english,'' as 'chinese' from t2 union select name,math,english,chinese from t3;

###㈨ 四则运算

select 1+2;
select 1-3;
select 1*4;
select 1/4;
select 1 + 1, (10-1)/3, 2*2/2;
select 1 + 1 from dual;		dual表,俗称万能表
乘幂需要调用函数:-3表示2的三次幂取倒数
mysql> select pow(2,3),power(2,3),pow(2,-3),power(2,-3);
+----------+------------+-----------+-------------+
| pow(2,3) | power(2,3) | pow(2,-3) | power(2,-3) |
+----------+------------+-----------+-------------+
|        8 |          8 |     0.125 |       0.125 | 
+----------+------------+-----------+-------------+
1 row in set (0.00 sec)

#五、扩展常见的数据类型

##1、数值类型

常见的数值类型

###㈠ 整数类型(精确值)

###㈡ 定点类型(精确值)

  • DECIMAL和NUMERIC

DECIMALNUMERIC 类型的存储==精确的数值数据==。使用这些类型时,重要的是要保留==精确的精度==,例如使用货币数据。在MySQL中, NUMERIC被作为DECIMAL来应用,所以下面的举例DECIMAL同样适用于 NUMERIC

  • 举例说明

salary DECIMAL(5,2)
在上面的例子中,薪水字段的类型为decimal,表示精确的数字。其中,5代表精度,2代表刻度。
精度表示数值存储的有效位数,刻度表示小数点后面可存储的位数。
DECIMAL(5,2)能够存储五位数和两位小数的任何值,因此可以存储在salary 列中的值的范围-999.99是 999.99特殊注意:
DECIMAL(M)和DECIMAL(M,0)是相等的,存储长度取决于M的值,默认情况下M值为10.刻度为0表示没有小数。

###㈢ 浮点类型(近似值)

  • FLOAT和DOUBLE

FLOATDOUBLE类型代表近似数字数据值。MySQL对于单精度值使用四个字节,对于双精度值使用八个字节。 FLOAT单精度浮点数精确到约7位小数,DOUBLE双精度浮点数精确到大约15位小数 。FLOAT类型会随着数值的增大精度会减小。

  • 举例说明

FLOAT(M,D),其中,M表示存储的有效位数,D代表小数点后面的位数;即整数位数+小数部分不能超过M值。
colum1 FLOAT(7,4)
上面例子中,如果你插入为999.00009到cloum1列,那么mysql在存储时会四舍五入变为999.0001插入。
  • 对比总结

数值类型精度存储空间精确性
FLOAT单精度4字节
DOUBLE双精度8字节低,比float高
DECIMAL高精度变长

##2、字符串类型

常见的字符类型

###㈠ CHAR类型

CHAR类型的字符串为定长.长度范围是0到255之间的任何值.占用定长的存储空间,不足的部分用==空格==填充;读取时删掉后面的空格。

name char(10)

  • 存储空间

CHAR(==M==)类型的存储空间和字符集有关系,一个中文在utf8字符集中占用3个bytes、gbk占用2个bytes、数字和字符统一用一个字符表示。

  • 存储机制

在不够M长度时,MySQL在存储数据时,需要填充特殊的空格.

  • 举例说明

name CHAR(M),M表示字符数

###㈡ VARCHAR类型

VARCHAR是==变长存储==,仅使用必要的存储空间.

name varchar(10)

  • 存储空间

VARCHAR(M)类型的存储空间和字符集有关系,一个中文在utf8字符集中占用3个bytes、gbk统一占用2个bytes、数字和字符一个字符表示。

  • 存储机制

VARCHAR(M)字段存储实际是从第二个字节开始存储,然后用1到2个字节表示实际长度,剩下的才是可以存储数据的范围,因此最大可用存储范围是65535-3=65532字节;

第一个字节标识是否为空.(长度小于255字节,使用一个字节来表示长度;大于255字节使用两个字节来表示长度)。

###㈢ 其他

BLOB:保存二进制的大型数据(字节串),没有字符集,eg:图片、音频视频等。

TEXT:保存非二进制字符串(字符串);有一个字符集。

BINARY和VARBINARY:类似CHAR和VARCHAR;保存字节字符串,而不是字符字符串,这意味着它们没有字符集

##3、时间类型

###㈠ DATE类型

The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.

###㈡ DATETIME

The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displaysDATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

###㈢ TIMESTAMP

The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

注意:

Invalid DATEDATETIME, or TIMESTAMP values are converted to the “zero” value of the appropriate type ('0000-00-00' or '0000-00-00 00:00:00').

无效的日期,日期时间等会被替换成‘0000-00-00’或‘0000-00-00 00:00:00’

###㈣ TIME

MySQL retrieves and displays TIME values in 'HH:MM:SS' format (or 'HHH:MM:SS' format for large hours values).TIME values may range from '-838:59:59' to '838:59:59'.

说明:小时部分可以是这么大,因为可以使用TIME类型不仅代表一个时间(必须小于24小时),而且可以表示运行时间或两个事件之间的时间间隔(可能大于24小时,甚至负数)。

==注意:==

TIME这一列如果存储缩写,需要注意mysql的解释方式。无效的时间值会被转换成'00:00:00' 。

'11:12' means '11:12:00', not '00:11:12'.

'12' and 12 are interpreted as '00:00:12'.

###㈤ YEAR

YEAR(4) and YEAR(2) differ in display format, but have the same range of values.

For 4-digit format, MySQL displays YEAR values in YYYY format, with a range of 1901 to 2155, or 0000.

For 2-digit format, MySQL displays only the last two (least significant) digits; for example, 70 (1970 or 2070) or 69 (2069).

无效的值将会被转换成'0000'.

六、课后练习

1、将SQL脚本(demo.sql)导入到数据库中

2、根据如下要求写出查询语句

1)查询英语前三名

2)查询总分,以降序排列

3)查询总分第一名

4)查询英语最高分的姓名及分数

5)查询总成绩的平均分第一名

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

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

相关文章

lv11 嵌入式开发 GPIO实验 9

目录 1 简介 1.1 GPIO 2 LED实验步骤 2.1 通过电路原理图分析LED的控制逻辑 2.2 通过电路原理图查找LED与Exynos4412的连接关系 2.3 通过数据手册分析GPIO中哪些寄存器可以控制LED 2.4 通过程序去操控对应的寄存器完成对LED的控制 2.4.1 使用寄存器写入…

过渡曲线的构造之平面PH曲线

平面PH曲线的构造及其相应性质 平面PH曲线的构造及其相应性质PH曲线理论三次PH曲线的构造及性质四次PH曲线的构造及性质五次PH曲线的构造及性质非尖点五次PH曲线尖点五次PH曲线 参考文献 平面PH曲线的构造及其相应性质 过渡曲线常需要满足在连接点处位置连续、曲率连续以及切线…

韵达快递查询,韵达快递单号查询,一键筛选出单号中的退回件

批量查询韵达快递单号的物流信息&#xff0c;并将其中的退回件一键筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 韵达快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;第一次使用的朋友记得先注册&#xff…

鸿蒙(HarmonyOS)应用开发——装饰器

简介 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发者可以以更简洁、更自然的方式开发高性能应用。TS是JavaScript&#xff08;简称JS&#xff09;的超…

MySQL 库操作 | 表操作

文章目录 一.MySQL库的操作1.创建数据库2.字符集和校验规则3.操纵数据库 二.MySQL表的操作1.创建表2.操作表3.删除表 一.MySQL库的操作 1.创建数据库 创建数据库 创建数据库的SQL如下&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name [[DEFAULT] CHARSETcharset_name…

一篇文章完成Hbase入门

文章目录 一、简介1、数据模型结构2、物理存储结构3、数据模型4、基本架构 二、安装1、下载解压安装包2、修改配置文件3、启动服务(单机、集群)4、配置高可用(HA) 三、命令行操作1、建表2、新增/更新数据3、查看表数据4、删除数据5、修改默认保存的数据版本 四、架构1、RegionS…

数据提取PDF SDK的对比推荐

PDF 已迅速成为跨各种平台共享和分发文档的首选格式&#xff0c;它作为一种数据来源&#xff0c;常见于公司的各种报告和报表中。为了能更好地分析、处理这些数据信息&#xff0c;我们需要检测和提取 PDF 中的数据&#xff0c;并将其转换为可用且有意义的格式。而数据提取的 PD…

物联网中基于信任的安全性调查研究:挑战与问题

A survey study on trust-based security in Internet of Things: Challenges and issues 文章目录 a b s t r a c t1. Introduction2. Related work3. IoT security from the one-stop dimension3.1. Output data related security3.1.1. Confidentiality3.1.2. Authenticity …

快速认识Linux的几个指令

我们先简单认识几个指令&#xff0c;为之后的指令学习打好基础 打开XShell并登录云服务器 01.pwd指令 pwd命令的作用是显示当前在Linux系统中所处的路径 02.ls指令 ls命令的作业是罗列出当前路径下的文件名&#xff08;即pwd的路径下&#xff09;&#xff0c;由于我们没有新…

Docker Swarm总结+Jenkins安装配置与集成(4/4)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

Python可迭代对象排序:深入排序算法与定制排序

更多Python学习内容&#xff1a;ipengtao.com 排序在计算机科学中是一项基础而关键的操作&#xff0c;而Python提供了强大的排序工具来满足不同场景下的排序需求。本文将深入探讨Python中对可迭代对象进行排序的方法&#xff0c;涵盖基础排序算法、sorted函数的应用、以及定制排…

【C++初阶】STL详解(八)List的模拟实现

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

【深度学习笔记】03 微积分与自动微分

03 微积分与自动微分 导数和微分导数解释的可视化偏导数梯度链式法则自动微分非标量变量的反向传播分离计算 导数和微分 假设我们有一个函数 f : R → R f: \mathbb{R} \rightarrow \mathbb{R} f:R→R&#xff0c;其输入和输出都是标量。 如果 f f f的导数存在&#xff0c;这个…

GIT版本控制和常用命令使用介绍

GIT版本控制和常用命令使用介绍 1. 版本控制1.1 历史背景1.2 什么是版本控制1.3 常见版本控制工具1.4 版本控制的分类 2 Git介绍2.1 Git 工作流程2.2 基本概念2.3 文件的四种状态2.4 忽略文件2.5 Git命令2.5.1 查看本地git配置命令2.5.2 远程库信息查看命令2.5.3 分支交互命令2…

WorkPlus即时通讯软件,以自主安全为底座,连接工作的一切

在当今竞争激烈的商业环境中&#xff0c;中大型企业对于移动办公平台的需求越来越迫切。在众多可选的平台中&#xff0c;WorkPlus凭借其高性价比和针对中大型企业的特色功能&#xff0c;成为了许多企业的首选。本文将为各位读者深度解析WorkPlus私有化部署的优势&#xff0c;带…

学习.NET验证模块FluentValidation的基本用法(续2:其它常见用法)

FluentValidation模块支持调用When和Unless函数设置验证规则的执行条件&#xff0c;其中when函数设置的是满足条件时执行&#xff0c;而Unless函数则是满足条件时不执行&#xff0c;这两个函数的使用示例如及效果如下所示&#xff1a; public AppInfoalidator() {RuleFor(x>…

Mysql 解决Invalid default value for ‘created_at‘

在mysql版本 8.0 和 5.* 之间数据互导的过程中&#xff0c;老是会出现各种错误&#xff0c;比如 这个created_at 一定要有一个默认值&#xff0c; 但是我加了 default null 还是会报错&#xff0c;于是对照了其他的DDL 发现&#xff0c;需要再加 null default null 才行&#…

从0开始学习JavaScript--JavaScript事件:响应与交互

JavaScript的事件处理是Web开发中至关重要的一部分&#xff0c;通过事件&#xff0c;能够实现用户与页面的互动&#xff0c;使得网页更加生动和交互性。本文将深入探讨JavaScript事件的各个方面&#xff0c;包括事件的基本概念、事件类型、事件对象、事件冒泡与捕获、事件委托、…

如何看待 2023 OPPO 开发者大会?潘塔纳尔进展如何?AndesGPT 有哪些亮点?

在2023年11月16日举行的OPPO开发者大会&#xff08;ODC23&#xff09;上&#xff0c;OPPO带来了全新ColorOS 14、全新互联网服务生态以及健康服务进展&#xff0c;这些新动态中有许多值得关注的地方。 1、全新ColorOS 14&#xff1a; 效率提升&#xff1a;ColorOS 14通过一系列…

虚拟机可ping树莓派树莓派无法ping虚拟机 的解决办法

问题描述 在学习交叉编译的过程中&#xff0c;发现了树莓派无法ping通虚拟机的问题。所以我尝试了各种ping&#xff0c;发现&#xff1a; 虚拟机可以ping通树莓派和主机树莓派可以ping通主机主机可以ping通树莓派和虚拟机唯独树莓派没法ping通虚拟机 尝试各种方法后找到一种…