| /*创建表
 格式:
 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(作为主键的字段名称)
 注意:
 []里面的内容是可以省略的,如果要写,不能只写个[]
 []: 代表的是,里面的内容,作为可选项
 */
 #创建分类表chanpindCREATE    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;
   
 |