/* 创建表 格式: 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;
|