mysql学习一:SQL基础
来源:SegmentFault
时间:2023-01-22 14:01:42 316浏览 收藏
在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《mysql学习一:SQL基础》,聊聊MySQL,希望可以帮助到正在努力赚钱的你。
mysql简介
mysql是有名的开放源代码关系型数据库。它最早是AB公司开源的,后来到Sun公司手中。之后Sun公司被Oracle公司收购,mysql就归Oracle所有。从此mysql走向商业化,又有名为mariadb数据库作为mysql的分支被开源,之后mysql又出了社区版和企业版。mysql大致的历史就这样,更详细的可以百度,这里不多展开。
对于开发者来说,数据库是绕不开的一门技术,所有mysql这个有名,使用又频繁的开源数据库当然又学习的必要。
mysql的安装
mysql的安装可以是源代码编译安装,或者是在mysql的官网直接下载二进制文件,然后安装。当然,在容器技术这么火的2019,直接在docker上安装并使用mysql对开发者来说更合适。
先准备一台CentOS7虚拟机,安装docker。直接下载mysql镜像:
docker pull mysql:5.7
如果因为是在国内使用安装慢,可以使用阿里云的镜像加速。
然后启动mysql镜像
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
默认mysql数据库root用户的登陆密码为123456,。本机使用mysql命令登陆,未安装可以使用yum命令安装:
yum install -y mysql
使用mysql命令登陆:
mysql -uroot -p123456 -h 127.0.0.1
SQL简介
SQL全称为Structure Query Language(结构化查询语言),它是使用关系型模型的数据库应用语言。SQL语句主要分为三类:
- DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create、drop、alter等。
- DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。
- DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括grant、revoke等。
注:SQL语句中的CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name例如创建一个名为test的数据库:
MySQL [(none)]> CREATE DATABASE test DEFAULT CHARSET utf8; Query OK, 1 row affected (0.00 sec)注:mysql中sql是不区别大小写的,所以上面的命令等同于USE dbname例如使用数据库test:
MySQL [(none)]> use test; Database changed MySQL [test]>可以看到[]内的内容变成test数据库的名称了。
删除数据库
创建数据库对应的就是删除数据库了,命令为:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name例如查看test数据库:
MySQL [test]> drop database if exists test; Query OK, 0 rows affected (0.00 sec) MySQL [(none)]>注:数据库删除后,下面的所有表数据都会全部删除,所以在删除前需要检查并备份。查看所有数据库
命令为:
SHOW DATABASESMySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+创建表
在数据库中创建一张表的语法如下:
CREATE TABLE [IF NOT EXISTS] tablename ( column_name_1 column_type_1 constraints, column_name_2 column_type_2 constraints, ... column_name_n column_type_n constraints );例如创建一张user表,包含字段id,name,age。
MySQL [test]> create table if not exists user ( -> id int(11) primary key, -> name varchar(32) not null, -> age int(11) -> );注:创建表之前需要先选择数据库。查看所有表
同样也是使用show
SHOW tables例如:查看test数据库下的所有表
MySQL [test]> show tables; +----------------+ | Tables_in_test | +----------------+ | user | +----------------+ 1 row in set (0.00 sec)查看表结构
查看表结构命令为:
DESC tablename例如查看之前创建的user的结构。
MySQL [test]> desc user; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(32) | NO | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)和这个命令相似功能的命令是
MySQL [test]> show create table user\G; *************************** 1. row *************************** Table: user Create Table: CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(32) NOT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) ERROR: No query specified删除表
表的删除命令如下:
DROP TABLE [IF EXISTS] tablename例如:删除之前创建的user表:
MySQL [test]> drop table if exists user; Query OK, 0 rows affected (0.00 sec)修改表
修改表使用关键字
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|ALTER col_name]例如:修改user表的name字段,将varchar(32)修改为varchar(64)
MySQL [test]> alter table user modify name varchar(64); Query OK, 0 rows affected (0.11 sec) Records: 0 Duplicates: 0 Warnings: 0 MySQL [test]> desc user; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(64) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)2.添加表字段
ALTER TABLE tbname ADD [COLUMN] column_definition [FIRST|ALTER col_name]例如:user中添加一个字段,名为email,类型是varchar(64)
MySQL [test]> alter table `user` add `email` varchar(64) not null; Query OK, 0 rows affected (0.34 sec) Records: 0 Duplicates: 0 Warnings: 0 MySQL [test]> desc user; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(64) | YES | | NULL | | | age | int(11) | YES | | NULL | | | email | varchar(64) | NO | | NULL | | +-------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)3.删除表字段
语法如下:
ALTER TABLE tablename DROP [COLUMN] col_name例如:删除user中的email字段
MySQL [test]> alter table `user` drop `email`; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 MySQL [test]> desc user; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(64) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)4.字段改名
语法如下:
ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|ALTER col_name]例如:将name改名为username,类型为varchar(32):
MySQL [test]> alter table `user` change `name` `username` varchar(32); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 MySQL [test]> desc user; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | username | varchar(32) | YES | | NULL | | | age | int(11) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)注:change 和 modify 都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。但 change 可以改名,modify 则不能。5.修改字段排列顺序。
修改字段的关键字ADD、CHNAGE、MODIFY中都支持可选项first|after,用于修改字段的位置。
例如:新增一个字段email,并置于username字段之前:
MySQL [test]> alter table `user` add `email` varchar(64) after `id`; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 MySQL [test]> desc user; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | email | varchar(64) | YES | | NULL | | | username | varchar(32) | YES | | NULL | | | age | int(11) | YES | | NULL | | +----------+-------------例如:修改字段email在username字段之后:
MySQL [test]> alter table `user` modify `email` varchar(64) after `username`; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 MySQL [test]> desc user; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | username | varchar(32) | YES | | NULL | | | email | varchar(64) | YES | | NULL | | | age | int(11) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)注:CHNAGE|FIRST|ALTER 这些关键字都属于MySQL在标准SQL上的扩展,在其他数据库上不一定适用。6.修改表名
语法如下:
ALTER TABLE tablename RENAME [TO] new_name例如:将表user修改为tb_user:
MySQL [test]> alter table `user` rename `tb_user`; Query OK, 0 rows affected (0.00 sec) MySQL [test]> desc tb_user; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | username | varchar(32) | YES | | NULL | | | email | varchar(64) | YES | | NULL | | | age | int(11) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.01 sec)DML语句
DML语句为数据库表的操作语句,可以对数据库表的内容做增(insert)、删(delete)、改(update)、查(select)操作。
插入记录
表创建完毕后就往表中插入记录了,语法如下:
INSERT INTO tablename (field1,field2,field3,...,fieldn) VALUES (value1,value2,value3,...,valuen)例如:在user表中插入一条记录,id为1,name为xiaoming,age为20:
MySQL [test]> insert into `user` (`id`,`name`,`age`) values (1,'xiaoming',20); Query OK, 1 row affected (0.01 sec) MySQL [test]> select id, name, age from `user`; +----+----------+------+ | id | name | age | +----+----------+------+ | 1 | xiaoming | 20 | +----+----------+------+ 1 row in set (0.00 sec)注:如果表中的字段类型设置了初始值,那插入时可以不指定该字段的值,这样它就以默认的值插入到表中。select是SQL查询操作的关键字,之后再说明。insert语句支持同时插入多条记录:
INSERT INTO tablename (field1,field2,field3,...,fieldn) VALUES (value1,value2,value3,...,valuen), (value1,value2,value3,...,valuen) ... (value1,value2,value3,...,valuen);例如:同时在user表中插入多条记录:
MySQL [test]> insert into `user` (`id`,`name`,`age`) -> values -> (2,'John',40), -> (3,'Lisa',18); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 MySQL [test]> select id, name, age from `user`; +----+----------+------+ | id | name | age | +----+----------+------+ | 1 | xiaoming | 20 | | 2 | John | 40 | | 3 | Lisa | 18 | +----+----------+------+ 3 rows in set (0.00 sec)注:同时插入可以节省很多的网络开销,提高插入效率。更新记录
更新表的记录语法如下:
UPDATE tablename SET field1=value1,field2=value2,...,fieldn=valuen [WHERE CONDITION]例如:修改John的年龄为30:
MySQL [test]> update `user` set age=30 where name='John'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 MySQL [test]> select id, name, age from `user` where name='John'; +----+------+------+ | id | name | age | +----+------+------+ | 2 | John | 30 | +----+------+------+ 1 row in set (0.00 sec)注:修改操作时需要使用关键字UPDATE t1,t2,...tn SET t1.field1=value1,...,tn.fieldn=valuen [WHERE CONDITION]删除记录
删除数据库表记录使用命令
DELETE FROM tablename [WHERE CONDITION]例如:删除name为'xiaoming'的记录:
MySQL [test]> delete from `user` where name='xiaoming'; Query OK, 1 row affected (0.00 sec) MySQL [test]> select * from user; +----+------+------+ | id | name | age | +----+------+------+ | 2 | John | 30 | | 3 | Lisa | 18 | +----+------+------+ 2 rows in set (0.00 sec)同样的,删除操作也支持多表删除,语法如下:
DELETE t1,t2,...,tn FROM t1,t2,...,tn [WHERE CONDITION]在进行多表操作时,为了简化SQL命令,可以给表添加别名。如果使用了别名,则在字段前也需要用别名表示该表。
注:删除时也一定要指定条件,不加where条件会删除表的所有记录。查询记录
查询记录使用命令select,语法如下:
SELECT * FROM tablename [WHERE CONDITION]例如:查询user表的所有记录:
MySQL [test]> select * from user; +----+------+------+ | id | name | age | +----+------+------+ | 2 | John | 30 | | 3 | Lisa | 18 | +----+------+------+ 2 rows in set (0.00 sec)MySQL [test]> select * from user; +----+------+------+ | id | name | age | +----+------+------+ | 1 | John | 40 | | 2 | John | 30 | | 3 | Lisa | 18 | | 4 | Lisa | 18 | +----+------+------+ 4 rows in set (0.00 sec) MySQL [test]> select distinct name from user; +------+ | name | +------+ | John | | Lisa | +------+ 2 rows in set (0.00 sec)2.条件查询。
用where关键字指定查询条件。例如:查询name为John且age为30的记录:
MySQL [test]> select * from user where name='John' and age=30; +----+------+------+ | id | name | age | +----+------+------+ | 2 | John | 30 | +----+------+------+ 1 row in set (0.01 sec)使用and连接多个查询条件,也可以使用or表示查询满足多个条件中某个条件的记录。例如:查询name为John或id=3的记录:
MySQL [test]> select * from user where name='John' or id=3; +----+------+------+ | id | name | age | +----+------+------+ | 1 | John | 40 | | 2 | John | 30 | | 3 | Lisa | 18 | +----+------+------+ 3 rows in set (0.00 sec)where后面的条件时一个表达式,支持各种运算符:>、=、
3.排序
使用关键字
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC], field2 [DESC|ASC],...,fieldn [DESC|ASC]DESC和ASC是排序顺序的关键字,DESC表是按照字段进行降序排列,ASC则表示升序排列,默认为升序排列。如果有多个字段,则先对第一个字段排序,字段相同的情况下再根据第二个排序,依次类推。例如:按照age字段对user表的记录排序:
MySQL [test]> select * from user order by age desc; +----+------+------+ | id | name | age | +----+------+------+ | 1 | John | 40 | | 2 | John | 30 | | 3 | Lisa | 18 | | 4 | Lisa | 18 | +----+------+------+ 4 rows in set (0.00 sec) MySQL [test]> select * from user order by age asc; +----+------+------+ | id | name | age | +----+------+------+ | 3 | Lisa | 18 | | 4 | Lisa | 18 | | 2 | John | 30 | | 1 | John | 40 | +----+------+------+ 4 rows in set (0.01 sec)4.限制和偏移
使用关键字
SELECT * FROM LIMIT N OFFSET M例如:查询user表的第一条记录:
MySQL [test]> select * from user limit 2; +----+------+------+ | id | name | age | +----+------+------+ | 1 | John | 40 | | 2 | John | 30 | +----+------+------+ 2 rows in set (0.00 sec)例如:查询user表的第二条记录:
MySQL [test]> select * from user limit 1 offset 1; +----+------+------+ | id | name | age | +----+------+------+ | 2 | John | 30 | +----+------+------+ 1 row in set (0.00 sec)而且
MySQL [test]> select * from user limit 5 offset 5;注:limit属于MySQL扩展SQL92后的语法,在其他数据库上不一定通用。5.聚合
聚合操作的语法如下:
SELECT [field1,field2,...,fieldn] func_name FROM tablename [WHERE CONDITION] [GROUP BY field1,field2,...,fieldn] [WITH ROLLUP] [HAVING CONDITION]其参数说明如下:
- func_name 表示聚合函数,常用的有sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。
- GROUP BY 关键字表示要进行分类聚合的字段。
- WITH ROLLUP 表示是否对分类聚合后的结果进行再汇总。
- HAVING 关键字表示对分类后的结果再进行条件的过滤。
注:having 和 where 都能对查询的数据进行条件过滤。但where是再聚合前就对记录进行过滤,having则是在聚合后再根据逻辑进行过滤。例如:统计user表的记录数:
MySQL [test]> select count(1) from user; +----------+ | count(1) | +----------+ | 4 | +----------+ 1 row in set (0.00 sec)例如:在上面统计的基础上再统计各个性别的人数。
MySQL [test]> select gender,count(1) from user group by gender; +--------+----------+ | gender | count(1) | +--------+----------+ | man | 2 | | woman | 2 | +--------+----------+ 2 rows in set (0.00 sec)例如:再加上总人数
MySQL [test]> select gender,count(1) from user group by gender with rollup; +--------+----------+ | gender | count(1) | +--------+----------+ | man | 2 | | woman | 2 | | NULL | 4 | +--------+----------+ 3 rows in set (0.00 sec)例如:统计人数大于1的性别
MySQL [test]> select gender,count(1) from user group by gender having count(1)>1; +--------+----------+ | gender | count(1) | +--------+----------+ | man | 2 | | woman | 2 | +--------+----------+ 2 rows in set (0.00 sec)例如:统计user表的最大年龄,最小年龄,年龄总和。
MySQL [test]> select max(age),min(age),sum(age) from user; +----------+----------+----------+ | max(age) | min(age) | sum(age) | +----------+----------+----------+ | 40 | 18 | 106 | +----------+----------+----------+ 1 row in set (0.00 sec)6.表连接
当需要同时显示对各表的字段时,就可以使用表连接实现。表连接分为:
- 内连接:语法
MySQL [test]> select * from user; +----+------+--------+------+---------+ | id | name | gender | age | role_id | +----+------+--------+------+---------+ | 1 | Bob | man | 40 | 2 | | 2 | John | man | 30 | 1 | | 3 | Anna | woman | 18 | 3 | | 4 | Lisa | woman | 18 | NULL | +----+------+--------+------+---------+ 4 rows in set (0.00 sec) MySQL [test]> select * from role; +----+---------------+ | id | name | +----+---------------+ | 1 | administrator | | 2 | manager | | 3 | visitor | | 4 | unknow | +----+---------------+ 4 rows in set (0.00 sec)例如:内连接方式查询user中对应的角色名称:
MySQL [test]> select u.name,u.gender,u.age,r.name from user u inner join role r on u.role_id=r.id; +------+--------+------+---------------+ | name | gender | age | name | +------+--------+------+---------------+ | Bob | man | 40 | manager | | John | man | 30 | administrator | | Anna | woman | 18 | visitor | +------+--------+------+---------------+例如:同样的需求用左连接实现:
MySQL [test]> select u.name,u.gender,u.age,r.name from user u left join role r on u.role_id=r.id; +------+--------+------+---------------+ | name | gender | age | name | +------+--------+------+---------------+ | John | man | 30 | administrator | | Bob | man | 40 | manager | | Anna | woman | 18 | visitor | | Lisa | woman | 18 | NULL | +------+--------+------+---------------+ 4 rows in set (0.00 sec)因为Lisa用户没有对应的角色id,所以显示NULL。
例如:以右连接方式实现:MySQL [test]> select u.name,u.gender,u.age,r.name from user u right join role r on u.role_id=r.id; +------+--------+------+---------------+ | name | gender | age | name | +------+--------+------+---------------+ | Bob | man | 40 | manager | | John | man | 30 | administrator | | Anna | woman | 18 | visitor | | NULL | NULL | NULL | unknow | +------+--------+------+---------------+ 4 rows in set (0.00 sec)unknow角色没有查询到对应的用户,显示NULL。
7.子查询
在某些情况下,进行查询时需要的条件是另一个select语句的结果,这种情况就要用到子查询。用于子查询的关键字主要包括 in、not in、=、!=、exists、not exists、like、>、
SELECT * FROM table_name WHERE CONDITION SELECT * FROM table_name例如:查询角色id为Manager或Administrator的用户:
MySQL [test]> select * from user where role_id in (select id from role where name in ('manager','administrator')); +----+------+--------+------+---------+ | id | name | gender | age | role_id | +----+------+--------+------+---------+ | 1 | Bob | man | 40 | 2 | | 2 | John | man | 30 | 1 | +----+------+--------+------+---------+ 2 rows in set (0.00 sec)上面的子查询可以用表连接实现:
MySQL [test]> select u.name,u.gender,u.age,r.name from user u inner join role r where r.name in ('manager','administrator') and r.id=u.role_id; +------+--------+------+---------------+ | name | gender | age | name | +------+--------+------+---------------+ | Bob | man | 40 | manager | | John | man | 30 | administrator | +------+--------+------+---------------+ 2 rows in set (0.00 sec)注:很多情况下表连接和子查询是可以互相转化的。而且很多情况下表连接查询效率优于子查询。8.联合查询
当需要查询的数据散落在不同的表中,且表之间没有连接关系。语法如下:
SELECT * FROM t1 UNION | UNION ALL SELECT * FROM t2 ... UNION | UNION ALL SELECT * FROM tnUNION 和 UNION ALL 的区别在于UNION会去点查询结果中的重复值,而UNION ALL则保留重复值。
例如:查询student表和user表中的人名:MySQL [test]> select id, name from user union select id,name from student; +----+------+ | id | name | +----+------+ | 1 | Bob | | 2 | John | | 3 | Anna | | 4 | Lisa | | 1 | Mark | | 2 | Li | +----+------+ 6 rows in set (0.00 sec)DCL语句
DCL主要用于管理数据库的权限。语法如下:
GRANT PRI ON databasename.tablename TO 'user'@'ip' IDENTIFIED BY 'password'例如:创建一个数据用户ks,具有对test数据库的所有表的select/insert权限:
MySQL [test]> grant select,insert on test.* to 'ks'@'172.17.1.254' identified by '123'; Query OK, 0 rows affected, 2 warnings (0.00 sec) MySQL [test]> flush privileges; Query OK, 0 rows affected (0.00 sec)以上就是《mysql学习一:SQL基础》的详细内容,更多关于mysql的资料请关注golang学习网公众号!
-
499 收藏
-
384 收藏
-
184 收藏
-
265 收藏
-
352 收藏
-
475 收藏
-
483 收藏
-
462 收藏
-
469 收藏
-
289 收藏
-
239 收藏
-
315 收藏
-
361 收藏
-
184 收藏
-
227 收藏
-
202 收藏
-
140 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习