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;

转载于:https://www.cnblogs.com/hujunwei/p/10833429.html

我爱Java系列---【mysql基础约束】相关推荐

  1. 我爱Java系列---【 maven依赖版本冲突的解决方法】

    我爱Java系列---[ maven依赖版本冲突的解决方法] 参考文章: (1)我爱Java系列---[ maven依赖版本冲突的解决方法] (2)https://www.cnblogs.com/hu ...

  2. 我爱Java系列---【分页查询】

    一.需求 查询每个分类下的商品详情 二.实现步骤 菜单页面拼接超链接,传递商品分类主键 分类商品页面接收分类主键数据,向服务器发送AJAX请求 Servlet接收客户端分类主键的数据 调用业务层方法组 ...

  3. 10.MYSQL基础—约束(constraint)

    constraint约束:(重要) 常见的约束: 非空约束:not null         非空约束的字段不能为空:   只有列级约束,没有表级约束的写法: 唯一约束:unique          ...

  4. 我爱Java系列---【登录案例】

    一.登录案例分析 二.实施流程 1.创建数据库web01,用户表user 代码: CREATE DATABASE web01; USE web01; CREATE TABLE USER( uid IN ...

  5. java 鉴权_我爱java系列之---【JWT实现微服务鉴权(一)】

    JWT介绍 JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 一个JWT实际上就是一个字符串,它由三部分组成,头部.载荷与签 ...

  6. 数据库MySQL基础---约束、表关系、聚合函数、连接查询、分组查询和子查询

    约束 1.主键约束亦成为主码,关键字:primary key,设置了主键约束的列的数据要求:不能为空,不允许重复. 2.自增长策略针对主键,不需要手动给值,自动的值是当前表中该列最大值+1关键字:au ...

  7. java char数组查找_我爱java系列---【在字符数组中查询某个字符串是否存在】

    mysql中的FIND_IN_SET函数 需求:根据省份id,查询可以在该省份下发信息的通道id sql语句: SELECT cpa.CHANNEL_ID id FROM channel_price_ ...

  8. 我爱Java系列---【EL和JSTL】

    一.EL表达式 作用:主要就是用来代替JSP中的 <%= %> 这个标签的,他可以简单的用于输出语句 1.输出四大域对象中的内容 ${key} 这样就可以全域查找到四大域对象中的key变量 ...

  9. java:mysql基础语法

    一,基础操作 1,创建表 CREATE TABLE `customers` ( //设置customers_id为整数并为自增长`customers_id` INT(11) PRIMARY KEY A ...

最新文章

  1. 手把手教你用线性回归预测二手房房价
  2. LTE: 下行HARQ进程数目的来源。
  3. eye care staff
  4. sql server 2005 T-SQL @@TRANCOUNT (Transact-SQL)
  5. 什么才是真正的富贵?
  6. Django(part36)--cookies
  7. flume package遇到的问题
  8. javaWeb服务详解(含源代码,测试通过,注释) ——Dept的Service层
  9. leetcode 1442. 形成两个异或相等数组的三元组数目(位运算)
  10. c/c++,字符,字符串,各种方式读入与对空格,回车的处理
  11. 美国爆料:量子计算机将如何颠覆一切?
  12. [BZOJ3211] 花神游历各国 - 线段树
  13. oracle安装实验,Oracle之课程实验一(安装oracle)
  14. java套接字数据对不上,服务器不从多个客户端(Java套接字)接收数据
  15. python读取配置文件使用_如何使用Python3读取配置文件
  16. 恒生电子Java开发岗的面试题汇总
  17. 网络推广行业拓客的10个经典方法
  18. 爬虫之-bilibili视频下载-下载链接获取
  19. 绿幕换背景、绿幕视频实时换背景
  20. vue使用FullCalendar插件实现会议预约功能,个性化实现周视图

热门文章

  1. iPhoneX延迟这么久预订,真实原因连库克也没料到
  2. C++多态的实现原理
  3. 十字消源码分享(基于libgdx开发)
  4. 网络工程原理与实践教程实验安排
  5. 专访浪潮王虹莉 探互联网服务器市场的未来
  6. bootstrap-fileinput 应用
  7. 对于Wannacry“永恒之蓝”病毒 查看自己电脑是否安全
  8. 手动修改网卡接口模式从网桥变为路由
  9. JavaScript 要点(十四)HTML DOM 元素(节点)
  10. 怎么去大蒜味(一定要看拉) - 生活至上,美容至尚!