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;
                
            
    

      

  • 相关阅读:
    (双指针 二分) leetcode 167. Two Sum II
    (双指针) leetcode 485. Max Consecutive Ones
    (双指针) leetcode 27. Remove Element
    (String) leetcode 67. Add Binary
    (数组) leetcode 66. Plus One
    (N叉树 BFS) leetcode429. N-ary Tree Level Order Traversal
    (N叉树 递归) leetcode 590. N-ary Tree Postorder Traversal
    (N叉树 递归) leetcode589. N-ary Tree Preorder Traversal
    (N叉树 DFS 递归 BFS) leetcode 559. Maximum Depth of N-ary Tree
    (BST 递归) leetcode98. Validate Binary Search Tree
  • 原文地址:https://www.cnblogs.com/7134g/p/11516797.html
Copyright © 2011-2022 走看看