zoukankan      html  css  js  c++  java
  • SQL常用语句

    1.简易建表语句(设置自增主键)

    CREATE TABLE IF NOT EXISTS tb_user(
        id         INTEGER auto_increment PRIMARY KEY,
        name       VARCHAR(10) NOT NULL,
        password   VARCHAR(10) NOT NULL,
        createtime datetime
    )

    2.完整建表语句(设置自增主键、外键约束、存储引擎、编码字符集等等)

    DROP TABLE IF EXISTS `tb_user`;
    CREATE TABLE `tb_user`  (
      `id` int(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT COMMENT '用户ID',
      `name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
      `password` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
      `role_id` int(11) NULL DEFAULT 1 COMMENT '角色ID',
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `fk_role`(`role_id`) USING BTREE,
      CONSTRAINT `fk_role` FOREIGN KEY (`role_id`) REFERENCES `tb_role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1000 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户表
    ' ROW_FORMAT = Dynamic;
    
    SET FOREIGN_KEY_CHECKS = 1;

    3.查看表结构

    SHOW FULL COLUMNS FROM tb_user FROM test;
    DESC tb_user;
    DESC tb_user id;

    4.修改表结构

    -- 添加新的字段,修改字段类型
    ALTER TABLE tb_user ADD email VARCHAR(50) NOT NULL,MODIFY name VARCHAR(50) NOT null;
    -- 修改字段名
    ALTER TABLE tb_user CHANGE COLUMN name username VARCHAR(30) NOT NULL;
    --删除字段
    ALTER TABLE tb_user DROP email;
    -- 修改表名
    ALTER TABLE tb_user RENAME AS table_user;
    RENAME TABLE table_user TO tb_user,table_role TO tb_role;

    5.复制表

    -- 复制表结构
    CREATE TABLE IF NOT EXISTS tb_copy LIKE tb_user;
    -- 复制结构和内容
    CREATE TABLE IF NOT EXISTS tb_content AS SELECT * FROM tb_user;

    6.删除表

    DROP TABLE IF EXISTS tb_copy,tb_content;

    7.需要注意的运算符

    select 4 div 2 ;#除法另一种写法,两参数任一为0则返回null
    select 4 mod 3 ;#求模另一种写法,两参数任一为0则返回null
    select 1 is null;#判断是否为空,不能用=null,只能有is null判断
    select 1 is not null;#判断不为空
    select '123' like('%2%') ;#模糊查询
    select '123' not like('_2_') ;
    select 3 between 1 and 5;#包含了1和5本身
    select 'h' in ('h','e','l');#是否子集
    select 'h' not in ('h','e','l');
    select 0 and 1;select 0 and null;select 1 and null;select 1 and 1;#结果为:0,0,null,1
    select 0 or 1;select 0 or null;select 1 or null;select 0 or 0;#结果为:1,null,1,0
    select not 1;select not 0;select not null;#结果为0,1null
    select 0 xor 1;select 0 xor null;select 1 xor null;select null xor null;#结果为:1,null,null,null

    存储过程

    1.if

    create PROCEDURE example_if(in x int)
    begin
        IF x=1 THEN
            select 1;
        ELSEIF x=2 THEN
            select 2;
        ELSE
            select 3;
        END IF;
    end;

    2.case

    create PROCEDURE example_case(in x int)
    begin
        CASE x
        WHEN 1 THEN
            select 1;
        WHEN 2 THEN
            select 2;
        ELSE
            select 3;
        END CASE;
    end;

    3.while

    DROP PROCEDURE IF EXISTS example_while;
    create PROCEDURE example_while(out sum int)
    begin
    DECLARE i int DEFAULT 1;
    DECLARE s int DEFAULT 0;
        WHILE i<=100 DO
        SET s = s + i;
        SET i = i + 1;
        END WHILE;
    SET sum = s;
    end;
    
    call example_while(@result);
    select @result;

    4.loop

    DROP PROCEDURE IF EXISTS example_loop;
    create PROCEDURE example_loop(out sum int)
    begin
    DECLARE i int DEFAULT 1;
    DECLARE s int DEFAULT 0;
        loop_label:loop
            SET s = s + i;
            SET i = i + 1;
            IF i>100 THEN
                LEAVE loop_label;
            END IF;
        end loop;
    SET sum = s;
    end;
    
    call example_loop(@result);
    select @result;

    5.repeat

    DROP PROCEDURE IF EXISTS example_repeat;
    create PROCEDURE example_repeat(out sum int)
    begin
    DECLARE i int DEFAULT 1;
    DECLARE s int DEFAULT 0;
        REPEAT
            SET s = s + i;
            SET i = i + 1;
        UNTIL i>100 END REPEAT;
    SET sum = s;
    end;
    
    call example_repeat(@result);
    select @result;

    表数据操作

    1.增删改

    -- 插入全部字段数据
    INSERT INTO tb_role VALUES(null,'管理员',3,CURRENT_TIME);#自增主键可以插入null或者不重复数字
    -- 插入指定字段数据
    INSERT INTO tb_role (role,num,time) VALUES('管理员',3,CURRENT_TIME());
    -- 插入多行数据
    INSERT INTO tb_role (role,num,time) VALUES('管理员',4,CURRENT_TIME()),('管理员',5,CURRENT_TIME()),('管理员',6,CURRENT_TIME());
    -- 插入查询结果
    INSERT INTO tb_role (role,num,time) SELECT '用户' r,1 n,NOW() t from dual;
  • 相关阅读:
    YTU 2481: 01字串
    smarty的自定义函数
    $_SERVER['SCRIPT_FLENAME']与__FILE__
    pdo中query()与prepare().execute()
    pdo中bindParam()与bindValue的区别
    pdo简介--错误与错误处理
    pdo的三个预定义类,PDO PDOStatement PDOException
    根目录 上级目录 当前目录
    反射机制(转)
    log4j 日志配置
  • 原文地址:https://www.cnblogs.com/gdou/p/11723601.html
Copyright © 2011-2022 走看看