編程題包括sql

一赠潦、單例模式
餓漢模式
public class Singleton {
    private Singleton(){};

    private static Singleton Instance = new Singleton();

    public static Singleton getInstance(){
        return Instance;
}
懶漢模式
public class Singleton {
    private Singleton(){}
    private static class LazyHodler{
        private static Singleton Instance = new Singleton();
    }
    public static Singleton getInstance(){
        return LazyHodler.Instance;
    }
}
二、數(shù)組操作
/**
* 1.獲取數(shù)組中的最大值/最小值
*/
public static int getMax(int[] arr) {
        int max = arr[0];
        for (int x = 1; x < arr.length; x++) {
            if (arr[x] > max)
                max = arr[x];
        }
        return max;
}
/**
 * 2.給數(shù)組排序草冈,選擇排序和冒泡排序
 */
public static void selectSort(int[] arr) {
    for (int x = 0; x < arr.length - 1; x++) {
        for (int y = x + 1; y < arr.length; y++) {
            if (arr[x] > arr[y]) {
                swap(arr, x, y);
            }
        }
    }
}
public static void swap(int[] arr, int a, int b) {
    int temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}
public static void bubbleSort(int[] arr) {
    for (int x = 0; x < arr.length - 1; x++) {
        for (int y = 0; y < arr.length - x - 1; y++)//-x:讓每一次比較的元素減少祭椰,-1:避免角標(biāo)越界。
        {
            if (arr[y] < arr[y + 1]) {
                swap(arr, y, y + 1);
            }
        }
    }
}

/**
 * 3.對(duì)給定的數(shù)組進(jìn)行反轉(zhuǎn)
 */
public static void reverseArray(int[] arr) {
    for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
        swap(arr, start, end);
    }
}
/**
 * 4.數(shù)組的查找操作疲陕,
 */
public static int getIndex(int[] arr, int key) {
    for (int x = 0; x < arr.length; x++) {
        if (arr[x] == key)
            return x;
    }
    return -1;
}
//二分法查找方淤,先排序
public static int halfSearch(int[] arr, int key) {
    int min, max, mid;
    min = 0;
    max = arr.length - 1;
    mid = (max + min) / 2;

    while (arr[mid] != key) {
        if (key > arr[mid])
            min = mid + 1;
        else if (key < arr[mid])
            max = mid - 1;

        if (min > max)
            return -1;
        mid = (max + min) / 2;
    }
    return mid;
}
//保留小數(shù)點(diǎn),在四舍五入后
public class TestMath {
    public static void main(String[] args) {
        /*
        Random r = new Random();
        for(int x=0; x<10; x++)
        {
            //int d = (int)(Math.random()*10+1);
            int d = r.nextInt(10)+1;
            sop(d);
        }
        */
        saveTwo(12.3456, 2, true);//12.34
    }

    public static void saveTwo(double d, int scale, boolean isRound) {

        double base = Math.pow(10, scale);
        double num = isRound ? Math.round(d * base) / base : ((int) (d * base)) / base;
        sop("num=" + num);
        /*
        double d1 = d*100;
        sop("d1="+d1);
        d1 = d1+0.5;
        double d2 = (int)d1;
        sop("d2="+d2);
        double d3 = d2/100;
        sop("d3="+d3);
        */
    }
    public static void show() {
        double d = Math.ceil(16.34);//ceil返回大于指定數(shù)據(jù)的最小整數(shù)蹄殃。
        double d1 = Math.floor(12.34);//floor返回小于指定數(shù)據(jù)的最大整數(shù)携茂。
        long l = Math.round(12.54);//四舍五入
        sop("d=" + d);
        sop("d1=" + d1);
        sop("l=" + l);
        double d2 = Math.pow(2, 3);
        sop("d2=" + d2);
    }
    public static void sop(Object obj) {
        System.out.println(obj);
    }
}
三、字符串操作
/*基本數(shù)據(jù)類型對(duì)象包裝類诅岩。
byte    Byte
short   short
int     Integer
long    Long
boolean Boolean
float   Float
double  Double
char    Character
基本數(shù)據(jù)類型轉(zhuǎn)成字符串讳苦。
    基本數(shù)據(jù)類型+""
    包裝類.toString(基本數(shù)據(jù)類型值);
    如: Integer.toString(34);//將34整數(shù)變成"34";
字符串轉(zhuǎn)成基本數(shù)據(jù)類型。
    xxx a = Xxx.parseXxx(String);
    int a = Integer.parseInt("123");
    double b = Double.parseDouble("12.23");
    boolean b = Boolean.parseBoolean("true");
    Integer i = new Integer("123");
    int num = i.intValue();
/**
 * 將字符串變成數(shù)組
 * 對(duì)數(shù)組反轉(zhuǎn),將數(shù)組變成字符串
 */
public static String reverseString(String s, int start, int end) {
    //字符串變數(shù)組吩谦。
    char[] chs = s.toCharArray();
    //反轉(zhuǎn)數(shù)組鸳谜。
    reverse(chs, start, end);
    //將數(shù)組變成字符串。
    return new String(chs);
}

private static void reverse(char[] arr, int x, int y) {
    for (int start = x, end = y - 1; start < end; start++, end--) {
        swap(arr, start, end);
    }
}

private static void swap(char[] arr, int x, int y) {
    char temp = arr[x];
    arr[x] = arr[y];
    arr[y] = temp;
}
/**
 * 去除字符串兩端空格
 */
public static String myTrim(String str) {
    int start = 0, end = str.length() - 1;
    while (start <= end && str.charAt(start) == ' ')
        start++;
    while (start <= end && str.charAt(end) == ' ')
        end--;
    return str.substring(start, end + 1);
}
/**
 * 子串在整串中出現(xiàn)的次數(shù)式廷。
 */
private static int getCount(String str, String ref) {
    int count = 0;
    while (str.contains(ref)) {
        str = str.substring(str.indexOf(ref) + ref.length());
        count++;
    }
    return count;
}
/**
 * 對(duì)字符串中字符進(jìn)行自然順序排序咐扭。
 * 思路:字符串變成字符數(shù)組,對(duì)數(shù)組排序,選擇滑废,冒泡蝗肪,Arrays.sort(),將排序后的數(shù)組變成字符串。
 */
/**
 * 要求對(duì)字符串中的數(shù)值進(jìn)行排序蠕趁。生成一個(gè)數(shù)值從小到大新字符串薛闪。
 * 思路:
 * 1,將字符串切割俺陋。變成字符串?dāng)?shù)組豁延。
 * 2,將字符串?dāng)?shù)組轉(zhuǎn)成int數(shù)組腊状。
 * 3诱咏,int數(shù)組排序。
 * 4寿酌,將int數(shù)組變成字符串胰苏。
 */
public static String numberStringSort(String str) {
    String[] arr = splitString(str);
    int[] nums = toIntArray(arr);
    Arrays.sort(nums);
    return intArraytoString(nums);
}
private static String[] splitString(String str) {
    return str.split(" ");
}
private static int[] toIntArray(String[] arr) {
    int[] nums = new int[arr.length];

    for (int x = 0; x < arr.length; x++) {
        nums[x] = Integer.parseInt(arr[x]);
    }
    return nums;
}
private static String intArraytoString(int[] arr) {
    StringBuilder sb = new StringBuilder();

    for (int x = 0; x < arr.length; x++) {
        if (x != arr.length - 1)
            sb.append(arr[x] + " ");
        else
            sb.append(arr[x]);
    }
    return sb.toString();
}
/**
 * 獲取兩個(gè)字符串中最大相同子串。第一個(gè)動(dòng)作:將短的那個(gè)串進(jìn)行長(zhǎng)度一次遞減的子串打印
 * "abcwerthelloyuiodef"  "cvhellobnm"
 * 思路:將短的那個(gè)子串按照長(zhǎng)度遞減的方式獲取到,將每獲取到的子串去長(zhǎng)串中判斷是否包含,如果包含,已經(jīng)找到硕并!
 */
public static String getMaxSubString(String s1, String s2) {

    String max = "", min = "";

    max = (s1.length() > s2.length()) ? s1 : s2;

    min = (max == s1) ? s2 : s1;

    for (int x = 0; x < min.length(); x++) {
        for (int y = 0, z = min.length() - x; z != min.length() + 1; y++, z++) {
            String temp = min.substring(y, z);
            //sop(temp);
            if (max.contains(temp))//if(s1.indexOf(temp)!=-1)
                return temp;
        }
    }
    return "";
}
四法焰、集合操作
/*Collection定義了集合框架的共性功能。
        1倔毙,添加
        add(e);
        addAll(collection);

        2埃仪,刪除
        remove(e);
        removeAll(collection);
        clear();

        3,判斷陕赃。
        contains(e);
        isEmpty();

        4卵蛉,獲取
        iterator();
        size();

        5,獲取交集么库。
        retainAll();

        6傻丝,集合變數(shù)組。
        toArray();

        1诉儒,add方法的參數(shù)類型是Object葡缰。以便于接收任意類型對(duì)象。

        2忱反,集合中存儲(chǔ)的都是對(duì)象的引用(地址)


        什么是迭代器呢泛释?
        其實(shí)就是集合的取出元素的方式。
        如同抓娃娃游戲機(jī)中的夾子温算。

        迭代器是取出方式怜校,會(huì)直接訪問(wèn)集合中的元素。
        所以將迭代器通過(guò)內(nèi)部類的形式來(lái)進(jìn)行描述注竿。
        通過(guò)容器的iterator()方法獲取該內(nèi)部類的對(duì)象茄茁。
*/
  • List
/**
 * Created by joshul on 2017/3/6.
 * ArrayList 數(shù)組形式訪問(wèn)List鏈?zhǔn)郊蠑?shù)據(jù),元素可重復(fù)蔓搞,訪問(wèn)元素較快  數(shù)組
 * LinkedList 鏈表方式的List鏈?zhǔn)郊弦榷。乜芍貜?fù),元素的插入刪除較快 雙向鏈表
 */
public class TestList {
    public static void main(String[] args) {

    }

    /**
     * ArrayList 數(shù)組形式訪問(wèn)List鏈?zhǔn)郊蠑?shù)據(jù)喂分,元素可重復(fù),訪問(wèn)元素較快  數(shù)組
     * @param al
     * @return
     */
    public static ArrayList singleElement(ArrayList al) {
        //定義一個(gè)臨時(shí)容器机蔗。
        ArrayList newAl = new ArrayList();
        Iterator it = al.iterator();
        while(it.hasNext())
        {
            Object obj = it.next();
            if(!newAl.contains(obj))
                newAl.add(obj);
        }
        return newAl;
    }
}
  • Set
/**
 * Created by joshul on 2017/3/6.
 * Set的核心概念就是集合內(nèi)所有元素不重復(fù)蒲祈。在Set這個(gè)子接口中沒(méi)有在Collection特別實(shí)現(xiàn)什么額外的方法,應(yīng)該只是定義了一個(gè)Set概念萝嘁。
 * 下面我們來(lái)看Set的幾個(gè)常用的實(shí)現(xiàn)HashSet梆掸、LinkedHashSet、TreeSet
 * <p>
 * HashSet  無(wú)序的牙言、無(wú)重復(fù)的數(shù)據(jù)集合    基于HashMap
 * LinkedSet    維護(hù)次序的HashSet    基于LinkedHashMap
 * TreeSet  保持元素大小次序的集合酸钦,元素需要實(shí)現(xiàn)Comparable接口  基于TreeMap
 */
public class TestSet {

    /**
     * "90 -7 0 18 2 45 4",將字符串中的數(shù)值進(jìn)行排序。使用TreeSet完成咱枉。
     * 將字符串切割,可以將這些對(duì)象存入TreeSet集合卑硫。因?yàn)門reeSet自身具備排序功能徒恋。
     */
    public static void main(String[] args) {
        String str = "90 -7 0 18 2 45 4";
        String[] arr = str.split(" ");
        TreeSet ts = new TreeSet();
        for (int x = 0; x < arr.length; x++) {
            //ts.add(new Integer(arr[x]));
            ts.add(Integer.parseInt(arr[x]));//
        }
        System.out.println(ts);
    }
}
  • Mep
public class TestMap {
    public static void main(String[] args) {
        String s= charCount("ak+abAf1c,dCkaAbc-defa");
        System.out.println(s);
    }

    /**
     * "sdfgzxcvasdfxcvdf"獲取該字符串中的字母出現(xiàn)的次數(shù)。
     * 希望打印結(jié)果:a(1)c(2).....
     * 思路:
     * 1欢伏,將字符串轉(zhuǎn)換成字符數(shù)組入挣。因?yàn)橐獙?duì)每一個(gè)字母進(jìn)行操作。
     * 2硝拧,定義一個(gè)map集合径筏,因?yàn)榇蛴〗Y(jié)果的字母有順序,所以使用treemap集合
     * 3障陶,遍歷字符數(shù)組滋恬。
     * 將每一個(gè)字母作為鍵去查map集合。
     * 如果返回null抱究,將該字母和1存入到map集合中夷恍。
     * 如果返回不是null,說(shuō)明該字母在map集合已經(jīng)存在并有對(duì)應(yīng)次數(shù)媳维。那么就獲取該次數(shù)并進(jìn)行自增酿雪。,然后將該字母和自增后的次數(shù)存入到map集合中侄刽。覆蓋調(diào)用原理鍵所對(duì)應(yīng)的值指黎。
     * 4,將map集合中的數(shù)據(jù)變成指定的字符串形式返回州丹。
     */
    public static String charCount(String str) {
        char[] chs = str.toCharArray();

        TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
        int count = 0;
        for (int x = 0; x < chs.length; x++) {
            if (!(chs[x] >= 'a' && chs[x] <= 'z' || chs[x] >= 'A' && chs[x] <= 'Z'))
                continue;
            Integer value = tm.get(chs[x]);
            if (value != null)
                count = value;
            count++;
            tm.put(chs[x], count);//直接往集合中存儲(chǔ)字符和數(shù)字醋安,為什么可以,因?yàn)樽詣?dòng)裝箱墓毒。
            count = 0;
        }
        //System.out.println(tm);
        StringBuilder sb = new StringBuilder();
        Set<Map.Entry<Character, Integer>> entrySet = tm.entrySet();
        Iterator<Map.Entry<Character, Integer>> it = entrySet.iterator();

        while (it.hasNext()) {
            Map.Entry<Character, Integer> me = it.next();
            Character ch = me.getKey();
            Integer value = me.getValue();
            sb.append(ch + "(" + value + ")");
        }
        return sb.toString();
    }
}
四吓揪、IO操作
/**
 * Created by joshul on 2017/3/1.
 * IO流用來(lái)處理設(shè)備之間的數(shù)據(jù)傳輸
 * Java對(duì)數(shù)據(jù)的操作是通過(guò)流的方式
 * Java用于操作流的對(duì)象都在IO包中
 * 流按操作數(shù)據(jù)分為兩種:字節(jié)流與字符流
 * 流按流向分為:輸入流,輸出流所计。
 * 字節(jié)流的抽象基類: InputStream 柠辞,OutputStream。
 * 字符流的抽象基類: Reader 主胧, Writer叭首。
 * InputStream的子類FileInputStream。
 * Reader的子類FileReader踪栋。
 * IO程序的書寫:
 * 導(dǎo)入IO包中的類
 * 進(jìn)行IO異常處理
 * 在finally中對(duì)流進(jìn)行關(guān)閉
 * <p>
 * 字符流的緩沖區(qū)
 * 緩沖區(qū)的出現(xiàn)提高了對(duì)數(shù)據(jù)的讀寫效率焙格。
 * 對(duì)應(yīng)類: BufferedWriter, BufferedReader
 * 緩沖區(qū)要結(jié)合流才可以使用,在流的基礎(chǔ)上對(duì)流的功能進(jìn)行了增強(qiáng)。
 * <p>
 * 裝飾設(shè)計(jì)模式:對(duì)原有類進(jìn)行了功能的改變夷都,增強(qiáng)眷唉。
 */
public class Io {
    public static void main(String[] args) {
        getTime();
    }

    /**
     * 獲取現(xiàn)在時(shí)間
     */
    public static void getTime() {
        Date d = new Date();
        System.out.println(d);//打印的時(shí)間看不懂,希望有些格式。
        //將模式封裝到SimpleDateformat對(duì)象中冬阳。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");
        //調(diào)用format方法讓模式格式化指定Date對(duì)象蛤虐。
        String time = sdf.format(d);
        System.out.println("time=" + time);
        long l = System.currentTimeMillis();
        Date d1 = new Date(l);
        System.out.println("d1:" + d1);
    }

    /**
     * 讀取一個(gè).java文件,并打印在控制臺(tái)上摩泪。
     */
    public static void readJava() {
        FileReader fr = null;
        try {
            fr = new FileReader("DateDemo.java");
            char[] buf = new char[1024];
            int num = 0;
            while ((num = fr.read(buf)) != -1) {
                System.out.print(new String(buf, 0, num));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 演示對(duì)已有文件的數(shù)據(jù)續(xù)寫笆焰。
     */
    public static void readFile() {
        FileWriter fw = null;
        try {
            //傳遞一個(gè)true參數(shù),代表不覆蓋已有的文件见坑。并在已有文件的末尾處進(jìn)行數(shù)據(jù)續(xù)寫嚷掠。
            fw = new FileWriter("demo.txt", true);
            fw.write("nihao\r\nxiexie");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * FileWriter
     */
    public static void fileWriter() {
        FileWriter fw = null;
        try {
            //創(chuàng)建一個(gè)FileWriter對(duì)象。該對(duì)象一被初始化就必須要明確被操作的文件荞驴。
            //而且該文件會(huì)被創(chuàng)建到指定目錄下不皆。如果該目錄下已有同名文件,將被覆蓋熊楼。
            //其實(shí)該步就是在明確數(shù)據(jù)要存放的目的地霹娄。
            fw = new FileWriter("demo.txt");
            //調(diào)用write方法,將字符串寫入到流中鲫骗。
            fw.write("abcde");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //刷新流對(duì)象中的緩沖中的數(shù)據(jù)犬耻。
                //將數(shù)據(jù)刷到目的地中。
                //fw.flush();
                //關(guān)閉流資源执泰,但是關(guān)閉之前會(huì)刷新一次內(nèi)部的緩沖中的數(shù)據(jù)枕磁。
                //將數(shù)據(jù)刷到目的地中。
                //和flush區(qū)別:flush刷新后术吝,流可以繼續(xù)使用计济,close刷新后,會(huì)將流關(guān)閉排苍。
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        /*//傳遞一個(gè)true參數(shù)沦寂,代表不覆蓋已有的文件。并在已有文件的末尾處進(jìn)行數(shù)據(jù)續(xù)寫淘衙。
        FileWriter fw = new FileWriter("demo.txt",true);

        fw.write("nihao\r\nxiexie");

        fw.close();*/
    }
}
**
 * Created by joshul on 2017/3/6.
 * 字符流:FileReader FileWriter传藏。/BufferedReader BufferedWriter
 * 字節(jié)流:InputStream  OutputStream
 * 需求,想要操作圖片數(shù)據(jù)幔翰。這時(shí)就要用到字節(jié)流漩氨。
 */
public class TestBuffer {
    public static void main(String[] args){

    }
    public static void BufferedReader() {
        FileReader fr = null;
        BufferedReader bufr = null;
        try {
            //創(chuàng)建一個(gè)讀取流對(duì)象和文件相關(guān)聯(lián)。
            fr = new FileReader("buf.txt");
            //為了提高效率遗增。加入緩沖技術(shù)。將字符讀取流對(duì)象作為參數(shù)傳遞給緩沖對(duì)象的構(gòu)造函數(shù)款青。
            bufr = new BufferedReader(fr);
            String line = null;
            while ((line = bufr.readLine()) != null) {
                System.out.print(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bufr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    /*public static void BufferedWriter() {
        //創(chuàng)建一個(gè)字符寫入流對(duì)象做修。
        FileWriter fw = new FileWriter("buf.txt");
        //為了提高字符寫入流效率。加入了緩沖技術(shù)。
        //只要將需要被提高效率的流對(duì)象作為參數(shù)傳遞給緩沖區(qū)的構(gòu)造函數(shù)即可饰及。
        BufferedWriter bufw = new BufferedWriter(fw);
        for(int x=1; x<5; x++)
        {
            bufw.write("abcd"+x);
            bufw.newLine();
            bufw.flush();
        }
        //記住蔗坯,只要用到緩沖區(qū),就要記得刷新燎含。
        //bufw.flush();
        //其實(shí)關(guān)閉緩沖區(qū)宾濒,就是在關(guān)閉緩沖區(qū)中的流對(duì)象。
        bufw.close();
    }*/
}
四屏箍、SQL題
1.寫一個(gè)sql將表TEST_A(ID,NAME,CODE)中重復(fù)次數(shù)大于2的NAME值打印出來(lái)

select NAME from TEST_A
where NAME in(select NAME from TEST_A group by NAME having count(NAME)>2);

2.用一條SQL 語(yǔ)句 查詢出每門課都大于80 分的學(xué)生姓名student_tb

name kecheng fenshu
張三 語(yǔ)文 81
張三 數(shù)學(xué) 75

select name from student_tb where fenshu in(select fenshu from student_tb group by having min(fenshu)>80);

3.學(xué)生表 如下:student_tb

自動(dòng)編號(hào) 學(xué)號(hào) 姓名 課程編號(hào) 課程名稱 分?jǐn)?shù)
1 2005001 張三 0001 數(shù)學(xué) 69
2 2005002 李四 0001 數(shù)學(xué) 89
3 2005001 張三 0001 數(shù)學(xué) 69
刪除除了自動(dòng)編號(hào)不同, 其他都相同的學(xué)生冗余信息

delete from student_tb where 自動(dòng)編號(hào) not in(select min(自動(dòng)編號(hào)) from student_tb group by 學(xué)號(hào),姓名,課程編號(hào),課程名稱,分?jǐn)?shù))

4.一個(gè)叫 team 的表,里面只有一個(gè)字段name, 一共有4 條紀(jì)錄,分別是a,b,c,d, 對(duì)應(yīng)四個(gè)球隊(duì),現(xiàn)在四個(gè)球隊(duì)進(jìn)行比賽,用一條sql 語(yǔ)句顯示所有可能的比賽組合.

select a.name,b.name from student2 a, student2 b
where a.name<b.name;

5.請(qǐng)用SQL 語(yǔ)句實(shí)現(xiàn):從TestDB 數(shù)據(jù)表中查詢出所有月份的發(fā)生額都比101 科目相應(yīng)月份的發(fā)生額高的科目.請(qǐng)注意:TestDB 中有很多科目,都有1 -12 月份的發(fā)生額.

AccID :科目代碼,Occmonth :發(fā)生額月份,DebitOccur :發(fā)生額.
數(shù)據(jù)庫(kù)名:JcyAudit,數(shù)據(jù)集:Select * from TestDB

select a.* from TestDB as a,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID= '101' group by Occmonth) b
where a.Occmonth = b.Occmonth and a.DebitOccur > b.Debit101ccur

6. 面試題:怎么把這樣一個(gè)表兒

year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991 4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992 4 2.4
查成這樣一個(gè)結(jié)果
year m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4

select year,(select amount from table_aa m where month = 1 and table_aa.year = m.year) as m1,() as m2,() as m3 from table_aa
group by year;

7. 說(shuō)明:復(fù)制表( 只復(fù)制結(jié)構(gòu), 源表名:a 新表名:b)

select * into b from a where 1<>1 (where1=1,拷貝表結(jié)構(gòu)和數(shù)據(jù)內(nèi)容)

7. 說(shuō)明:拷貝表( 拷貝數(shù)據(jù), 源表名:a 目標(biāo)表名:b)

insert into b(a, b, c) select d,e,f from a;

8. 說(shuō)明:顯示文章.提交人和最后回復(fù)時(shí)間

select a.title a.name b.adddate from table a ,(select max(adddate) adddate from table where a.title = table.title) b

9. 說(shuō)明:外連接查詢( 表名1 :a 表名2 :b)

select a.a,a.b,a.c,b.c,b.d,b.f from a left outer join b on a.a = b.c

10. 說(shuō)明:日程安排提前五分鐘提醒

select * from 日程安排 where datediff('minute',f 開始時(shí)間,getdate())>5

11. 說(shuō)明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒(méi)有的信息

Delete from info where not exists (select * from infobz where info.infid=infobz.infid )

12. 有兩個(gè)表A 和B ,均有key 和value 兩個(gè)字段,如果B 的key 在A 中也有,就把B 的value 換為A 中對(duì)應(yīng)的value

這道題的SQL 語(yǔ)句怎么寫?
update b set b.value=(select a.value from a where a.key=b.key) where b.id in(select b.id from b,a where b.key=a.key);

SQL面試題
1 觸發(fā)器的作用?

答:觸發(fā)器是一中特殊的存儲(chǔ)過(guò)程绘梦,主要是通過(guò)事件來(lái)觸發(fā)而被執(zhí)行的。它可以強(qiáng)化約束赴魁,來(lái)維護(hù)數(shù)據(jù)的完整性和一致性卸奉,可以跟蹤數(shù)據(jù)庫(kù)內(nèi)的操作從而不允許未經(jīng)許可的更新和變化。
可以聯(lián)級(jí)運(yùn)算毛雇。如固歪,某表上的觸發(fā)器上包含對(duì)另一個(gè)表的數(shù)據(jù)操作闸溃,而該操作又會(huì)導(dǎo)致該表觸發(fā)器被觸發(fā)。

2 什么是存儲(chǔ)過(guò)程?用什么來(lái)調(diào)用?

答:存儲(chǔ)過(guò)程是一個(gè)預(yù)編譯的 SQL 語(yǔ)句疹鳄,優(yōu)點(diǎn)是允許模塊化的設(shè)計(jì),就是說(shuō)只需創(chuàng)建一次芦岂,以后在該程序中就可以調(diào)用多次瘪弓。如果某次操作需要執(zhí)行多次 SQL ,
使用存儲(chǔ)過(guò)程比單純 SQL 語(yǔ)句執(zhí)行要快盔腔「懿纾可以用一個(gè)命令對(duì)象來(lái)調(diào)用存儲(chǔ)過(guò)程。

3 索引的作用?和它的優(yōu)點(diǎn)缺點(diǎn)是什么?

答:索引就一種特殊的查詢表弛随,數(shù)據(jù)庫(kù)的搜索引擎可以利用它加速對(duì)數(shù)據(jù)的檢索瓢喉。它很類似與現(xiàn)實(shí)生活中書的目錄,不需要查詢整本書內(nèi)容就可以找到想要的數(shù)據(jù)舀透。索引可以是唯一的栓票,
創(chuàng)建索引允許指定單個(gè)列或者是多個(gè)列。缺點(diǎn)是它減慢了數(shù)據(jù)錄入的速度愕够,同時(shí)也增加了數(shù)據(jù)庫(kù)的尺寸大小走贪。

3 什么是內(nèi)存泄漏?

答:一般我們所說(shuō)的內(nèi)存泄漏指的是堆內(nèi)存的泄漏。堆內(nèi)存是程序從堆中為其分配的惑芭,大小任意的坠狡,使用完后要顯示釋放內(nèi)存。當(dāng)應(yīng)用程序用關(guān)鍵字 new 等創(chuàng)建對(duì)象時(shí)遂跟,就從堆中為它分配一塊內(nèi)存逃沿,
使用完后程序調(diào)用 free 或者 delete 釋放該內(nèi)存婴渡,否則就說(shuō)該內(nèi)存就不能被使用,我們就說(shuō)該內(nèi)存被泄漏了凯亮。

4 維護(hù)數(shù)據(jù)庫(kù)的完整性和一致性,你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么?

答:我是這樣做的边臼,盡可能使用約束,如 check, 主鍵假消,外鍵柠并,非空字段等來(lái)約束,這樣做效率最高富拗,也最方便臼予。其次是使用觸發(fā)器,這種方法可以保證媒峡,
無(wú)論什么業(yè)務(wù)系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)都可以保證數(shù)據(jù)的完整新和一致性瘟栖。最后考慮的是自寫業(yè)務(wù)邏輯,但這樣做麻煩谅阿,編程復(fù)雜半哟,效率低下。

5 什么是事務(wù)?什么是鎖?

答:事務(wù)就是被綁定在一起作為一個(gè)邏輯工作單元的 SQL 語(yǔ)句分組签餐,如果任何一個(gè)語(yǔ)句操作失敗那么整個(gè)操作就被失敗寓涨,以后操作就會(huì)回滾到操作前狀態(tài),或者是上有個(gè)節(jié)點(diǎn)氯檐。
為了確保要么執(zhí)行戒良,要么不執(zhí)行,就可以使用事務(wù)冠摄。要將有組語(yǔ)句作為事務(wù)考慮糯崎,就需要通過(guò) ACID 測(cè)試,即原子性河泳,一致性沃呢,隔離性和持久性。
鎖:在所以的 DBMS 中拆挥,鎖是實(shí)現(xiàn)事務(wù)的關(guān)鍵薄霜,鎖可以保證事務(wù)的完整性和并發(fā)性。與現(xiàn)實(shí)生活中鎖一樣纸兔,它可以使某些數(shù)據(jù)的擁有者惰瓜,在某段時(shí)間內(nèi)不能使用某些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。當(dāng)然鎖還分級(jí)別的汉矿。

6 什么叫視圖?游標(biāo)是什么?

答:視圖是一種虛擬的表崎坊,具有和物理表相同的功能≈弈矗可以對(duì)視圖進(jìn)行增流强,改痹届,查呻待,操作打月,試圖通常是有一個(gè)表或者多個(gè)表的行或列的子集。對(duì)視圖的修改不影響基本表蚕捉。它使得我們獲取數(shù)據(jù)更容易奏篙,相比多表查詢。
游標(biāo):是對(duì)查詢出來(lái)的結(jié)果集作為一個(gè)單元來(lái)有效的處理迫淹。游標(biāo)可以定在該單元中的特定行秘通,從結(jié)果集的當(dāng)前行檢索一行或多行×舶荆可以對(duì)結(jié)果集當(dāng)前行做修改肺稀。一般不使用游標(biāo),但是需要逐條處理數(shù)據(jù)的時(shí)候应民,游標(biāo)顯得十分重要话原。

題目補(bǔ)充
1.寫一個(gè)sql將表TEST_A(ID,NAME,CODE)中重復(fù)次數(shù)大于2的NAME值打印出來(lái)(15)
select NAME from TEST_A
where NAME in(select NAME from TEST_A group by NAME having count(NAME)>2);

2.寫一段代碼獲取結(jié)構(gòu) List<Map<String,String>>中各個(gè)Map,并通過(guò)System.out.println()打印出來(lái)(15)
/**
 * 將指定的 結(jié)構(gòu)為 List<Map<String,String>>的參數(shù) 通過(guò)System.out.println()打印出來(lái)
 * 格式:"鍵名:鍵值"
 * @param List<Map<String,String>>
 *
 */
public void printOut(List<Map<String,String>>){

    List<Map<String,Object>> list= List<Map<String,String>>
    for (int i=0;i<list.size(),i++)
    {
    Map map=(Map)list.get(i);
    Iterator iterator = map.keySet().iterator();
    while (iterator.hasNext())
    {
    String key = (String) iterator.next();
    Object object = map.get(key);
    }
    }
}

3.有類似這樣的一串字符"abcddeffx.asre-321!assra..",請(qǐng)實(shí)現(xiàn)以下方法將字符串各個(gè)字符的出現(xiàn)的次數(shù)統(tǒng)計(jì)出來(lái)
/**
 * 將指定的 結(jié)構(gòu)為 List<Map<String,String>>的參數(shù) 通過(guò)System.out.println()打印出來(lái)
 * 格式:"鍵名:鍵值"
 * @param List<Map<String,String>>
 * @return Map<字符,出現(xiàn)的次數(shù)>
 */
 public Map<Character,Integer> staticCharcnt(String str){

 }

4.在一個(gè)文本文件(文件大小不超過(guò)2k)中存放了很多以空格分隔的英語(yǔ)單詞诲锹,請(qǐng)寫一段偽代碼或用文字描述來(lái)實(shí)現(xiàn)繁仁,已得到?jīng)]有重復(fù)的、且按字典順序排序的所有單詞(20分)

首先實(shí)現(xiàn)做一個(gè)SortedMap,這個(gè)Map的Comparator是根據(jù)字母順序排列的一個(gè)規(guī)則.



5.請(qǐng)用javascript語(yǔ)言解析如下json對(duì)象归园,取出對(duì)象中所有數(shù)據(jù)或?qū)⑵滹@示在頁(yè)面上黄虱。(15)
var user = {
    "username" : "andy",
    "age" : 25,
    "info" : {"tell":"123","cellphone":"13766"}
    "address" : [
                    {"city":"北京建國(guó)門大街"}
                    {"city":"天津海泰信息廣場(chǎng)"}
                ]
}

<table border="1">
    <tr>
        <td>user.username</td>
        <td>user.age</td>
        <td>user.info.tell</td>
        <td>(user.address[0].city</td>
        <td>user.address[1].city</td>
    </tr>
</table>


6.在項(xiàng)目中一導(dǎo)入jquery1.7庫(kù),請(qǐng)實(shí)現(xiàn)用jquery查找下列表格的第二行第三列的值庸诱。(15)

<table id= "tab">
    <tbody>
        <tr>
            <td>第一行第一列</td>
            <td>第一行第二列</td>
            <td>第一行第三列</td>
            <td>第一行第四列</td>
        </tr>
        <tr>
            <td>第二行第一列</td>
            <td>第二行第二列</td>
            <td>第二行第三列</td>
            <td>第二行第四列</td>
        </tr>
    </tbody>
</table>
$('#tab tr').eq(1).find('td').eq(2)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捻浦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子桥爽,更是在濱河造成了極大的恐慌朱灿,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聚谁,死亡現(xiàn)場(chǎng)離奇詭異母剥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)形导,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門环疼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人朵耕,你說(shuō)我怎么就攤上這事炫隶。” “怎么了阎曹?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵伪阶,是天一觀的道長(zhǎng)煞檩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)栅贴,這世上最難降的妖魔是什么斟湃? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮檐薯,結(jié)果婚禮上凝赛,老公的妹妹穿的比我還像新娘。我一直安慰自己坛缕,他們只是感情好墓猎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赚楚,像睡著了一般毙沾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宠页,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天左胞,我揣著相機(jī)與錄音,去河邊找鬼勇皇。 笑死罩句,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的敛摘。 我是一名探鬼主播门烂,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兄淫!你這毒婦竟也來(lái)了屯远?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捕虽,失蹤者是張志新(化名)和其女友劉穎慨丐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泄私,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡房揭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晌端。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捅暴。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖咧纠,靈堂內(nèi)的尸體忽然破棺而出蓬痒,到底是詐尸還是另有隱情,我是刑警寧澤漆羔,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布梧奢,位于F島的核電站狱掂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏亲轨。R本人自食惡果不足惜趋惨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓶埋。 院中可真熱鬧希柿,春花似錦、人聲如沸养筒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晕粪。三九已至,卻和暖如春渐裸,著一層夾襖步出監(jiān)牢的瞬間巫湘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工昏鹃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尚氛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓洞渤,卻偏偏與公主長(zhǎng)得像阅嘶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子载迄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容