您的位置:首页 > 数据库 > MySQL

Mysql表结构操作,crud操作

2016-07-03 11:54 267 查看
一 表操作

    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不支持

   
4000
   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='张三')             

              
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: