精华内容
下载资源
问答
  • 2007-07-26 10:39:00
    CREATE   PROC  #AutoGeneration_Exists_P
    @TABLENAME   VARCHAR ( 50 )
    AS
    BEGIN
     
    DECLARE   @HOST_NAME   VARCHAR ( 200 )
     
    DECLARE   @GET_DATE   DATETIME
     
    DECLARE   @SQLROC   VARCHAR ( 4000 )
     
    DECLARE   @REMARK   VARCHAR ( 2000 )
     
    DECLARE   @SQL   VARCHAR ( 2000 )
     
    DECLARE   @PARAMETER   VARCHAR ( 2000 )
     
    DECLARE   @DESCRIPTION   VARCHAR ( 8000 )
     
    DECLARE   @WHERE_SQL   VARCHAR ( 2000 )
     
    DECLARE   @ROWCOUNT   INT
     
    SELECT   @SQLROC = '' , @DESCRIPTION = '' , @PARAMETER = '' , @REMARK = '' , @WHERE_SQL = '' , @SQL = '' ,
       
    @HOST_NAME = HOST_NAME (), @GET_DATE = GETDATE ()
     
    SET   @SQLROC = @SQLROC + ' IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID( '' SP_ ' + @TABLENAME + ' _Exists '' ) AND XTYPE IN (N '' P '' )) ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + SPACE ( 5 ) + ' DROP PROC SP_ ' + @TABLENAME + ' _Exists ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + ' GO  '
     
    SET  NOCOUNT  ON
     
    CREATE   TABLE  #(TABLE_QUALIFIER  VARCHAR ( 100 ),
     TABLE_OWNER  
    VARCHAR ( 100 ),
     TABLE_NAME   
    VARCHAR ( 100 ),
     COLUMN_NAME  
    VARCHAR ( 100 ),
     KEY_SEQ      
    VARCHAR ( 50 ),
     PK_NAME   
    VARCHAR ( 100 ))
     
    INSERT   INTO  #  EXEC  SP_PKEYS  @TABLENAME
     
    SELECT   @REMARK = @REMARK + ' ,@ ' + COLUMN_NAME,
       
    @WHERE_SQL = @WHERE_SQL + '  AND  ' + COLUMN_NAME + ' =@ ' + COLUMN_NAME + ''
     
    FROM  #
     
    SELECT   @PARAMETER = @PARAMETER + SPACE ( 4 ) + ' @ ' + LTRIM (NAME) + SPACE ( 15 - LEN (NAME)) +
         
    CASE   WHEN  xtype = 34   THEN   ' image '
           
    WHEN  xtype = 35   THEN   ' text '
           
    WHEN  xtype = 36   THEN   ' uniqueidentifier '
           
    WHEN  xtype = 48   THEN   ' tinyint '
           
    WHEN  xtype = 52   THEN   ' smallint '
           
    WHEN  xtype = 56   THEN   ' int '
           
    WHEN  xtype = 58   THEN   ' smalldatetime '
           
    WHEN  xtype = 59   THEN   ' real '
           
    WHEN  xtype = 60   THEN   ' money '
           
    WHEN  xtype = 61   THEN   ' datetime '
           
    WHEN  xtype = 62   THEN   ' float '
           
    WHEN  xtype = 98   THEN   ' sql_variant '
           
    WHEN  xtype = 99   THEN   ' ntext '
           
    WHEN  xtype = 104   THEN   ' bit '
           
    WHEN  xtype = 106   THEN   ' decimal '
           
    WHEN  xtype = 108   THEN   ' numeric '
           
    WHEN  xtype = 122   THEN   ' smallmoney '
           
    WHEN  xtype = 127   THEN   ' bigint '
           
    WHEN  xtype = 165   THEN   ' varbinary '
                
    WHEN  xtype = 167   THEN   ' varchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 173   THEN   ' binary '
           
    WHEN  xtype = 175   THEN   ' char ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 189   THEN   ' timestamp '
           
    WHEN  xtype = 231   THEN   ' nvarchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 239   THEN   ' nchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 241   THEN   ' xml '
           
    WHEN  xtype = 231   THEN   ' sysname '   END + ' , ' + CHAR ( 10 )
     
    FROM  SYSCOLUMNS A
        
    WHERE  ID = OBJECT_ID ( '' + @TABLENAME + ''
     
    AND  NAME  IN  ( SELECT  COLUMN_NAME  FROM  #)
     
    DROP   TABLE  #
     
    SET  NOCOUNT  OFF
     
    SET   @DESCRIPTION = @DESCRIPTION + ' /*+--------------------------------------+ ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 过程名称:SP_ ' + @TABLENAME + ' _Exists ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 功能说明:判断表 ' + @TABLENAME + ' 是否存在该记录的存储过程 ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 入口参数: ' + STUFF ( @REMARK , 1 , 1 , '' ) + '' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 过程返回:无返回记录 ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 维护记录:Y/A ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 使用案例:SP_ ' + @TABLENAME + ' _Exists ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 工作站名: ' + @HOST_NAME + '' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 联系方式:zlp321001@hotmail.com ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 创建日期: ' + CONVERT ( VARCHAR ( 20 ), @GET_DATE , 120 ) + '' + CHAR ( 10
     
    SET   @DESCRIPTION = @DESCRIPTION + ' +--------------------------------------+*/ ' + CHAR ( 10 )
     
    SELECT   @SQLROC = @SQLROC + CHAR ( 10 ) + @DESCRIPTION + ' CREATE PROC SP_ ' + @TABLENAME + ' _Exists '
     
    SET   @SQLROC = @SQLROC + CHAR ( 13 ) + CHAR ( 10 ) + LEFT ( @PARAMETER , LEN ( @PARAMETER ) - 2 ) + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + ' AS ' + CHAR ( 10 ) + ' BEGIN '
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + SPACE ( 4 ) + ' SET NOCOUNT ON '
     
    SET   @SQLROC = @SQLROC + CHAR ( 32 ) + @SQL
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + SPACE ( 8 ) + ' IF EXISTS (SELECT 1 FROM  ' + @TABLENAME + '  WHERE  ' + STUFF ( @WHERE_SQL , 1 , 4 , '' ) + ' ) ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + '   BEGIN  ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + '    SELECT _RETURN=1 ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + '   END ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + '   ELSE ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + '   BEGIN  ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + '    SELECT _RETURN=0 ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + '   END ' + CHAR ( 10
     
    SET   @SQLROC = @SQLROC + SPACE ( 4 ) + ' SET NOCOUNT OFF '  
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + ' END '
     
    PRINT   @SQLROC + CHAR ( 10 ) + ' GO  '
    END

    GO

    CREATE   PROC  #SP_Generation_EXISTS
    @TABLENAMES   VARCHAR ( 8000 )
    AS
    BEGIN
    DECLARE   @I   INT
    DECLARE   @TABLENAME   VARCHAR ( 100 )
    SET   @I = CHARINDEX ( ' , ' , @TABLENAMES )
    WHILE   @I > 0
    BEGIN
     
    SET   @TABLENAME = LEFT ( @TABLENAMES , @I - 1 )
     
    EXEC  #AutoGeneration_Exists_P  @TABLENAME
     
    SET   @TABLENAMES = RIGHT ( @TABLENAMES , LEN ( @TABLENAMES ) - @I )
     
    SET   @I = CHARINDEX ( ' , ' , @TABLENAMES )
    END
    IF   LEN ( @TABLENAMES ) > 0
    BEGIN
     
    EXEC  #AutoGeneration_Exists_P  @TABLENAMES
    END
    END

    GO
    -- 测试
    #SP_Generation_EXISTS  ' t '

    drop   proc  #AutoGeneration_Exists_P
    drop   proc  #SP_Generation_EXISTS

    -- 测试结果
    /**//*

    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID('SP_t_Exists') AND XTYPE IN (N'P'))
         DROP PROC SP_t_Exists
    GO 
    /*+--------------------------------------+
    | 过程名称:SP_t_Exists
    | 功能说明:判断表t是否存在该记录的存储过程
    | 入口参数:@type
    | 过程返回:无返回记录
    | 维护记录:Y/A
    | 使用案例:SP_t_Exists
    | 工作站名:RICHWAY-ZJ
    | 联系方式:zlp321001@hotmail.com
    | 创建日期:2006-08-31 12:20:09
    +--------------------------------------+
    */
    CREATE   PROC  SP_t_Exists
        
    @type             varchar ( 10 )
    AS
    BEGIN
        
    SET  NOCOUNT  ON  
            
    IF   EXISTS  ( SELECT   1   FROM  t  WHERE   type = @type )
      
    BEGIN  
       
    SELECT  _ RETURN = 1
      
    END
      
    ELSE
      
    BEGIN  
       
    SELECT  _ RETURN = 0
      
    END
        
    SET  NOCOUNT  OFF
    END
    GO  

    */
     
    更多相关内容
  • 6. 子查询:上一次查询的结果,作为本次查询的原始数据 (3)交叉查询 # 交叉查询只是用来生成笛卡尔积,不适用于任何匹配 select * from emp,dept; mysql> select * from emp,dept ; +------...

    一、插入数据(insert)

    1. 插入完整数据(顺序插入)
        语法一:
        INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n);    # 后面的值必须与字段一一对应
    
        语法二:
        INSERT INTO 表名 VALUES (值1,值2,值3…值n);
    
    2. 指定字段插入数据
        语法:
        INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);       # 后面的值必须与指定的字段一一匹配
    
    3. 插入多条记录
        语法:
        INSERT INTO 表名 VALUES
            (值1,值2,值3…值n),
            (值1,值2,值3…值n),
            (值1,值2,值3…值n);
            
    4. 插入查询结果
        语法:
        INSERT INTO 表名(字段1,字段2,字段3…字段n) 
                        SELECT (字段1,字段2,字段3…字段n) FROM 表2
                        WHERE …;

    二、更新数据(update)

    语法:
        UPDATE 表名 SET
            字段1=值1,
            字段2=值2,
            WHERE CONDITION;        # where 有则根据条件修改,若是没有,则叫表中的对应字段的值全部修改
    
    
    示例:
        UPDATE mysql.user SET password=password(‘123’) 
            where user=’root’ and host=’localhost’;

    三、删除数据(delete)

    删除数据时,如果设置过主键自动增长:

    • 部分删除,会保留行号,先修改主键的值,再添加新的数据
    • 全部删除,会保留行号,先修改主键的值,在添加新的数据 =====>  全部修改可以用  truncate table 表名  来清空表中数据

    修改添加数据时的自动增长的起始位置: alter table 表名 auto_increment = 位置(整型数字)

    语法:
        DELETE FROM 表名 
            WHERE CONITION;
    
    示例:
        DELETE FROM mysql.user 
            WHERE password=’’;

    四、查询数据

    1、单表查询

    (1)单表查询的语法

    SELECT 字段1,字段2... FROM 表名
                      WHERE 条件
                      GROUP BY field
                      HAVING 筛选
                      ORDER BY field
                      LIMIT 限制条数

    (2)关键字的优先级(重点)

    重点中的重点:关键字的执行优先级
    from        # 1.找到表
    where      # 2.根据where指定的约束条件,去表中取出一条条记录
    group by      # 3.将取出的一条条记录分组,若没分组,则视为一个整体
    having         # 4.将分组后的结果进行过滤
    select        # 5.执行select
    distinct        # 6.去重
    order by       # 7.排序,默认是升序
    limit           # 8.限制结果的显示条数

    (2.1)关键字定义顺序

    SELECT DISTINCT <select_list>
    
    FROM <left_table>
    
    <join_type> JOIN <right_table>
    
    ON <join_condition>
    
    WHERE <where_condition>
    
    GROUP BY <group_by_list>
    
    HAVING <having_condition>
    
    ORDER BY <order_by_condition>
    
    LIMIT <limit_number>

    (2.2)关键字的执行顺序

    (7)     SELECT 
    (8)     DISTINCT <select_list>
    (1)     FROM <left_table>
    (3)     <join_type> JOIN <right_table>
    (2)     ON <join_condition>
    (4)     WHERE <where_condition>  
    (5)     GROUP BY <group_by_list>
    (6)     HAVING <having_condition>
    (9)     ORDER BY <order_by_condition>
    (10)    LIMIT <limit_number>

    (2.3)执行顺序详解

    SQL语句的执行过程中,都会产生一个虚拟表,用来保存SQL语句的执行结果

    1. 执行FROM语句,知道最开始从哪个表开始的
    2. 执行ON语句,根据ON后面指定的条件筛选出符合条件的
    3. 添加外部行,只有在连接OUTER JOIN类型时才执行,RIGHT OUTER JOIN、LEFT OUTER JOIN、FULL OUTER JOIN  (详细见多表查询)
    4. 执行WHERE语句            注意:由于数据还没有分组,因此现在还不能在WHERE过滤器中使用where_condition=MIN(col)这类对分组统计的过滤;
    5. 执行GROUP BY分组,对使用WHERE子句得到的虚拟表进行分组操作,默认只显示组内第一条
    6. 执行HAVING过滤,对分组后的虚拟表进行过滤
    7. 执行SELECT,从虚拟表中筛选出需要的信息
    8. 执行DISTINCT语句  去掉重复的内容
    9. 执行ORDER BY语句,对去重后的虚拟表进行排序
    10. 执行LIMIT[m,]n 语句,从m行(不包括m)开始显示n行数据

    具体过程可参考博客:http://www.cnblogs.com/linhaifeng/articles/7372774.html

    注意点:

    # where
    1.where是从硬盘众读取数据到内存
    2.比较运算符:> < >= <= <> != 
    2.between 80 and 100   # 值在10到20之间
    3.in(80,90,100) # 值是10或20或30
    4.like 'e%'    # 模糊查询
    5.逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
    
    强调:
    where是一条一条读取数据到内存,根据后面的条件判断是符合,因此不能同聚合函数来对数据进行处理
    # group by 
    1.在MySQL中,如果没有设置sql_mode为  ONLY_FULL_GROUP_BY ,那么结果就会只显示每一组的一条,别的被隐藏
    2.可以利用聚合函数,按照统计结果进行分组
    3.分组是在where之后得到的记录进行的
    4.大前提:可以按照任意字段分组,但是分组完毕后,比如group by post,只能查看post字段,如果想查看组内信息,需要借助于聚合函数
    5. 注意 ONLY_FULL_GROUP_BY
    小窍门:‘每’这个字后面的字段,就是我们分组的依据
    6.ONLY_FULL_GROUP_BY作用:
    没有设置ONLY_FULL_GROUP_BY,于是也可以有结果,默认都是组内的第一条记录,但其实这是没有意义的,因此设置sql_mode为ONLY_FULL_GROUP_BY
    设置命令:set global sql_mode = 'ONLY_FULL_GROUP_BY'
    # having
    1.对分组之后的数据进行筛选,必须是分组了以后,才能进行having 筛选。
    2.并且是在从硬盘中读取完数据以后,才能进行分组,再开始筛选。
    3.筛选可以利用聚合函数,根据统计结果进行筛选
    4.Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数
    #order by
    对记录进行排序
    select * fron t order by salary desc;    # desc 降序排序
    select * from t order by salary asc ;   # asc 升序排序
    
    如果不写明 desc / asc ,默认为asc升序排序
    # limit
    1.限制显示的条数
    select * from emp limit 3;    # 显示前三条数据
    select * from emp limit 2,3;       # 显示从第3条开始的3条数据
    2.常用于数据的分页显示
    例如:
      select *from emp limit 0,10; # 第一页    # 页数 减1 乘以条数 得到起始位置
      select *from emp limit 10,10; # 第2页
      select *from emp limit 20,10; # 第3页

    (3)聚合函数

    聚合函数聚合的是 组 的内容,若是没有分组,则默认一组

    sum()      #求和
    avg()       #求平均数
    max()/min()    #求最大值 / 最小值
    count()     # 统计个数
    
    示例:
        SELECT  COUNT(sex='') 男,COUNT(sex='') 女 FROM employee;
        SELECT COUNT(*) FROM employee WHERE depart_id=1;
        SELECT MAX(salary) FROM employee;
        SELECT MIN(salary) FROM employee;
        SELECT AVG(salary) FROM employee;
        SELECT SUM(salary) FROM employee;
        SELECT SUM(salary) FROM employee WHERE depart_id=3;

    (4)使用正则表达式查询

    SELECT * FROM employee WHERE name REGEXP '^ale';
    
    SELECT * FROM employee WHERE name REGEXP 'on$';
    
    SELECT * FROM employee WHERE name REGEXP 'm{2}';
    
    
    小结:对字符串匹配的方式
    WHERE name = 'Tom';
    WHERE name LIKE 'yua%';
    WHERE name REGEXP 'on$';

     2、多表查询

    create table emp (id int,name char(10),sex char,dept_id int);
    insert emp values(1,"大黄","m",1);
    insert emp values(2,"老王","m",2);
    insert emp values(3,"老李","w",30);
    
    create table dept (id int,name char(10));
    insert dept values(1,"市场");
    insert dept values(2,"财务");
    insert dept values(3,"行政");
    建表

    (1)什么是多表查询

    多表查询是在多个表中查询数据

    (2)查询方式

    1. 交叉连接:不适用任何匹配条件。只是用于生成笛卡尔积
    2. 内连接:只连接匹配的行
    3. 外链接之左连接:优先显示左表全部记录
    4. 外链接之右连接:优先显示右表全部记录
    5. 全外连接:显示左右两个表全部记录
    6. 子查询:上一次查询的结果,作为本次查询的原始数据

    (3)交叉查询

    # 交叉查询只是用来生成笛卡尔积,不适用于任何匹配
    
    select *from emp,dept;
    mysql> select *from emp,dept ;
    +------+--------+------+---------+------+--------+
    | id   | name   | sex  | dept_id | id   | name   |
    +------+--------+------+---------+------+--------+
    |    1 | 大黄   | m    |       1 |    1 | 市场   |
    |    2 | 老王   | m    |       2 |    1 | 市场   |
    |    3 | 老李   | w    |      30 |    1 | 市场   |
    |    1 | 大黄   | m    |       1 |    2 | 财务   |
    |    2 | 老王   | m    |       2 |    2 | 财务   |
    |    3 | 老李   | w    |      30 |    2 | 财务   |
    |    1 | 大黄   | m    |       1 |    3 | 行政   |
    |    2 | 老王   | m    |       2 |    3 | 行政   |
    |    3 | 老李   | w    |      30 |    3 | 行政   |
    +------+--------+------+---------+------+--------+
    View Code

    (4)内连接查询(inner join)

    # 找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果
    
    select *from emp inner join dept  on emp.dept_id = dept.id;
    等同于:
    select *from emp,dept where emp.dept_id = dept.id;
    mysql> select *from emp inner join dept on emp.dept_id = dept.id;
    +------+--------+------+---------+------+--------+
    | id   | name   | sex  | dept_id | id   | name   |
    +------+--------+------+---------+------+--------+
    |    1 | 大黄   | m    |       1 |    1 | 市场   |
    |    2 | 老王   | m    |       2 |    2 | 财务   |
    +------+--------+------+---------+------+--------+
    View Code

    (5)外连接查询之左连接(left join   <===>  left outer join)

    #以左表为准,左表中记录完全显示,右边匹配才显示
    #本质就是:在内连接的基础上增加左边有右边没有的结果
    
    select *from emp left join dept  on emp.dept_id = dept.id;
    mysql> select * from emp left join dept on  emp.dept_id = dept.id;
    +------+--------+------+---------+------+--------+
    | id   | name   | sex  | dept_id | id   | name   |
    +------+--------+------+---------+------+--------+
    |    1 | 大黄   | m    |       1 |    1 | 市场   |
    |    2 | 老王   | m    |       2 |    2 | 财务   |
    |    3 | 老李   | w    |      30 | NULL | NULL   |
    +------+--------+------+---------+------+--------+
    View Code

    (6)外连接查询之右连接(right join <===> right outer join)

    #以右表为准,右表中记录完全显示,左边匹配才显示
    #本质就是:在内连接的基础上增加右边有左边没有的结果
    
    select *from emp right join dept  on emp.dept_id = dept.id;
    mysql> select *from emp right join dept  on emp.dept_id = dept.id;
    +------+--------+------+---------+------+--------+
    | id   | name   | sex  | dept_id | id   | name   |
    +------+--------+------+---------+------+--------+
    |    1 | 大黄   | m    |       1 |    1 | 市场   |
    |    2 | 老王   | m    |       2 |    2 | 财务   |
    | NULL | NULL   | NULL |    NULL |    3 | 行政   |
    +------+--------+------+---------+------+--------+
    View Code

    (7)全外连接(union间接连接)

    全外连接:在内连接的基础上增加左边有右边没有的和右边有左边没有的结果,也就是把多个查询结果合并在一起显示
    #注意:mysql不支持全外连接 full JOIN
    #强调:mysql可以使用此种方式间接实现全外连接   union
    
    select *from emp right join dept  on emp.dept_id = dept.id
    union
    select *from emp left join dept  on emp.dept_id = dept.id;
    
    注意:
    union与union all的区别:union会去掉相同的纪录
    mysql> select *from emp right join dept  on emp.dept_id = dept.id
        ->        union
        ->        select *from emp left join dept  on emp.dept_id = dept.id;
    +------+--------+------+---------+------+--------+
    | id   | name   | sex  | dept_id | id   | name   |
    +------+--------+------+---------+------+--------+
    |    1 | 大黄   | m    |       1 |    1 | 市场   |
    |    2 | 老王   | m    |       2 |    2 | 财务   |
    | NULL | NULL   | NULL |    NULL |    3 | 行政   |
    |    3 | 老李   | w    |      30 | NULL | NULL   |
    +------+--------+------+---------+------+--------+
    View Code

    3、子查询

    当一次无法查询到所要的数据,可以利用子查询实现,子查询能实现的,也可以通过多表查询实现

    #1:子查询是将一个查询语句嵌套在另一个查询语句中。
    #2:内层查询语句的查询结果,可以为外层查询语句提供查询条件。
    #3:子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字
    #4:还可以包含比较运算符:= 、 !=、> 、<等
    select * from emp where salary = (select max(salary) from emp);

     取别名:给就近一个字段名或者是一个表去别名,as可以省略

    select dep_id,avg(age) avg_age from emp group by dep_id t2;

    这个语句相当于:select dep_id,avg(age)  as avg_age from emp group by dep_id as t2;

     

    转载于:https://www.cnblogs.com/zhangbingsheng/p/10571246.html

    展开全文
  • | 功能说明:查询表t记录集合的存储过程 | 入口参数:@type | 过程返回:返回所有记录集 | 维护记录:Y/A | 使用案例:SP_t_Load | 工作站名:RICHWAY-ZJ | 联系方式:zlp321001@hotmail.com | 创建日期:...

     

    CREATE   PROC  #AutoGeneration_Load_P
    @TABLENAME   VARCHAR ( 50 )
    AS
    BEGIN
     
    DECLARE   @HOST_NAME   VARCHAR ( 200 )
     
    DECLARE   @GET_DATE   DATETIME
     
    DECLARE   @SQLROC   VARCHAR ( 4000 )
     
    DECLARE   @REMARK   VARCHAR ( 2000 )
     
    DECLARE   @SQL   VARCHAR ( 2000 )
     
    DECLARE   @PARAMETER   VARCHAR ( 2000 )
     
    DECLARE   @DESCRIPTION   VARCHAR ( 8000 )
     
    DECLARE   @WHERE_SQL   VARCHAR ( 2000 )
     
    DECLARE   @ROWCOUNT   INT
     
    SELECT   @SQLROC = '' , @DESCRIPTION = '' , @PARAMETER = '' , @REMARK = '' , @WHERE_SQL = '' , @SQL = '' ,
       
    @HOST_NAME = HOST_NAME (), @GET_DATE = GETDATE ()
     
    SET   @SQLROC = @SQLROC + ' IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID( '' SP_ ' + @TABLENAME + ' _Load '' ) AND XTYPE IN (N '' P '' )) ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + SPACE ( 5 ) + ' DROP PROC SP_ ' + @TABLENAME + ' _Load ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + ' GO  '
     
    SET  NOCOUNT  ON
     
    CREATE   TABLE  #(TABLE_QUALIFIER  VARCHAR ( 100 ),
     TABLE_OWNER  
    VARCHAR ( 100 ),
     TABLE_NAME   
    VARCHAR ( 100 ),
     COLUMN_NAME  
    VARCHAR ( 100 ),
     KEY_SEQ      
    VARCHAR ( 50 ),
     PK_NAME   
    VARCHAR ( 100 ))
     
    INSERT   INTO  #  EXEC  SP_PKEYS  @TABLENAME
     
    SELECT   @REMARK = @REMARK + ' ,@ ' + COLUMN_NAME,
       
    @WHERE_SQL = @WHERE_SQL + '  AND  ' + COLUMN_NAME + ' =@ ' + COLUMN_NAME + ''
     
    FROM  #
     
    SELECT   @PARAMETER = @PARAMETER + SPACE ( 4 ) + ' @ ' + LTRIM (NAME) + SPACE ( 20 - LEN (NAME)) +
         
    CASE   WHEN  xtype = 34   THEN   ' image '
           
    WHEN  xtype = 35   THEN   ' text '
           
    WHEN  xtype = 36   THEN   ' uniqueidentifier '
           
    WHEN  xtype = 48   THEN   ' tinyint '
           
    WHEN  xtype = 52   THEN   ' smallint '
           
    WHEN  xtype = 56   THEN   ' int '
           
    WHEN  xtype = 58   THEN   ' smalldatetime '
           
    WHEN  xtype = 59   THEN   ' real '
           
    WHEN  xtype = 60   THEN   ' money '
           
    WHEN  xtype = 61   THEN   ' datetime '
           
    WHEN  xtype = 62   THEN   ' float '
           
    WHEN  xtype = 98   THEN   ' sql_variant '
           
    WHEN  xtype = 99   THEN   ' ntext '
           
    WHEN  xtype = 104   THEN   ' bit '
           
    WHEN  xtype = 106   THEN   ' decimal '
           
    WHEN  xtype = 108   THEN   ' numeric '
           
    WHEN  xtype = 122   THEN   ' smallmoney '
           
    WHEN  xtype = 127   THEN   ' bigint '
           
    WHEN  xtype = 165   THEN   ' varbinary '
                
    WHEN  xtype = 167   THEN   ' varchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 173   THEN   ' binary '
           
    WHEN  xtype = 175   THEN   ' char ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 189   THEN   ' timestamp '
           
    WHEN  xtype = 231   THEN   ' nvarchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 239   THEN   ' nchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 241   THEN   ' xml '
           
    WHEN  xtype = 231   THEN   ' sysname '   END + ' , ' + CHAR ( 10 )
     
    FROM  SYSCOLUMNS A
        
    WHERE  ID = OBJECT_ID ( '' + @TABLENAME + ''
     
    AND  NAME  IN  ( SELECT  COLUMN_NAME  FROM  #)
     
    DROP   TABLE  #
     
    SET  NOCOUNT  OFF
     
    SET   @DESCRIPTION = @DESCRIPTION + ' /*+--------------------------------------+ ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 过程名称:SP_ ' + @TABLENAME + ' _Load ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 功能说明:查询表 ' + @TABLENAME + ' 记录集合的存储过程 ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 入口参数: ' + STUFF ( @REMARK , 1 , 1 , '' ) + '' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 过程返回:返回所有记录集 ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 维护记录:Y/A ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 使用案例:SP_ ' + @TABLENAME + ' _Load ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 工作站名: ' + @HOST_NAME + '' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 联系方式:zlp321001@hotmail.com ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 创建日期: ' + CONVERT ( VARCHAR ( 20 ), @GET_DATE , 120 ) + '' + CHAR ( 10
     
    SET   @DESCRIPTION = @DESCRIPTION + ' +--------------------------------------+*/ ' + CHAR ( 10 )
     
    SELECT   @SQLROC = @SQLROC + CHAR ( 10 ) + @DESCRIPTION + ' CREATE PROC SP_ ' + @TABLENAME + ' _Load '
     
    SET   @SQLROC = @SQLROC + CHAR ( 13 ) + CHAR ( 10 ) + LEFT ( @PARAMETER , LEN ( @PARAMETER ) - 2 ) + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + ' AS ' + CHAR ( 10 ) + ' BEGIN '
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + SPACE ( 4 ) + ' SET NOCOUNT ON '
     
    SET   @SQLROC = @SQLROC + CHAR ( 32 ) + @SQL
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + SPACE ( 8 ) + ' SELECT * FROM  ' + @TABLENAME + '  WHERE  ' + STUFF ( @WHERE_SQL , 1 , 4 , '' ) + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + SPACE ( 4 ) + ' SET NOCOUNT OFF '  
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + ' END '
     
    PRINT   @SQLROC + CHAR ( 10 ) + ' GO  '
    END

    GO

    CREATE   PROC  #SP_Generation_Load
    @TABLENAMES   VARCHAR ( 8000 )
    AS
    BEGIN
    DECLARE   @I   INT
    DECLARE   @TABLENAME   VARCHAR ( 100 )
    SET   @I = CHARINDEX ( ' , ' , @TABLENAMES )
    WHILE   @I > 0
    BEGIN
     
    SET   @TABLENAME = LEFT ( @TABLENAMES , @I - 1 )
     
    EXEC  #AutoGeneration_Load_P  @TABLENAME
     
    SET   @TABLENAMES = RIGHT ( @TABLENAMES , LEN ( @TABLENAMES ) - @I )
     
    SET   @I = CHARINDEX ( ' , ' , @TABLENAMES )
    END
    IF   LEN ( @TABLENAMES ) > 0
    BEGIN
     
    EXEC  #AutoGeneration_Load_P  @TABLENAMES
    END
    END
    GO

    -- 测试
    #SP_Generation_Load  ' t '

    drop   proc  #AutoGeneration_Load_P
    drop   proc  #SP_Generation_Load 

    -- 测试结果:

    /*
    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID('SP_t_Load') AND XTYPE IN (N'P'))
         DROP PROC SP_t_Load
    GO 
    /*+--------------------------------------+
    | 过程名称:SP_t_Load
    | 功能说明:查询表t记录集合的存储过程
    | 入口参数:@type
    | 过程返回:返回所有记录集
    | 维护记录:Y/A
    | 使用案例:SP_t_Load
    | 工作站名:RICHWAY-ZJ
    | 联系方式:zlp321001@hotmail.com
    | 创建日期:2006-08-31 12:26:37
    +--------------------------------------+
    */

    CREATE   PROC  SP_t_Load
        
    @type                  varchar ( 10 )
    AS
    BEGIN
        
    SET  NOCOUNT  ON  
            
    SELECT   *   FROM  t  WHERE   type = @type
        
    SET  NOCOUNT  OFF
    END
    GO  

    */
    展开全文
  • | 功能说明:查询表t记录集合的存储过程 | 入口参数:@type | 过程返回:返回所有记录集 | 维护记录:Y/A | 使用案例:SP_t_Load | 工作站名:RICHWAY-ZJ | 联系方式:zlp321001@hotmail.com | 创建日期:...
    <script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
    CREATE   PROC  #AutoGeneration_Load_P
    @TABLENAME   VARCHAR ( 50 )
    AS
    BEGIN
     
    DECLARE   @HOST_NAME   VARCHAR ( 200 )
     
    DECLARE   @GET_DATE   DATETIME
     
    DECLARE   @SQLROC   VARCHAR ( 4000 )
     
    DECLARE   @REMARK   VARCHAR ( 2000 )
     
    DECLARE   @SQL   VARCHAR ( 2000 )
     
    DECLARE   @PARAMETER   VARCHAR ( 2000 )
     
    DECLARE   @DESCRIPTION   VARCHAR ( 8000 )
     
    DECLARE   @WHERE_SQL   VARCHAR ( 2000 )
     
    DECLARE   @ROWCOUNT   INT
     
    SELECT   @SQLROC = '' , @DESCRIPTION = '' , @PARAMETER = '' , @REMARK = '' , @WHERE_SQL = '' , @SQL = '' ,
       
    @HOST_NAME = HOST_NAME (), @GET_DATE = GETDATE ()
     
    SET   @SQLROC = @SQLROC + ' IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID( '' SP_ ' + @TABLENAME + ' _Load '' ) AND XTYPE IN (N '' P '' )) ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + SPACE ( 5 ) + ' DROP PROC SP_ ' + @TABLENAME + ' _Load ' + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + ' GO  '
     
    SET  NOCOUNT  ON
     
    CREATE   TABLE  #(TABLE_QUALIFIER  VARCHAR ( 100 ),
     TABLE_OWNER  
    VARCHAR ( 100 ),
     TABLE_NAME   
    VARCHAR ( 100 ),
     COLUMN_NAME  
    VARCHAR ( 100 ),
     KEY_SEQ      
    VARCHAR ( 50 ),
     PK_NAME   
    VARCHAR ( 100 ))
     
    INSERT   INTO  #  EXEC  SP_PKEYS  @TABLENAME
     
    SELECT   @REMARK = @REMARK + ' ,@ ' + COLUMN_NAME,
       
    @WHERE_SQL = @WHERE_SQL + '  AND  ' + COLUMN_NAME + ' =@ ' + COLUMN_NAME + ''
     
    FROM  #
     
    SELECT   @PARAMETER = @PARAMETER + SPACE ( 4 ) + ' @ ' + LTRIM (NAME) + SPACE ( 20 - LEN (NAME)) +
         
    CASE   WHEN  xtype = 34   THEN   ' image '
           
    WHEN  xtype = 35   THEN   ' text '
           
    WHEN  xtype = 36   THEN   ' uniqueidentifier '
           
    WHEN  xtype = 48   THEN   ' tinyint '
           
    WHEN  xtype = 52   THEN   ' smallint '
           
    WHEN  xtype = 56   THEN   ' int '
           
    WHEN  xtype = 58   THEN   ' smalldatetime '
           
    WHEN  xtype = 59   THEN   ' real '
           
    WHEN  xtype = 60   THEN   ' money '
           
    WHEN  xtype = 61   THEN   ' datetime '
           
    WHEN  xtype = 62   THEN   ' float '
           
    WHEN  xtype = 98   THEN   ' sql_variant '
           
    WHEN  xtype = 99   THEN   ' ntext '
           
    WHEN  xtype = 104   THEN   ' bit '
           
    WHEN  xtype = 106   THEN   ' decimal '
           
    WHEN  xtype = 108   THEN   ' numeric '
           
    WHEN  xtype = 122   THEN   ' smallmoney '
           
    WHEN  xtype = 127   THEN   ' bigint '
           
    WHEN  xtype = 165   THEN   ' varbinary '
                
    WHEN  xtype = 167   THEN   ' varchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 173   THEN   ' binary '
           
    WHEN  xtype = 175   THEN   ' char ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 189   THEN   ' timestamp '
           
    WHEN  xtype = 231   THEN   ' nvarchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 239   THEN   ' nchar ' + ' ( ' + LTRIM (length) + ' ) '
           
    WHEN  xtype = 241   THEN   ' xml '
           
    WHEN  xtype = 231   THEN   ' sysname '   END + ' , ' + CHAR ( 10 )
     
    FROM  SYSCOLUMNS A
        
    WHERE  ID = OBJECT_ID ( '' + @TABLENAME + ''
     
    AND  NAME  IN  ( SELECT  COLUMN_NAME  FROM  #)
     
    DROP   TABLE  #
     
    SET  NOCOUNT  OFF
     
    SET   @DESCRIPTION = @DESCRIPTION + ' /*+--------------------------------------+ ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 过程名称:SP_ ' + @TABLENAME + ' _Load ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 功能说明:查询表 ' + @TABLENAME + ' 记录集合的存储过程 ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 入口参数: ' + STUFF ( @REMARK , 1 , 1 , '' ) + '' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 过程返回:返回所有记录集 ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 维护记录:Y/A ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 使用案例:SP_ ' + @TABLENAME + ' _Load ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 工作站名: ' + @HOST_NAME + '' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 联系方式:zlp321001@hotmail.com ' + CHAR ( 10 )
     
    SET   @DESCRIPTION = @DESCRIPTION + ' | 创建日期: ' + CONVERT ( VARCHAR ( 20 ), @GET_DATE , 120 ) + '' + CHAR ( 10
     
    SET   @DESCRIPTION = @DESCRIPTION + ' +--------------------------------------+*/ ' + CHAR ( 10 )
     
    SELECT   @SQLROC = @SQLROC + CHAR ( 10 ) + @DESCRIPTION + ' CREATE PROC SP_ ' + @TABLENAME + ' _Load '
     
    SET   @SQLROC = @SQLROC + CHAR ( 13 ) + CHAR ( 10 ) + LEFT ( @PARAMETER , LEN ( @PARAMETER ) - 2 ) + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + ' AS ' + CHAR ( 10 ) + ' BEGIN '
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + SPACE ( 4 ) + ' SET NOCOUNT ON '
     
    SET   @SQLROC = @SQLROC + CHAR ( 32 ) + @SQL
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + SPACE ( 8 ) + ' SELECT * FROM  ' + @TABLENAME + '  WHERE  ' + STUFF ( @WHERE_SQL , 1 , 4 , '' ) + CHAR ( 10 )
     
    SET   @SQLROC = @SQLROC + SPACE ( 4 ) + ' SET NOCOUNT OFF '  
     
    SET   @SQLROC = @SQLROC + CHAR ( 10 ) + ' END '
     
    PRINT   @SQLROC + CHAR ( 10 ) + ' GO  '
    END

    GO

    CREATE   PROC  #SP_Generation_Load
    @TABLENAMES   VARCHAR ( 8000 )
    AS
    BEGIN
    DECLARE   @I   INT
    DECLARE   @TABLENAME   VARCHAR ( 100 )
    SET   @I = CHARINDEX ( ' , ' , @TABLENAMES )
    WHILE   @I > 0
    BEGIN
     
    SET   @TABLENAME = LEFT ( @TABLENAMES , @I - 1 )
     
    EXEC  #AutoGeneration_Load_P  @TABLENAME
     
    SET   @TABLENAMES = RIGHT ( @TABLENAMES , LEN ( @TABLENAMES ) - @I )
     
    SET   @I = CHARINDEX ( ' , ' , @TABLENAMES )
    END
    IF   LEN ( @TABLENAMES ) > 0
    BEGIN
     
    EXEC  #AutoGeneration_Load_P  @TABLENAMES
    END
    END
    GO

    -- 测试
    #SP_Generation_Load  ' t '

    drop   proc  #AutoGeneration_Load_P
    drop   proc  #SP_Generation_Load 

    -- 测试结果:

    /*
    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID('SP_t_Load') AND XTYPE IN (N'P'))
         DROP PROC SP_t_Load
    GO 
    /*+--------------------------------------+
    | 过程名称:SP_t_Load
    | 功能说明:查询表t记录集合的存储过程
    | 入口参数:@type
    | 过程返回:返回所有记录集
    | 维护记录:Y/A
    | 使用案例:SP_t_Load
    | 工作站名:RICHWAY-ZJ
    | 联系方式:zlp321001@hotmail.com
    | 创建日期:2006-08-31 12:26:37
    +--------------------------------------+
    */

    CREATE   PROC  SP_t_Load
        
    @type                  varchar ( 10 )
    AS
    BEGIN
        
    SET  NOCOUNT  ON  
            
    SELECT   *   FROM  t  WHERE   type = @type
        
    SET  NOCOUNT  OFF
    END
    GO  

    */
     
    展开全文
  • 满足业务需求的情况下,尽量降低主键的长度。 插入数据时,尽量选择顺序插入,选择使用AUTO_INCREMENT自增主键。 尽量不要使用UUID做主键或者是其他自然主键,如身份证号。 业务操作时,避免对主键的修改。
  • 数据库相关面试题

    千次阅读 2021-02-08 18:35:11
    程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句 可以使用in/out/in out 三种模式的参数 可以使用in/out/in out 三种模式的参数作为一个独立的PL/SQL语句来执行 不能独立执行,必须...
  • 1、Sqoop简介Sqoop将用户编写的sqoop命令翻译为MR程序,MR程序读取关系型数据库中的数据,写入到HDFS或读取HDFS上的数据,写入到关系型数据库在MR程序中如果要读取关系型数据中的数据,必须制定输入格式为...
  • MySql配置参数详解

    2022-05-04 17:00:12
    #*** client options 相关选项 ***# #以下选项会被MySQL客户端应用读取。注意只有MySQL附带的客户端应用程序保证可以读取这段内容。如果你想你自己的MySQL应用程序获取这些值。需要在MySQL客户端库初始化的时候指定...
  • 第二范式----数据库表中的每一列都和主键相关,而不能只和主键的某一部分相关。也就是说 一个表中只能只能包含一个,不能把多种数据保存在同一个表中。 第三范式----数据库表中每一列数据都和主键直接相关,不能...
  • 主键生成策略

    2019-09-05 20:07:00
    因为主键是唯一的标识,不方便直接修改,如果主键就是对象的属性比如学生学号作为主键,如果记录输入错了则不好去修改有悖于开闭原则。采用代理主键对象的所有属性都不是主键主键由代码自动产生一串唯一的标识,...
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 writeConcern :可选,抛出异常的级别。 // 将学号(student_id)为2019000000的记录的score的值...
  • 该项测试内容主要是数据库表为单位,检查数据库表以及表中各字段命名是否符合命名规范,表中字段是否完整,数据库表中的字段描述是否正确包括字段的类型、长度、是否为空,数据库表中的关系、索引、主键、约束是否...
  • 一般此项最好打开,打开此项会记录使得那些没有使用索引的查询也被作为到慢速查询附加到慢速日志里 slow_query_log_file = /usr/local/mysql/log/slow.log # 指定慢日志文件存放位置,可以为空,系统会给一个缺省...
  • 超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了。本文主要侧重实操,因为跟着百度前几页的搭建...
  • information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等performance_schema:MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数...
  •  由于'1' = '1'恒为真,因此只要User表中有数据,不管UserName、Password的值是否匹配,这条SQL命令准能查出记录来。就这样,登录系统就被破解了。  以往的防御方式  以前对付这种漏洞的方式主要有三种: ...
  • ORACLE-记录与集合

    2022-01-25 13:11:12
    记录与集合
  • 【MySQL我可以讲一个小时】

    千次阅读 多人点赞 2022-02-21 11:17:19
    先从底层开始说吧,mysql底层的页的大小是16kb,假如,我有一张表对单行数据量就有16kb,那么这张表就只能存储1条数据...InnoDB存储引擎来说,它使用页作为数据读取单位,页是其磁盘管理的最小单位,默认大小是16kb。
  • 2022年SQL经典面试题总结(带解析)

    千次阅读 2022-03-15 13:13:23
    (多选题)7、使用SQL语句建个存储过程proc_stu,然后student表中的学号Stu_ID为输入参数@s_no,返回学生个人的指定信息。下面创建存储过程语句正确的是:( ) A、CREATE PROCEDURE [stu].[proc_student] @s_no ...
  • 根据用户ID(主键)查询用户信息 需求 根据用户ID(主键)查询用户信息 用户表user信息 user表结构 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(32) NOT NULL ...
  • 2022年面试记录

    2020-08-30 21:33:30
    最近要换工作,面试了几家,在此记录。其实面试也是对既往工作的一种回顾,及时总结挺好的,希望自己能不断提升,也希望这份面经能帮助到大家。 关于简历方面的: 1.简单介绍一下自己 突出自己的优势 面试官您好,我...
  • 商场买东西记录

    2022-03-03 14:24:32
    整理记录一些计算机知识点 电商项目 商城项目简介 项目主要实现了一个模拟京东商城的分布式秒杀系统, 主要使用到了 nacos,用于服务注册,和配置管理,fegin用于远程调用,网关用于路由,sentinel哨兵 用于服务降级...
  • #*** client options 相关选项 ***# #以下选项会被MySQL客户端应用读取。注意只有MySQL附带的客户端应用程序保证可以读取这段内容。如果你想你自己的MySQL应用程序获取这些值。需要在MySQL客户端库初始化的时候指定...
  • my.cnf配置文件参数含义 my.cnf是在Linux操作系统中安装MySQL的主要配置文件,路径一般为/etc/my.cnf。 #以下选项会被MySQL客户端应用读取。注意只有MySQL附带的客户端应用程序保证可以读取这段内容。如果你想你自己...
  • MySQL相关知识点登陆MySQL:mysql -u账号 -p密码 或者输入-p回车后隐藏式输入密码1、对于数据库的相关命令操作: 1.1 查看所有数据库 show databases; 1.2 创建数据库 create database 库名; 1.3 删除数据库 ...
  • 数据库相关基础

    2022-03-26 15:31:37
    SQL、存储过程以及高级映射 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJO映射成数据库中的记录 MyBatis-半...
  • mysql相关命令

    2022-04-03 15:01:48
    您可以使用多列来定义主键,列间逗号分隔。 ENGINE 设置存储引擎,CHARSET 设置编码。 通过命令提示符创建表 通过 mysql> 命令窗口可以很简单的创建MySQL数据表。你可以使用 SQL 语句 CREATE TABLE 来创建数据表 ...
  • 技术点记录

    2022-02-21 22:17:00
    执行效率上: 列名为主键,count(列名)会比count(1)快 列名不为主键,count(1)会比count(列名)快 如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*) 如果有主键,则 select count(主键)的执行...
  • Java SSM 毕设过程记录笔记(01)

    千次阅读 2020-05-07 22:13:18
    MyBatis insert实体返回主键 # MyBatis insert实体返回主键 这里查找课程时间表的时候,让mysql自己去查前半个小时,后十分钟的话,会出现多个结果吗? 答案是:不会,除非课程安排间隔少于半个小时!!! Mysql中将...
  • 3.2 PromQL入门 我们从一些例子开始学习PromQL,最简单的PromQL就是直接输入指标名称,比如: # 表示 Prometheus 能否抓取 target 的指标,用于 target 的健康检查up 这条语句会查出Prometheus抓取的所有target当前...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,748
精华内容 1,899
关键字:

以主键作为输入参数查出相关记录