zoukankan      html  css  js  c++  java
  • mysql语句

    更新表====================================================
        ADD COLUMN      给表增加新列
            例子:key_middle后增加新列
                >ALTER TABLE mysql_testdb.tablename0
                >ADD COLUMN new_key char(10) NOT NULL DEFAULT 0 AFTER key_middle;
            
        CHANGE COLUMN   修改表的名称或数据类型
            例子:new_key重命名及重设类型
                >ALTER TABLE mysql_testdb.tablename0
                >CHANGE COLUMN new_key key2 char(1) NULL DEFAULT 2;
            
        ALTER COLUMN    删除或修改指定默认值
            例子:key2修改默认值
                >ALTER TABLE mysql_testdb.tablename0
                >ALTER COLUMN key2 SET DEFAULT 3;
            
        MODIFY COLUMN   修改指定列数据类型
            例子:key2修改类型
                >ALTER TABLE mysql_testdb.tablename0
                >MODIFY COLUMN key2 char(20) FIRST;
            
        DROP COLUMN     删除
            例子:删除key2列
                >ALTER TABLE mysql_testdb.tablename0
                >DROP COLUMN key2;
                
            例子:删除表
                >DROP TABLE mysql_testdb.tablename0;
            
        RENAME TO       修改表名
            例子:将tablename0改名为tablename2
                >ALTER TABLE mysql_testdb.tablename0
                >RENAME TO mysql_testdb.tablename2;
                
            例子:多表改名
                >RENAME TABLE tablename0 TO tablename2
                >test_table TO tablename3;
            
        AFTER index_key 新列放在index_key后位置
        FIRST 新列为第一行
    
    
    查看表=======================================
        >SHOW TABLE tablename0;
        或
        >DESC mysql_testdb.tablename0;
        
    
    索引=========================================
        创建索引
            通用项:
                index_col_name : col_name[(length)][ASC|DESC]
                    col_name    索引列名
                    length      用前多少长度创建索引(有利于减小索引文件大小)
                    ASC|DESC    升序|降序(默认:升序)
                    
                UNIQUE      指定为唯一索引
                index_name  索引名
                tbl_name    索引表名
                CONSTRAINT  别名
                symbol      
                PRIMARY KEY 主键
                AUTO_INCREMENT 自增
                UNIQUE      唯一索引
                FOREIGN     外键
                
            (1)方法一,用于单独创建索引
                CREATE [UNIQUE] INDEX index_name ON tbl_name (index_col_name,...)
                    
                例子:根据name前三个字符创建一个升序索引
                    >CREATE INDEX index_name ON mysql_testdb.tablename0(name(3) ASC);
                    建立成功后,查看索引
                    >SHOW INDEX FROM mysql_testdb.tablename0
    
            (2)方法二,用于创建新表时候创建索引
                创建该表索引
                CREATE TABLE {INDEX|KEY} [index_name] (index_col_name,...)
                创建主键索引
                CREATE TABLE [CONSTRAINT[symbol]] PRIMARY KEY (index_col_name,...)
                创建唯一索引
                CREATE TABLE [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] (index_col_name,...)
                创建外键
                CREATE TABLE [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name,...)
                
                例子:id与book组成联合主键,count建立索引
                    >CREATE TABLE tablename4 
                    >(
                     >id int NOT NULL AUTO_INCREMENT  
                     >name char(20) NOT NULL
                     >age int(3) NULL
                     >book char(50) NULL
                     >count int(5) NULL
                     >PRIMARY KEY(id, book)
                     >INDEX index_tablename4_count(count);
                    >)
            
            (3)方法三,修改表的同时创建索引
                添加索引
                ALTER TABLE ADD {INDEX|KEY} [index_name] (index_col_name,...)
                添加主键
                ALTER TABLE ADD [CONSTRAINT[symbol]] PRIMARY KEY (index_col_name,...)
                添加唯一索引
                ALTER TABLE ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] (index_col_name,...)
                添加外键
                ALTER TABLE ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name,...)
                
                例子:name添加非唯一索引
                    >ALTER TABLE tablename4
                    >ADD INDEX index_tablename4_name(name);
                
        查看索引:
            SHOW {INDEX|INDEXS|KEY} {FROM|IN} tablename [{FROM|IN} db_name] [WHERE expr]
    
        删除索引:
            DROP INDEX index_name on tablename
            ALTER TABLE DROP {INDEX|PRIMARY KEY|FOREIGN KEY}
            
    查询:
        SELECT [ALL|DISINCT|DISTINCTROW] select_expr [,select_expr,...]
        FROM tablename 
        [WHILE where_condition]
        [GROUP BY {col_name|expr|position} [ASC|DESC],...[WITH ROLLUP]
        [HAVING where_condition]
        [ORDER BY {col_name|expr|position} [ASC|DESC]]
        [LIMIT {[offset,] row_count|row_count OFFSET offset}]
        
            SELECT      要返回的列          ALL|DISINCT|DISTINC TROW     是否返回结果集中的重复行
            FROM        从中检索的数据表    
            WHERE       行级过滤
            GROUP BY    分组说明
            HAVING      组级过滤
            ORDER BY    输出排序顺序
            LIMIT       要检索的行数
            
            select_expr 指定查询内容(可表示一个常量/变量/表达式)
        
        单表查询:
            例子:(1)查询tablename4中name,age,book信息
                        >SELECT name,age,book FROM mysql_testdb.tablename4;
                
                  (2)查询全部信息
                        >SELECT * FROM mysql_testdb.tablename4
                        
                  (3)查询结果,判断并取别名
                        >SELECT name,
                        >CASE WHERE sex='M' THIN '男'
                        >ELSE '女'
                        >END AS 性别
                        >FROM mysql_testdb.tablename4;
                        
                  (4)将查询结果计算
                        >SELECT name,sex,age+100 FROM mysql_testdb.tablename4;
                    
        多表查询:
            交叉连接(笛卡儿积)
                例子:得到tb1和tb2的数据
                        >SELECT * FROM tb1 CROSS JOIN tb2 
                        或者 >SELECT * FROM tb1,tb2)
                        
            内链接
                SELECT select_expr FROM tb1 INNER JOIN tb2 ON conditions;
                
                conditions      [tb1.]col_name [运算符] [tb2.]col_name
                例子:查询每一个学生及选课信息(等值连接)
                    >SELECT * FROM tb_student INNER JOIN tb_score
                    >ON tb_student.studentID = tb_score.studentID;
                    
            外连接
            
                左外连接(一对多):
                    LEFT OUTER JOIN 或者 LEFT JOIN
                    左边表为基表,右边为参数表
                    
                    例子:获取表一关于表二的对应的详细数据
                        >SELECT * FROM tb1 LETF JOIN tb2 ON tb1.studentID = ON tb2.studentID
                右外连接:
                    RIGHT OUTER JOIN 或者 RIGHT JOIN
                    右边为基表,左边为参数表
                    
    
        WHERE查询
            (1)比较查询(<=>)
            (2)判断查询(BETWEEN...AND 和 IN)
                >SELECT * FROM mysql_testdb.tb1 WHERE id BETWEEN 100 AND 200; 返回id为100到200间的行
                >SELECT * FROM mysql_testdb.tb1 WHERE id IN (101,156,234); 返回id为101,156,234的行
            (3)判断空值(IS)
                >SELECT * FROM mysql_testdb.tb1 WHERE age IS NULL; 返回所有age为空值的行
        
            子表查询
                例子:获取tb_student对应的tb_score成绩信息大于80分的学生
                    >SELECT studentID,studentNAME 
                    >FROM tb_student 
                    >WHERE studentID IN (SELECT studentID FROM tb_score WHERE score>80);
                    
        分组:
            GROUP BY {col_name|expr|position}[ASC|DESC],...[WITH ROLLUP]
                col_name        分组选择列,可多个列,逗号分隔
                expr            分组表达式("COUNT(*)AS '人数'")
                position        正整数,第几列意思
                WITH ROLLUP     汇总作用
                
            例子:(1)每个相同地址的男性人数,女性人数
                        >SELECT address,sex,COUNT(*)AS '人数' FROM mysql_testdb.tb1
                        >GROUP BY address,sex;
                        结果:
                        address sex 人数
                        北京    F     1
                        上海    M     4
                        武汉    F     1
                        武汉    M     2
                        
                    (1)每个相同地址的男性人数,女性人数,地区总人数,总人数
                        >SELECT address,sex,COUNT(*)AS '人数' FROM mysql_testdb.tb1
                        >GROUP BY address,sex
                        >WITH ROLLUP;
                        结果:
                        address sex     人数
                        北京    F         1
                        北京    NULL      1
                        上海    M         4
                        上海    NULL      4
                        武汉    F         1
                        武汉    M         2
                        武汉    NULL      3(地区总人数)
                        NULL    NULL      8(总人数)
            
            HAVING where_condition 用于过滤组
                例子:地区中少于3人的所有客户姓名及地址
                >SELECT name,address FROM mysql_testdb.tb1
                >GROUP BY address,name
                >HAVING COUNT(*)<=3;
                结果:
                name    address
                小黄    北京
                小白    武汉
                小红    武汉
                小绿    武汉
                
        排序
            ORDER BY {col_name|expr|position}[ASC|DESC],...
            例子:
                >SELECT name,sex FROM mysql_testdb.tb1
                >ORDER BY name DESC ,address DESC;
                
            (1)空值默认最小值(2)多个列时,从左到右排序
            
        限制
            LIMIT {[offset,]count|count OFFSET offset}
            例子:从第5行开始的连续三位
                (1)
                >SELECT id,name FROM mysql_testdb.tb1 
                >ORDER BY id LIMIT 3 OFFSET 4;
                (2)
                >SELECT id,name FROM mysql_testdb.tb1 
                >ORDER BY id LIMIT 4,3;
                
            
    

      

  • 相关阅读:
    zoj 2406 Specialized FourDigit Numbers
    hdu 1016 Prime Ring Problem(深度优先搜索)
    【ObjectiveC】08self关键字
    【ObjectiveC】09空指针和野指针
    【零基础学习iOS开发】【01前言】01开篇
    【零基础学习iOS开发】【01前言】03前景和难易度分析
    多线程编程1NSThread
    【零基础学习iOS开发】【02C语言】02第一个C语言程序
    多线程编程2NSOperation
    【零基础学习iOS开发】【01前言】02准备
  • 原文地址:https://www.cnblogs.com/7134g/p/11516797.html
Copyright © 2011-2022 走看看