• 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='张三')             
                  
  • 相关阅读:
    【JZOJ6409】困难的图论
    学习LCT小结
    jzoj5432. 【NOIP2017提高A组集训10.28】三元组
    jzoj6367. 【NOIP2019模拟2019.9.25】工厂(factory)
    jzoj6366. 【NOIP2019模拟2019.9.25】化学(chem)
    jzoj5433. 【NOIP2017提高A组集训10.28】图
    学习拓展中国剩余定理小结
    jzoj6300. Count
    jzoj3736. 【NOI2014模拟7.11】数学题
    jzoj6276. 【noip提高组模拟1】树
  • 原文地址:https://www.cnblogs.com/t0404/p/10291057.html
Copyright © 2020-2023  润新知