How to rotate my camera?

I copy the FPS scripts in standard asset example and it’s truely work,but I can’t understand how it work.
I think this script is too complex,but when I want to make a simple version,it’s never work.it’s my code for camera rotate.it just can shake my camera.

    using UnityEngine;
    using System.Collections;
    public class MyFPML : MonoBehaviour {
    
        private float x;
        private float y;
        private Vector3 targetRotation;
        private Vector3 rotateValue;
        private Quaternion rotation;
    
        void Start ()
        {
            rotation = transform.rotation;
        }
    	
        void Update ()
         {
            x = Input.GetAxis("Mouse X");
            y = Input.GetAxis("Mouse Y");
            Debug.Log(x + ":" + y);
            rotateValue = new Vector3(x, y, 0);
            targetRotation = transform.position + rotateValue;
            rotation = Quaternion.Euler(x, y, 0);
            transform.rotation = rotation;
            }
    }

Tested and working:

using UnityEngine;
using System.Collections;

public class CamRotation : MonoBehaviour 
{
    private float x;
    private float y;
    private Vector3 rotateValue;

    void Update()
    {
        y = Input.GetAxis("Mouse X");
        x = Input.GetAxis("Mouse Y");
        Debug.Log(x + ":" + y);
        rotateValue = new Vector3(x, y * -1, 0);
        transform.eulerAngles = transform.eulerAngles - rotateValue;
    }
}

using UnityEngine;
using System.Collections;
public class FPSRotate : MonoBehaviour
{
public Camera cam; //Main camera for rotate in y-axis
void Update() //Updated every frame;
{
this.LookRotation(transform, cam.transform); //Call LookRotation() to change the x-rotation of the gameobject and the y-rotation of camera
}
public void LookRotation(Transform character, Transform camera) //Change the x-rotation of the gameobject and the y-rotation of camera
{
float yRot = Input.GetAxis(“Mouse X”) * 2f; //get x and y of mouse in screen
float xRot = Input.GetAxis(“Mouse Y”) * 2f;
character.localRotation *= Quaternion.Euler(0f, yRot, 0f); //To change character’s rotation around y-axis
camera.localRotation *= Quaternion.Euler(-xRot, 0f, 0f); //To change camera’s rotation around x-axis
camera.localRotation = ClampRotationAroundXAxis(camera.localRotation); //Clamp camera’s rotation
} //The key point is use localRotation,not rotation or Quaternion.Rotate.
Quaternion ClampRotationAroundXAxis(Quaternion q) //The method of clamp rotation,I can’t understand it;use it carefully.
{
q.x /= q.w;
q.y /= q.w;
q.z /= q.w;
q.w = 1.0f;
float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan(q.x);
angleX = Mathf.Clamp(angleX, -90f, 90f);
q.x = Mathf.Tan(0.5f * Mathf.Deg2Rad * angleX);
return q;
}
}

//I use these code now,but your code also awsome.

@ Yaw-Loon I found a simplified way with less commands!!!Here it is:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CamRotation : MonoBehaviour
{
     public float camSpeed = -0.5f;

     private float x;
    private float y;
    private Vector3 rotateValue;

     void Update()
    {
         x = Input.GetAxis("Mouse X");
        y = Input.GetAxis("Mouse Y");
        Debug.Log(x + ":" + y);
        rotateValue = new Vector3(y, x * -1, 0);
        transform.eulerAngles = transform.eulerAngles - rotateValue;
        transform.eulerAngles +=  rotateValue * camSpeed;
    }
}

But be aware!!! You have to change the name of the public class, and the cam speed has to be a negative number.

Also, this way you can change the rotation speed as well!!! Cool, right???