The motive for the shooting at Campbell County High School, 30 miles from Knoxville, was not immediately known, Sheriff Ron McClellan told WVLT-TV.
"We don't know yet. I have the individual at the hospital," McClellan said. "These men are all fine Christian men, and I am at a loss for words."
Several students identified the shooter as a 14-year-old freshman.
Assistant Principal Ken Bruce was killed, according to state Education Department spokeswoman Rachel Woods. Principal Gary Seale, who was shot while trying to take the student into custody, was reported in serious condition, and Assistant Principal Jim Pierce in critical condition.
Parents rushed to the 1,400-student school to take their children home.
The school was locked down after the shooting, and students were evacuated and loaded onto buses, reports CBS Radio News. "They are searching each student as they are getting on the buses," said Roger Wallace, a driver at a pizza restaurant nearby.
Courtney Ward, a 17-year-old student at the school, said Seale "got on the intercom and told us we were in lockdown. He was out of breath, and you could tell something was wrong."
"It's scary," Ward said. "You hear about it happening, but you never really imagine it happening at your school."
Tennessee Gov. Phil Bredesen said he has asked state education officials to provide Campbell County school officials any help they need.