首页 > 代码库 > MySQL复习1
MySQL复习1
数据库管理系统提供的功能
1,数据定义语言
2,数据操作语言
3,数据控制语言
sql:结构化查询语言
数据库对象:指存储,管理好实用数据库的不同结构形式。主要包括表,视图,存储过程,函数,触发器和事件等
创建数据库:语法:create datebase datebase_name
数据库名命名规则:字母,数字,下划线,@,#和$组成
MySQL支持的存储引擎有:ImoDb,MySAM,Memory,Merge,
查看存储引擎:show engines
查看对应的数据 show databases
打开数据库
登录数据库
删除数据库
drop database 数据库名;
用户操作:
创建用户:test1代表用户名 后面的test1代表用户密码 localhost代表主机名
删除用户:test07代表用户名,localhost代表主机名,可以用IP地址表示
给用户授权:grant 权限名称 on ‘数据库名‘ to ‘用户名‘@‘localhost‘;
收回用户权限: revoke 权限名 on 数据库名.表名 from ‘用户名’@‘主机名’
创建表
create table
数据库的常见操作
三建四句
建表,建库,建约束(create table,database,constraint)
增删改查(insert,delete,update,select)
a) 如何来创建表的
i. 表的概念
- 行(实体,记录)
- 列(域,字段)
- 单元格(数据)
a) 冗(rong)余:在数据库表中,出现重复的数据
i. 如何减少数据冗余:把一张表分解为几张表,然后进行关联
ii. 减少数据冗余的同时,增加了数据查找的复杂性。从而降低效率。
iii. 在数据库中,是允许有一定冗余
b) 数据的完整性
i. 不正确性(违反数据库的完整性)
ii. 不准确性(违反数据库的完整性)
iii. 数据完整性=正确性+准确性
iv. 可以通过约束来确保数据库的完整性
v. 完整性的分类
- 实体完整性
- 域完整性
- 引用完整性
- 自定义完整性
ii. 表的创建(table)
- 界面
a) 连接数据库
b) 打开数据库
c) 右键
d) 新建表
- 代码
a) 查看数据库中下所有的表格:show tables
b) 创建表
i. 语法:create table 表名(列名1 数据类型 约束条,列名2…)
c) 查看表结构
i. Desc 表名
d) 删除表(删除表结构)
i. Drop table 表名
e) 自动增长
i. Auto_increment
- 课堂小练习
a) 使用代码创建表(用户表:users):
b) 列有:
i. Id
ii. Username
iii. Password
iv. Sex
v. Age
vi. birthday
二.数据类型
a) 数值类型
i. 整数
- tinyintà(byte:-128~127)
- smallintà(short: -32768~32767)
- mediumintà
- int(integer)à(int:正负20亿左右)
- bigintà(long:)
ii. 小数
- 浮点型
a) float(4个字节: 正负3.402E+38)
b) double(8个字节: 正负 1.7E308)
- 定点型
a) decimal(M,D)
b) 范围与double类型一致
c) 精度更加精确
d) M:有效位数
e) D:小数点位数
b) 字符类型
i. char(M)
- M的范围是0~255
- 定长
- 如果某一列的数据,长度是固定不变的,则使用char类型,比如:性别,身份证号码
ii. varchar(M)
- M:0-65535
- 可变长度
- 对于某一列数据,如果长度可能会出现不一致,则使用varchar类型。
iii. Blob(lob:large object)
iv. text
v. enum类型(枚举类型)
- 值必须是枚举中的值(只能是一个)
- Enum(‘男’,’女’)
- 最多允许有65535个枚举
vi. set类型(集合类型)
- 值必须是集合中的值,但是可以有多个
- Set(‘a’,’b’,’c’,’d’)
- 最多允许64个成员
c) 日期时间类型
i. dateà日期:1000-01-01 9999-12-31
ii. timeà时间:-838:59:59 838:59:59
iii. datetimeà1000-01-01 00:00:00 9999-12-31 23:59:59
iv. timestampà19700101080001 2038
v. yearà
三.Mysql表结构的操作
四.Mysql约束
a) 非空约束 not null
b) 主键约束(primary key)
i. 一个表只允许有一个主键(可以没有主键)
- 主键可以分为:单个主键和组合主键
ii. 主键的列,必须满足两个要求
- 不能为空
- 唯一的(这一列,不允许出现相同的内容)
iii. 主键的选择规则
- 最少性
a) 选择最少的列作为主键(一列或两列)
- 稳定性
a) 这一列的值,一旦生成,就很少发生改变
i. 创建方式:
- 创建表的时候,通过列来指定
- 创建表的时候,使用primary key(列名)
- Constaint 约束名 primary key(列名)
- 表创建完成以后,使用修改表的方式来创建
b) 唯一约束
i. 创建方式
- 列的定义后面添加unique
- 在类定义完成以后,添加unique(列名)
- Constraint 约束名 unique(类名)
- Alter table 表名 add construction 约束名 unique(列名)
c) 默认值约束
i. 关键字
- Default
- ALTER TABLE `users`
MODIFY COLUMN `password` varchar(20) NOT NULL DEFAULT ‘123456‘
d) 外键约束
i. 外键引用(引用完整性)
ii. ALTER TABLE `orders` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);
iii. 如何确定外键
- 先有:主表
- 后有:从表
- 外键是创建在从表中
iv. ER图
- Entity:实体
- Relation:关系
- ER图:实体关系图
e) 检查约束:在mysql中,可以指定检查约束,但是没效果
f) 约束的常见的前缀的名称
i. PKà主键
ii. FKà外键
iii. CKà检查约束
iv. DFà默认值约束
v. UQà唯一约束
二.Mysql自动增长
三.总结:
a) 表的创建(重点)
i. 界面
ii. 代码
b) 数据类型(重点)
i. 数值类型
- 整数:int
- 小数:decimal(M,D)
ii. 字符类型
- Char(n),varchar(n)区别
- Enum(),set()
iii. 日期时间类型
- Date,time,datetime
c) 完整性约束
i. 实体完整性
ii. 域完整性
iii. 引用完整性(难点)
create table Stu
(
StudentNo varchar(50) not null,
LoginPwd varchar(20) not null default‘123456‘,
StudentName varchar(50) not null,
Sex char(2) not null,
gradeld int not null,
Phone varchar(255) not null,
Adress varchar(255) not default‘学生宿舍‘,
Borndate datatime null,
Email varchar(50) null,
PRIMARY KEY (`StudentNo`)
);
#创建学生表
create table Stu
(
StudentNo varchar(50) not null,
LoginPwd varchar(20) not null default‘123456‘,
StudentName varchar(50) not null,
Sex char(2) not null,
gradeld int not null,
Phone varchar(255) not null,
Adress varchar(255) not NULL default‘学生宿舍‘,
Borndate datetime(5) null,
Email varchar(50) null,
PRIMARY KEY (`StudentNo`)
)
;
#创建科目表
CREATE TABLE SubList
(
SubjectId int NOT NULL,
SubjectName VARCHAR(20) NOT NULL,
ClassHour int NOT NULL,
GradeId int NOT NULL,
PRIMARY KEY (`SubjectId`)
);
#创建年级表
CREATE TABLE GradeClass
(
GradeIdm INT NOT NULL,
GradeName VARCHAR(50) not NULL,
PRIMARY KEY (`GradeIdm`)
);
#创建成绩表
CREATE TABLE GradeList
(
Id INT NOT NULL PRIMARY KEY,
StudentNo VARCHAR(50) NOT NULL,
SubjectId INT NOT NULL,
StudentResult int NULL,
ExampleDate DATE NOT NULL
);
创建学生表
create table Stu
(
StudentNo varchar(50) not null UNIQUE,
LoginPwd varchar(20) not null default‘123456‘,
StudentName varchar(50) not null,
Sex char(2) not null,
gradeld int not null,
Phone varchar(255) not null,
Adress varchar(255) not NULL default‘学生宿舍‘,
Borndate datetime(5) null,
Email varchar(50) null,
PRIMARY KEY (`StudentNo`)
)
;
#创建科目表
CREATE TABLE SubList
(
SubjectId int NOT NULL UNIQUE,
SubjectName VARCHAR(20) NOT NULL,
ClassHour int NOT NULL,
GradeId int NOT NULL,
PRIMARY KEY (`SubjectId`)
);
#创建年级表
CREATE TABLE GradeClass
(
GradeIdm INT NOT NULL UNIQUE,
GradeName VARCHAR(50) not NULL,
PRIMARY KEY (`GradeIdm`)
);
#创建成绩表
CREATE TABLE GradeList
(
Id INT NOT NULL PRIMARY KEY UNIQUE,
StudentNo VARCHAR(50) NOT NULL,
SubjectId INT NOT NULL,
StudentResult int NULL,
ExampleDate DATE NOT NULL
);
MySQL复习1