Thanks. this seems to work for multiple columns as well.
I though that a view had to be a SubDataFrame.
Since select() returns a DataFrame I thought it was creating a new object.
Though I notice that changing the original does change the select() object
df = DataFrame(A=1:2,B=3:4)
x = select( df, :A => :a, :B => :b, copycols=false)
df[1,:A] = 99
x
julia> x
2×2 DataFrame
Row │ a b
│ Int64 Int64
─────┼──────────────
1 │ 99 3
2 │ 2 4