目   录

04-如何创建 数据库、数据表?

0、MySQL注释的3种写法(-- ...、#...、/*...*/)

“-- ”   这种注释后面,要加一个空格!!!

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键

1、如何在数据库服务器中创建自己的数据库?  (create database 数据库名;)

create database 数据库名;

mysql 增加联合主键 mysql建立联合主键_字符串_02

2、选中某一数据库(use 数据库名;)

use 数据库名;

3、查看数据库中的所有数据表(show tables;)

show tables;

刚创建的数据库(test)中,没有任何数据表!

mysql 增加联合主键 mysql建立联合主键_字符串_03

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。

下面的表显示了需要的每个整数类型的存储和范围。

mysql 增加联合主键 mysql建立联合主键_主键_04

create table testType(number TINYINT);
show tables;
describe testType;
SELECT * FROM testType;
INSERT INTO testType VALUES(128);

mysql 增加联合主键 mysql建立联合主键_字段_05

mysql 增加联合主键 mysql建立联合主键_字段_06

1.2、日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

mysql 增加联合主键 mysql建立联合主键_主键_07

1.3、字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

该节描述了这些类型如何工作以及如何在查询中使用这些类型。

mysql 增加联合主键 mysql建立联合主键_字符串_08

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);

mysql 增加联合主键 mysql建立联合主键_字段_09

2、查看数据(SELECT)

select * from pet;

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键_10

3、删除数据(DELETE)

DELETE FROM tablesName WHRER 条件;

delete from pet where name='名字';

mysql 增加联合主键 mysql建立联合主键_字符串_11

4、修改数据(UPDATE)

UPDATE tableName SET 字段1=值1,字段2=值2 ... WHERE 条件;

update pet set name='旺旺财' where owner='保安李大爷';

mysql 增加联合主键 mysql建立联合主键_字段_12

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)
);

mysql 增加联合主键 mysql建立联合主键_字段_13

describe user;   ----->   id是不可以为null,且 key的值变为PRI(primary) !

INSERT INTO user VALUES (1, '张三');

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键_14

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键_15

主键不能为空!

09-约束-主键约束-联合主键

1、联合主键

CREATE TABLE user2(
id INT,
name VARCHAR(20),
password VARCHAR(20),
PRIMARY key(id,name)
);
INSERT INTO user2 VALUES (1,'老王','123456');

联合主键只要所有的字段都不是相同的情况下,可以允许其中的字段重复。

mysql 增加联合主键 mysql建立联合主键_字段_16

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。

mysql 增加联合主键 mysql建立联合主键_字符串_17

11-约束-主键约束-建表后添加与删除

忘记 给表 添加 主键约束!-->修改表结构,添加主键!

删除表的主键约束!!!

CREATE TABLE user4(
id int,
name VARCHAR(20)
);

mysql 增加联合主键 mysql建立联合主键_主键_18

1、修改表结构,添加主键约束

alter table user4 add primary key(id);

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键_19

2、删除主键约束

alter table user4 drop primary key;

mysql 增加联合主键 mysql建立联合主键_主键_20

3、使用modify修改字段,添加主键约束

mysql 增加联合主键 mysql建立联合主键_字段_21

alter table user4 modify id int primary key;

mysql 增加联合主键 mysql建立联合主键_字段_22

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, '张三');

mysql 增加联合主键 mysql建立联合主键_主键_23

1.2、添加“唯一约束”方式②【建表时,添加-unique(name)】

create table user6(
id int,
name varchar(20),
unique(name)
);

mysql 增加联合主键 mysql建立联合主键_主键_24

1.3、添加“唯一约束”方式③【建表时,添加-name varchar(20) unique】

create table user7(
id int,
name varchar(20) unique
);

mysql 增加联合主键 mysql建立联合主键_字段_25

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, '张三');

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键_26

1.5、添加“唯一约束”方式⑤【建表时,添加-unique(id, name)】

alter table user7 modify name varchar(20) unique;

2、删除唯一约束(drop)

alter table user7 drop index name; /*name 是 字段名*/

mysql 增加联合主键 mysql建立联合主键_字段_27

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)中 包含了 唯一约束.

场景:业务需求(设计一张用户注册表,用户姓名必须要用手机号来注册,而且手机号和用户名称都不能为空。)

mysql 增加联合主键 mysql建立联合主键_主键_28

这样的话就达到了,每一个手机号都只能出现一次,达到了每个手机号只能被注册一次,

用户姓名可以重复,但是手机号码却不能重复,符合正常的逻辑需求。

非空约束(NOT NULL)

mysql 增加联合主键 mysql建立联合主键_主键_29

13-约束-非空约束-not_null

修饰的字段,不能为空。NULL

create table user9(
id int,
name varchar(20) not null
);
insert into user9 (id) values(1);

mysql 增加联合主键 mysql建立联合主键_字符串_30

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);

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键_31

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字段

);

mysql 增加联合主键 mysql建立联合主键_字段_32

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;

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键_33

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;

mysql 增加联合主键 mysql建立联合主键_mysql 增加联合主键_34

3、删除数据

1、主表(父表)中没有的数据值,在副表(子表)中,是不可以使用的。

2、主表中的记录被副表引用时,是不可以被删除的。

delete from classes where id=4;

mysql 增加联合主键 mysql建立联合主键_主键_35