目 录
04-如何创建 数据库、数据表?
0、MySQL注释的3种写法(-- ...、#...、/*...*/)
“-- ” 这种注释后面,要加一个空格!!!
1、如何在数据库服务器中创建自己的数据库? (create database 数据库名;)
create database 数据库名;
2、选中某一数据库(use 数据库名;)
use 数据库名;
3、查看数据库中的所有数据表(show tables;)
show tables;
刚创建的数据库(test)中,没有任何数据表!
create TABLE pet( #pet 数据表名
name VARCHAR(20), #name 数据字段,varchar 字符串数据类型
owner VARCHAR(20),
specise VARCHAR(20),
sex CHAR(1), #字符类型
brith DATE, #日期类型
death DATE
);
5、查看数据表是否创建成功?(show tables;)
show tables;
6、查看创建好的数据表的结构(describe 数据表名;)
describe 数据表名;
05-INSERT增加数据记录
1、查看数据表中的记录(select * from 数据表名;)
select * from 数据表名;
2、往数据表中添加数据记录(insert xxx)
2.1、INSERT方式①【VALUES(值1, 值2, ...)】
INSERT INTO pet VALUES('名字','主人名','品种','1','2000-01-01',null);
2.2、INSERT方式②【数据表名(数据表字段1, 字段2, ...)】
INSERT INTO pet(name, owner) VALUES ('xx', 'cc');
06-MySQL数据类型与类型选择
1、MySQL常用数据类型
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
1.1、数值类
MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),
以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。
下面的表显示了需要的每个整数类型的存储和范围。
create table testType(number TINYINT);
show tables;
describe testType;
SELECT * FROM testType;
INSERT INTO testType VALUES(128);
1.2、日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,将在后面描述。
1.3、字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
该节描述了这些类型如何工作以及如何在查询中使用这些类型。
2、注意
char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。
3、数据类型如何选择
日期:按照 格式 !
数值、字符串:按照 大小 !
07-数据记录增删改查操作
1、插入数据(INSERT)
INSERT INTO pet VALUES('kk1','cc1','dog1','1','1998-1-1',null);
INSERT INTO pet VALUES('kk2','cc2','dog2','2','1998-2-2',null);
INSERT INTO pet VALUES('kk3','cc3','dog3','1','1998-3-3','1998-12-2');
INSERT INTO pet VALUES('kk4','cc4','dog4','2','1998-4-4',null);
2、查看数据(SELECT)
select * from pet;
3、删除数据(DELETE)
DELETE FROM tablesName WHRER 条件;
delete from pet where name='名字';
4、修改数据(UPDATE)
UPDATE tableName SET 字段1=值1,字段2=值2 ... WHERE 条件;
update pet set name='旺旺财' where owner='保安李大爷';
5、总结
数据记录常见操作:
1、增加(INSERT) 2、删除(DELETE) 3、修改(UPDATE) 4、查询(SELECT)
08-约束-主键约束primary_key
1、MySQL建表约束
1.1、主键约束
1、主键约束;2、自增约束;3、外键约束;
4、唯一约束;5、非空约束;6、默认约束
它能够唯一确定一张表中的一条记录,通过给某个字段添加约束,可以使得该字段不重复而且不为空。
create table user(
id int PRIMARY KEY,
name VARCHAR(20)
);
describe user; -----> id是不可以为null,且 key的值变为PRI(primary) !
INSERT INTO user VALUES (1, '张三');
主键不能为空!
09-约束-主键约束-联合主键
1、联合主键
CREATE TABLE user2(
id INT,
name VARCHAR(20),
password VARCHAR(20),
PRIMARY key(id,name)
);
INSERT INTO user2 VALUES (1,'老王','123456');
联合主键只要所有的字段都不是相同的情况下,可以允许其中的字段重复。
10-约束-自增约束-auto_increment
1、自增约束
CREATE TABLE user3(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);
INSERT INTO user3(name) VALUES('霸刀宋壹');
INSERT INTO user3(name) VALUES('哒哒子前辈');
INSERT INTO user3(name) VALUES('天帝子前辈');
没有 定义id值,但是自动生成了id。
11-约束-主键约束-建表后添加与删除
忘记 给表 添加 主键约束!-->修改表结构,添加主键!
删除表的主键约束!!!
CREATE TABLE user4(
id int,
name VARCHAR(20)
);
1、修改表结构,添加主键约束
alter table user4 add primary key(id);
2、删除主键约束
alter table user4 drop primary key;
3、使用modify修改字段,添加主键约束
alter table user4 modify id int primary key;
12-约束-唯一约束-unique
约束修饰的字段的值不可以重复!
create table user5(
id int,
name varchar(20)
);
1、添加唯一约束的方式
1.1、添加“唯一约束”方式①【add unique(字段名)】
alter table user5 add unique(name);
insert into user5 values(1, '张三');
1.2、添加“唯一约束”方式②【建表时,添加-unique(name)】
create table user6(
id int,
name varchar(20),
unique(name)
);
1.3、添加“唯一约束”方式③【建表时,添加-name varchar(20) unique】
create table user7(
id int,
name varchar(20) unique
);
1.4、添加“唯一约束”方式④【建表时,添加-unique(id, name)】
unique(id, name):2个键在一起不重复,就可以 插入数据!
create table user8(
id int,
name varchar(20),
unique(id, name)
);
insert into user8 values(1, '张三');
1.5、添加“唯一约束”方式⑤【建表时,添加-unique(id, name)】
alter table user7 modify name varchar(20) unique;
2、删除唯一约束(drop)
alter table user7 drop index name; /*name 是 字段名*/
3、总结
1、建表的时候,添加约束;
2、可以 使用 alter、add
3、alter、modify
4、删除(alter、drop)
4、业务需求(用户注册表---综合实例)
CREATE TABLE user_test(
id INT PRIMARY KEY AUTO_INCREMENT COMMENT'主键id',
name VARCHAR(20) NOT NULL COMMENT'用户姓名,不能为空',
phone_number VARCHAR(20) UNIQUE NOT NULL COMMENT'用户手机,不能重复且不能为空'
);
主键约束(primary key)中 包含了 唯一约束.
场景:业务需求(设计一张用户注册表,用户姓名必须要用手机号来注册,而且手机号和用户名称都不能为空。)
这样的话就达到了,每一个手机号都只能出现一次,达到了每个手机号只能被注册一次,
用户姓名可以重复,但是手机号码却不能重复,符合正常的逻辑需求。
非空约束(NOT NULL)
13-约束-非空约束-not_null
修饰的字段,不能为空。NULL
create table user9(
id int,
name varchar(20) not null
);
insert into user9 (id) values(1);
14-约束-默认约束-default
当插入字段值的时候,如果没有传值,就会使用默认值。
create table user10(
id int,
name varchar(20),
age int default 10
);
insert into user10 (id, name) values(1, '张三');
insert into user10 values(1, '张三', 19);
15-约束-外键约束-foreign_key
设计到2个表:【父表、子表】(主表、副表)
副表要参照主表!
在副表中添加的数据,必须同样存在于主表。
1、主表(父表)中没有的数据值,在副表(子表)中,是不可以使用的。
2、主表中的记录被副表引用时,是不可以被删除的。
1、创建2个表(班级表、学生表)
1.1、班级表(主表)(classes)
-- 班级表
create table classes(
id int primary key,
name varchar(20)
);
1.2、学生表(副表)(students)
-- 学生表
create table students(
id int primary key,
name varchar(20),
class_id int ,-- 关联班级表id,字段的数据类型需要相同
foreign key(class_id) references classes(id)-- 绑定:指明class_id来自哪个表
-- class_id必须来自classes表的id字段
);
2、插入数据
2.1、在班级表(主表)中插入数据!
-- 在班级表中插入数据!
insert into classes values(1, '1班');
insert into classes values(2, '2班');
insert into classes values(3, '3班');
insert into classes values(4, '4班');
insert into classes values(5, '5班');
insert into classes values(6, '6班');
select * from classes;
2.2、在学生表(副表)中插入数据!
-- 在学生表中插入数据!
insert into students values(1001, '张三', 1);
insert into students values(1002, '张三', 2);
insert into students values(1003, '张三', 3);
insert into students values(1004, '张三', 4);
select * from students;
3、删除数据
1、主表(父表)中没有的数据值,在副表(子表)中,是不可以使用的。
2、主表中的记录被副表引用时,是不可以被删除的。
delete from classes where id=4;