zoukankan      html  css  js  c++  java
  • 我爱Java系列---【mysql基础&约束】

    SQL语句分类

    数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键
    字:create,alter,drop等
    数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键
    字:insert,delete,update等
    数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用
    户。
    数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,
    from,where等

    SQL通用语法

    SQL语句可以单行或多行书写,以分号结尾
    可使用空格和缩进来增强语句的可读性
    MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
    例如:SELECT * FROM user。
    同样可以使用/**/的方式完成注释
    常使用的数据类型:

    类型名称   说明
    int(integer) 整数类型
    double 小数类型
    decimal(m,d) 指定整数位与小数位长度的小数类型
    date 日期类型,格式为yyyy-MM-dd,包含年月日,不包含时分秒
    datetime 日期类型,格式为 YYYY-MM-DD HH:MM:SS,包含年月日时分秒
    timestamp 日期类型,时间戳
    varchar(M) 文本类型, M为0~65535之间的整数




    DDL之数据库操作:database
       

    /*

        1.创建数据库
        2.使用数据库
        3.查看某个数据库的定义的信息
        4.查看所有数据库
        5.查看正在使用的数据库
        6.删除数据库
    */
    #    1.创建数据库(两种方式)
                    CREATE DATABASE day01;#未指定编码表,系统默认utf8
                     CREATE DATABASE day011 CHARACTER SET gbk;#自己指定编码表gbk

                   
    #    2.使用数据库
           SELECT DATABASE ();#查看当前使用的数据库
            USE day011;#切换数据库

            
    #    3.查看某个数据库的定义的信息
           SHOW CREATE DATABASE day01;
            
    #    4.查看所有数据库

            SHOW DATABASES;

    #    5.查看正在使用的数据库
           SELECT DATABASE();

    #    6.删除数据库
            DROP DATABASE day01;

    DDL之表操作:table

    /*
    创建表
    格式:
         create table 表名(
             字段名1 类型(长度) 约束,
             字段名2 类型(长度) 约束,
             字段名3 类型(长度) 约束        #最后一个字段后面不用写逗号           
         );
         约束: 就是给某个字段/列的取值添加限制
        比如: 某个列的取值不能重复(唯一),不能为空(非空)
         主键:    作为主键的字段的取值不能重复(唯一),不能为空(非空)
         主键约束: 被作为主键的字段,添加主键约束后,该字段则不能重复(唯一),不能为空(非空)
         一般情况下使用id(编号)作为主键,不能使用具有业务意义的字段作为主键
           
         如何添加主键约束?
             在定义表结构时,作为主键的字段后面 + primary key
            
         注意:
             如果主键的类型为int,可以设置主键自动增长,这样mysql负责维护主键的值,
             添加数据时,不用指定主键的值了
            主键添加自动增长:
             在定义表结构时,作为主键的字段后面 + primary key auto_increment;
             不能设置每次增长多少,但是可以设置主键的值从几开始
            ALTER TABLE 数据库表名 AUTO_INCREMENT=数据值;
         练习:
             创建student表格
            编号: sid    int
             姓名: sname    varchar(200)
             性别: sgender varchar(10)
             年龄: sage int
    */
    #新建数据库
    CREATE DATABASE day02;
    #切换数据库
    USE day02;
    #查看当前数据库
    SELECT DATABASE ();
    DROP DATABASE day02;

    #新建数据库
    CREATE DATABASE day02;

    #查看数据库中的所有表

            use day02;
             show tables;

    #创建student表
    CREATE TABLE student(
    sid INT,
    sname VARCHAR(200),
    sgender VARCHAR(10),
    sage INT
    );

    #创建分类表catgory
    #没有指定主键约束,添加数据时,id可以重复,可以为空
    CREATE TABLE category(
         cid INT,
         cname VARCHAR(100)
    );

    #删除表
    DROP TABLE category;
    #创建分类表category
    #已经添加主键约束,cid不能重复(唯一),不能为空(非空)
    CREATE TABLE category(
         cid INT PRIMARY KEY,
         cname VARCHAR(100)
    );

    #删除表

    DROP TABLE student;
    #创建分类表category
    #已经添加主键约束,主键自动增长

    CREATE TABLE category(
         cid INT PRIMARY KEY AUTO_INCREMENT,
         cname VARCHAR(100)
    );

    #设置主键从200开始
    ALTER TABLE category AUTO_INCREMENT = 200

    SELECT * FROM category;#查询category中所有的字段

    /*
         查看和删除数据库表
         1.查看数据库中的所有表
         2.查看表结构
         3.删除表
    */
    USE day17;
    #1.查看数据库中所有的表
    SHOW TABLES;
    #2.查看表结构
    DESC product;
    #3.删除表
    DROP TABLE product;

    #修改表结构

    CREATE DATABASE day17;
    CREATE TABLE product(
    cid INT PRIMARY KEY,
    cname VARCHAR (100),
    price INT
    );
    #修改表结构
    #1.修改表添加列
    #alter table 表名    add 列名 类型(长度) 约束;
    ALTER TABLE product ADD bianhao INT ;

    #2.修改表修改列的类型长度及约束
    #alter table 表名 modify 列名 类型(长度) 约束;
    ALTER TABLE product MODIFY cid INT AUTO_INCREMENT;
    INSERT INTO product VALUES (1,'mm',18,01);

    #3.修改表修改列名
    #alter table 表名 change 旧列名 新列名 类型(长度) 约束;
    ALTER TABLE product CHANGE bianhao bian VARCHAR (23);

    #4.修改表删除列
    #alter table 表名 drop 列名;
    ALTER TABLE product DROP bian;

    #5.修改表名
    #rename table 旧表名 to 新表名;
    RENAME TABLE product TO s;
    RENAME TABLE  s TO product;

    #6.修改表的字符集
    #alter table 表名 character set 编码表;
    ALTER TABLE product CHARACTER SET gbk;
    ALTER TABLE product CHARACTER SET utf8;

    /*
    添加数据的三种方式
         格式:
         insert into 表名(字段1,字段2...) values(值1,值2...);       
            
         注意:
             字段的值如果是varchar类型,可以使用单引/双引,
             但是建议用单引
    */
    #1.全列名添加
    INSERT INTO product(cid, cname,price)VALUES(5,'音频',10);
    #2.全列值添加
    INSERT INTO product VALUES (6,'化妆品',21);
    #3.指定列值在表中添加新的一行 主键自动增长,mysql帮助维护,添加数据时,可以不用写
    INSERT INTO product (price) VALUES (11);
    #注意: 如果不指定字段,values中需要写null,为主键占一个位置,在末尾会创建一行新的记录
    INSERT INTO product VALUES(NULL,NULL,23);
    #以上方式都可以使用批量添加
    INSERT INTO product(cid,cname,price)
    VALUES(10,'床上用品',21),(11,'汽车用品',14);
    INSERT INTO product VALUES(12,'书籍',100),(13,'电器',34);
    INSERT INTO product(cname) VALUES('辣条'),('肉制品');
    INSERT INTO product VALUES(NULL,NULL,90),(NULL,NULL,80),(NULL,NULL,70);
    SELECT * FROM product;

    /*
    修改数据
         格式:
         update 表名 set 字段名1=值1,字段名2=值2... where 条件;
         update category set cname='饮品';#表中的cname的值全部变为 '饮品'
            
         java        mysql
         >        >
         >=        >=
         <        <
         <=        <=
         ==        =
         !=        != 或者 <>
         &&        and
         ||        or
         !        not
    */
    #把id为7的记录cname改为'服饰'
    UPDATE product SET cname = '服饰' WHERE cid=7;
    #把id是偶数的记录cname改为'服饰'
    UPDATE product SET cname = '服饰' WHERE cid%2=0;
    #把id为7并且cname为'服饰'的记录cname改为'体育用品'
    UPDATE product SET cname ='体育用品' WHERE cid = 7 AND cname = '服饰';
    #把id为1或者cname为'食品'的记录cname改为'汽车用品'
    UPDATE product SET cname = '汽车用品'WHERE cid=1 OR cname ='食品';

    /*
    删除表数据
         格式:   
             delete from 表名 where 条件;#不写条件,删除表中的所有记录
            
             delete和truncate的区别?
            
             delete: 删除表的所有数据,会记录id的最大值
             TRUNCATE: 删除表的所有数据,先摧毁整个表结构,重新创建,
                 不会记录id的最大值,id从新开始
    */
    #删除id为7的记录
    DELETE FROM product WHERE cid=7;
    #删除id是偶数的记录
    DELETE FROM product WHERE cid%2=0;
    #删除id为1或者cname为‘汽车用品’
    DELETE FROM product WHERE cid=1 OR cname ='汽车用品';
    #删除表中的所有数据
    DELETE FROM product ;
    #注意:cid:从上次记录的最大值+1开始
    INSERT INTO product (cname) VALUES ('饮品');
    TRUNCATE TABLE product;#删除表中的所有数据

    /*
    主键约束: 唯一,非空
         一个表只能有一个主键    
    */
    #添加主键约束的三种方式
    #1.在定义表结构时,作为主键的字段后面+primary key
    CREATE TABLE chanpina(
    cid INT PRIMARY KEY ,
    cname VARCHAR(100)
    );

    /*2.在定义表结构时,已经指定了所有的字段,
       在最后使用constraint关键字,添加主键约束
    格式:
             [constraint 主键约束名称] primary key(作为主键的字段名称)
             注意:
                 []里面的内容是可以省略的,如果要写,不能写[]
                 []: 代表的是,里面的内容,作为可选项
    */
    DELETE TABLE chanpin;
    CREATE TABLE chanpinb(
    cid INT ,
    cname VARCHAR(100),
    CONSTRAINT pk_cid PRIMARY KEY(cid)

    );
    /*
    3.在定义完毕表结构后,通过修改表结构方式
    格式:
         alter table 表名 add [constraint 主键约束名称] primary key(作为主键的字段名称)
         注意:
             []里面的内容是可以省略的,如果要写,不能只写个[]
             []: 代表的是,里面的内容,作为可选项
    */

    #创建分类表chanpind
    CREATE    TABLE chanpind(
         cid INT,
         cname VARCHAR(100)
    );

    ALTER TABLE chanpind ADD CONSTRAINT fk_cid PRIMARY KEY(cid);

    /*
    删除主键约束:
    格式:
    alter table 表名 drop primary key;
    */
    ALTER TABLE chanpind DROP PRIMARY KEY;
    DESC chanpind;

    /*
    非空约束: not null
         可以有多个
    */
    /*
    创建car表
    id int 编号
    color varchar(100) 颜色
    brand varchar(100) 品牌
    price int 价格
    */
    CREATE TABLE car(
    id INT PRIMARY KEY AUTO_INCREMENT,
    color VARCHAR (100),
    brand VARCHAR(100),
    price INT
    );
    #以上的color,brand,price 没有非空约束
    #添加非空约束的两种方式
    #1.定义表结构时,字段名后面+not null
    DROP TABLE car;
    CREATE TABLE car (
         id INT PRIMARY KEY AUTO_INCREMENT,
         color VARCHAR(100) NOT NULL,
         brand VARCHAR(100) NOT NULL,
         price INT
    );

    #2.通过修改表结构的方式:ALTER TABLE 表名 MODIFY 字段名 类型(长度) 约束
    ALTER TABLE car MODIFY price INT NOT NULL;

    #注意:取消非空约束
    ALTER TABLE car MODIFY price INT ;
    DESC car;

    /*
    唯一约束: unique
         一个表可以有多个    
    */

    #添加唯一约束的三种方式:
    #1.在定义表结构时,作为唯一约束的字段后面+unique
    #删除表
    DROP TABLE car;
    #创建分类表car
    CREATE TABLE car (
    cid INT PRIMARY KEY AUTO_INCREMENT ,
    cname VARCHAR (100) UNIQUE
    );

    #2.在定义表结构时,已经指定了所有的字段,在最后使用constraint关键字,添加唯一约束
    /*格式:
         [constraint 唯一约束名称] unique(作为唯一的字段名称)
         注意:
             []里面的内容是可以省略的,如果要写,不能写[]
             []: 代表的是,里面的内容,作为可选项
    */
    #删除表
    DROP TABLE car;
    #创建分类表car
    CREATE TABLE car (
    cid INT PRIMARY KEY AUTO_INCREMENT ,
    cname VARCHAR (100) ,
    CONSTRAINT un_cname UNIQUE (cname)
    );

    #3.在定义完毕表结构后,通过修改表结构方式
    /*格式:
             alter table 表名 add [constraint 唯一约束名称] unique(作为唯一约束的字段名称)
             注意:
                 []里面的内容是可以省略的,如果要写,不能写[]
                 []: 代表的是,里面的内容,作为可选项
    */
    #删除表
    DROP TABLE car;
    #创建分类表category
    CREATE    TABLE car(
         cid INT,
         cname VARCHAR(100)
    );
    #通过修改表结构方式,添加唯一约束
    ALTER TABLE car ADD CONSTRAINT qun_cname UNIQUE(cname);
    #删除唯一约束的两种方式
    /*1.删除唯一约束:
         格式:
         alter table 表名 drop index 字段名或者唯一约束名;
         如果指定了唯一约束名称,则必须通过唯一约束名称,来删除唯一约束
    */
    ALTER TABLE car DROP INDEX qun_cname ;

    /*2.删除唯一约束:
         格式:
         alter table 表名 drop index 字段名或者唯一约束名;
         如果没有指定唯一约束名称,则必须通过字段名称删除唯一约束
    */
    #给cname添加唯一约束
    ALTER TABLE car ADD CONSTRAINT UNIQUE (cname);
    #通过字段名,删除该字段上具有的唯一约束
    ALTER TABLE car DROP INDEX cname;


    愿你走出半生,归来仍是少年!
  • 相关阅读:
    十六.jQuery源码解析之Sizzle设计思路.htm
    关于微信浏览不能URL传参,URL中的问号被删除
    websocket 通信协议
    java_httpservice
    Socket.Io 做个标记 下来了解下
    通过netty实现服务端与客户端的长连接通讯,及心跳检测。
    NETTY 编码器介绍
    Netty4.0学习教程
    FORM表单不刷新提交POST数据
    Linux0.11学习
  • 原文地址:https://www.cnblogs.com/hujunwei/p/10833429.html
Copyright © 2011-2022 走看看