zoukankan      html  css  js  c++  java
  • Mysql表结构操作,crud操作

    一 表操作
        1>创建表
           1 create table [if not exists] test(id int);
           2 create table test as select * from t;
           3 select id,name into ctabl1 from ctable;--sqlserver支持
        2>修改表
           --修改表名
           ALTER TABLE chartable RENAME TO chartable1
           --修改表 新增列
           ALTER TABLE chartable ADD age INT;   
           --修改表的列类型
           ALTER TABLE chartable MODIFY age VARCHAR(20)
           --修改列名和列类型
          ALTER TABLE chartable CHANGE age age1 DATE;
        3>删除表
           drop table [if exists] test;       
    二 表约束
        1> not null
        2> unique
            --在创建表时指定
            DROP TABLE IF EXISTS checktest;
           CREATE TABLE IF NOT EXISTS checktest(
                   id INT PRIMARY KEY,
                   cardid VARCHAR(18) UNIQUE
           )
           --创建之后指定
           CREATE TABLE IF NOT EXISTS checktest(
                   id INT PRIMARY KEY,
                   cardid VARCHAR(18) 
           )
           alter table checktest add constraint ui_carid unique(carid)
           --删除唯一约束
           ALTER TABLE checktest DROP INDEX ui_carid
        3> primary key
            DROP TABLE IF EXISTS checktest;
            --在创建表时指定
           CREATE TABLE IF NOT EXISTS checktest(
               id INT PRIMARY KEY
           )
           --创建之后指定
           CREATE TABLE IF NOT EXISTS checktest(
               id INT
           )
           alter table checktest add primary key(id)
           --删除主键约束
           ALTER TABLE checktest DROP PRIMARY KEY
               
        4> check
            --5.5之前不支持check 约束  但是保留了check关键字
        5> foreign key
           --在创建表时指定
           CREATE TABLE arcticle(
               id INT PRIMARY KEY,
               title VARCHAR(20),
               content VARCHAR(20),
               userid INT REFERENCES userinfo(id)    
           )
          --创建之后指定
          alter table arcticle add foreign key(userid)    REFERENCES userinfo(id)    
          --删除外键
          alter table arcticle drop foreign key(userid)
          
        6> auto_increment
               CREATE TABLE userinfo(
                 id INT PRIMARY KEY AUTO_INCREMENT,
                 NAME VARCHAR(20)
              )
    三 表crud    【create,read,update,delete】
       1>插入
          insert into 表名(列1.。。列n) values(值1...值n)
       2>更改
          update 表名  set 列1=值1,。。。。列n=值n  where 条件
       3>删除
          delete from 表名  where 条件     
          truncate table 表名
       4>查询
          select 列名 [as ] 别名 from 表名 where 条件
          --多表联合查询
            /**笛卡尔积连接**/
           SELECT * FROM userinfo,arcticle
           /**内连接**/
            SELECT * FROM userinfo u INNER JOIN arcticle a ON u.id=a.userid
            /**左外连接**/
           SELECT * FROM userinfo u LEFT JOIN arcticle a ON u.id=a.userid
           /**右外连接**/
           SELECT * FROM userinfo u RIGHT JOIN arcticle a ON u.id=a.userid
           //全连接 mysql不支持
           SELECT * FROM userinfo u FULL JOIN  arcticle a ON u.id=a.userid
        --集合的操作    
             INTERSECT 交集
             union all  --不去重复
             union      --去重复
        --分组 排序
           
           --测试表
           CREATE TABLE `userinfo` (
             `id` INT(11) NOT NULL AUTO_INCREMENT,
             `name` VARCHAR(20) COLLATE utf8_bin DEFAULT NULL,
             `grade` INT(11) DEFAULT NULL,
             `score` INT(11) DEFAULT NULL,
             PRIMARY KEY (`id`)
           ) 
           
           CREATE TABLE `arcticle` (
             `id` int(11) NOT NULL AUTO_INCREMENT,
             `title` varchar(20) COLLATE utf8_bin DEFAULT NULL,
             `content` varchar(200) COLLATE utf8_bin DEFAULT NULL,
             `userid` int(11) DEFAULT NULL,
             PRIMARY KEY (`id`),
             KEY `F_USERINFO` (`userid`),
             CONSTRAINT `F_USERINFO` FOREIGN KEY (`userid`) REFERENCES `userinfo` (`id`)
           ) 
           
           /**查询分数最高的用户在哪个班级**/
           SELECT grade,MAX(score) FROM userinfo GROUP BY grade HAVING MAX(score)=(SELECT MAX(score) FROM userinfo) order by grade;     
       --子查询
          --表子查询
          SELECT * FROM (SELECT * FROM userinfo) t
          --列子查询
          SELECT title,(SELECT NAME FROM userinfo WHERE id=a.userid) FROM arcticle a;          
          --条件子查询
          SELECT * FROM arcticle WHERE userid=(SELECT id FROM userinfo WHERE NAME='张三')             
                  
  • 相关阅读:
    给 admin 新建的 hdfs 文件的权限
    linux 常用命令
    如何快速把hdfs数据动态导入到hive表
    Kylin查询性能低下原因分析
    hadoop+hive使用中遇到的问题汇总
    hadoop 突然断电数据丢失问题
    用puthivestreaming把hdfs里的数据流到hive表
    创建 kylin Module/Cube
    【MySQL】MySQL的索引
    【MySQL】MySQL的约束
  • 原文地址:https://www.cnblogs.com/t0404/p/10291057.html
Copyright © 2011-2022 走看看