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='张三')             
                  
  • 相关阅读:
    多表联合查询,利用 concat 模糊搜索
    order by 中利用 case when 排序
    Quartz.NET 3.0.7 + MySql 动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一)
    ASP.NET Core 2.2 基础知识(十八) 托管和部署 概述
    ASP.NET Core 2.2 基础知识(十七) SignalR 一个极其简陋的聊天室
    ASP.NET Core 2.2 基础知识(十六) SignalR 概述
    ASP.NET Core 2.2 基础知识(十五) Swagger
    ASP.NET Core 2.2 基础知识(十四) WebAPI Action返回类型(未完待续)
    linux磁盘管理 磁盘查看操作
    linux磁盘管理 文件挂载
  • 原文地址:https://www.cnblogs.com/t0404/p/10291057.html
Copyright © 2011-2022 走看看