一天学会My SQL
1 基本操作
1.1 登录与退出数据库
打开 cmd 输入命令
mysql -uroot -p123456
退出 以下三种命令
\q
quit
exit
1.2 三种命令状态
-> 当前命令为等待确认状态
'> 输入的命令缺少单引号
"> 输入的命令缺少双引号
1.3 查询数据库命令
show databases;
2 表的操作
2.1 基本概念
记录 元组 就是一行
字段 一列就是一个字段
每个字段是一个属性
每个字段都有相应的描述信息:字段名/数据类型/数据宽度/数值型数据的小数位
2.2 创建表的语句
创建表的过程就是创建表名和字段的过程
Creat table 表名(
属性名 数据类型 [约束条件],
属性名 数据类型 [约束条件],
属性名 数据类型 [约束条件]
)
约束条件可选
最后一个属性没有逗号
2.2.1 【实例】创建第一张表 student
务必要在某库下创建,否则报错1406
要求字段:姓名、学号、性别、年龄
2.3 查询表
SELECT * FROM student;
3 MySQL数据类型
3.1 数值型
类型
大小
范围(有符号)
范围(无符号)
用途
TINYINT
1 byte
(-128,127)
(0,255)
小整数值
SMALLINT
2 bytes
(-32 768,32 767)
(0,65 535)
大整数值
MEDIUMINT
3 bytes
(-8 388 608,8 388 607)
(0,16 777 215)
大整数值
INT或INTEGER
4 bytes
(-2 147 483 648,2 147 483 647)
(0,4 294 967 295)
大整数值
BIGINT
8 bytes
(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)
(0,18 446 744 073 709 551 615)
极大整数值
FLOAT
4 bytes
(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
0,(1.175 494 351 E-38,3.402 823 466 E+38)
单精度 浮点数值
DOUBLE
8 bytes
(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
双精度 浮点数值
DECIMAL
对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2
依赖于M和D的值
依赖于M和D的值
小数值
3.2 时间、日期
类型
大小 ( bytes)
范围
格式
用途
DATE
3
1000-01-01/9999-12-31
YYYY-MM-DD
日期值
TIME
3
'-838:59:59'/'838:59:59'
HH:MM:SS
时间值或持续时间
YEAR
1
1901/2155
YYYY
年份值
DATETIME
8
1000-01-01 00:00:00/9999-12-31 23:59:59
YYYY-MM-DD HH:MM:SS
混合日期和时间值
TIMESTAMP
4
1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07
YYYYMMDD HHMMSS
混合日期和时间值,时间戳
3.3 字符串
类型
大小
用途
CHAR
0-255 bytes
定长字符串
VARCHAR
0-65535 bytes
变长字符串
TINYBLOB
0-255 bytes
不超过 255 个字符的二进制字符串
TINYTEXT
0-255 bytes
短文本字符串
BLOB
0-65 535 bytes
二进制形式的长文本数据
TEXT
0-65 535 bytes
长文本数据
MEDIUMBLOB
0-16 777 215 bytes
二进制形式的中等长度文本数据
MEDIUMTEXT
0-16 777 215 bytes
中等长度文本数据
LONGBLOB
0-4 294 967 295 bytes
二进制形式的极大文本数据
LONGTEXT
0-4 294 967 295 bytes
极大文本数据
用法:
4 数据完整性
数据完整性是指存储在数据库中的数据应该保持准确性和可靠性。如果出现学号相同的数据是不准确的。
完整性
实施对象
实体完整性
行
关系中的记录唯一性、定义表中所有行能唯一的标识、主属性不能为NULL且不能有相同值、一般用主键、唯一索引、unique关键字实现
域完整性
列
参照完整性
表
自定义完整性
/
4.1 实体完整性
4.1.1 主键约束(非NULL)
主关键字(primary key)就是主键,它是表中的一个或多个字段,它是值用于唯一表示某条记录
创建表时指定主键
案例:
创建student表,主键为学号
手动方式:
在navicat的设计表中,右击目标字段,点击主键
代码方式
案例如下
CREATE TABLE student
(
id INT(10) PRIMARY KEY, //这里的primary key后缀就是指定该字段为主键
sname VARCHAR(5)
);
4.1.1 修改主键约束
通过ALTER语句可以实现对表的主键约束修改
4.1.1.1 增

方式一 ADD
ALTER TABLE t_user ADDPRIMARY KEY(user_id);
方式二 ADD CONSTRAINT PK_ID
ALTER TABLE t_user
ADD CONSTRAINT PK_ID PRIMARY KEY(user_id);
方式三 MODIFY
ALTER TABLE t_user MODIFY user_id INT(10) PRIMARY_KEY
4.1.1.2 删
DROP关键字
ALTER TABLE t_user DROP PRIMARY KEY;
4.1.2 唯一约束(可NULL)
用来限制不受主键约束,但是仍需要限制唯一性的字段,一个表可以有多个唯一约束
唯一约束的作用对象可以是单一字段,也可以是多个字段组合
唯一约束名称默认和字段名相同
MySQL会给唯一约束的字段默认创建唯一索引
4.1.2.1 创建唯一约束
4.1.2.1.1 自定义约束名
使用constarint关键字
4.1.2.1.2 组合唯一约束
unique(A,B)可对AB进行添加组合唯一约束
constarint uk_name_pwd unique(username,passwrod)
以上代码段是使用constarint关键字对username和password添加名为uk_name_pwd的组合唯一约束
4.1.2.1.3 创建唯一约束实例
给teach的id添加非空约束
给teach的username和password添加名为uk_name_pwd的组合唯一约束
建表完成后给id添加主键约束
CREATE TABLE teach
(
id INT NOT NULL,
username VARCHAR(10),
password VARCHAR(16),
CONSTARINT uk_name_pwd UNIQUE(username,password)
);
ALTER TABLE teach ADD PRIMARY KEY(id);
4.1.2.1.4 添加唯一约束
alter table temp add unique(name,id);
or
alter table temp modify name varchar(25) unique;
4.1.2.1.4 删除约束
alter table temp drop index name;