Lisp, Scheme, and Racket and related languages have many distinct syntax forms, just like other languages. The syntax forms appear visually similar due to the use of parentheses, but the forms themselves are distinct.
For example, here are some of the distinct syntax forms in Racket (Scheme):
(+ 3 4) # Procedure call
(lambda (x) (+ x x)) # Lambda expression
# See also case-lambda
(let ((x 23) (y 42)) # Variable binding
(+ x y)) # And also:
# let*, letrec, letrec*, let-values,
# let*-values, let-syntax, letrec-syntax, local
(set! x 4) # Assignment (mutating)
(define x 23) # Defined value
(define (f x) # Defined procedure
(+ x 42))
(quote a) # Quotation
(#%datum . 10) # Quotation (keywords prohibited)
# Conditionals
(if (> 2 3) 'yes 'no)
(cond ((> 3 2) 'greater)
((< 3 2) 'less))
(and a b)
(or a b)
(cond ('(1 2 3) => cadr) # Test clause
(else #f)) # Else clause
# Guarded evaluation
(when (positive? -5)
(display "hi"))
(unless (positive? 5)
(display "hi"))
# Dispatch
(case (+ 7 5)
[(1 2 3) 'small]
[(10 11 12) 'big])
# Sequencing
(define x 0)
(begin (set! x 5)
(+ x 1))
# See also: begin0, begin-for-syntax
# Iterations and Comprehensions
# for, for/and, for/or, for/vector, for/hash, for/hasheq ...
# Modules and imports
(module id module-path form ...)
(require ...)
(provide ...)
As you can see, although the language consistently uses parentheses, it has similar syntax structure to other languages: assignments, definitions, functions, switch/case, etc. Some of the syntax forms above have multiple variations, as well.
See: https://docs.racket-lang.org/reference/syntax.html