MySQL(免费、开源的关系型数据库)
数据库:DataBase (DB) 是按照数据结构组织、存储和管理数据的仓库
使用关系型数据库管理系统(RDBMS) 来存储和管理数据
RDBMS 数据库管理系统 :
1.数据以表的形式出现
2.每行为各种记录的名称
3.每列为记录 名称所对应的数据域
4.许多的行和列 组成了一张表单
5.若干张表组成了数据库 database
RDBMS:
数据库 :一些表的联合
列:一例 包含了相同类型的数据
行:一行 是一组相关的数据
冗余:存储两倍的数据,降低性能但是提高了数据的安全性
主键:主键是惟一的,一个表只能包含一个主键
外键:用于关联两个表
DDL(数据定义语言)
定义和管理数据对象,如数据库,数据表等
DML(数据操作语言)
用于操作数据库对象中所包含的数据
DQL(数据查询语言)用于查询数据库数据
DCL(数据控制语言)
用来管理数据库的语言,包括管理权限及数据更改
Mysql常用指令
-- 创建数据库 CREATE DATABASE 数据库名
-- 删除数据库 DROP DATABASE 数据库名称
CREATE DATABASE myschool_test;
DROP DATABASE myschool_test;
-- 查看数据库
SHOW DATABASES;
-- CREATE TABLE [ IF NOT EXISTS ] `表名` (
-- `字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
-- `字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
-- … …
-- `字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
--
-- ) [ 表类型 ] [ 表字符集 ] [注释] ;
CREATE TABLE IF NOT EXISTS `subject`(
subjectNo INT(11) NOT NULL AUTO_INCREMENT, -- PRIMARY KEY
subjectName VARCHAR(50) NOT NULL COMMENT '科目名称',
classHour int(4) not null DEFAULT 1,
gradeID int(4) not null ,
PRIMARY KEY(subjectNo)
)ENGINE = INNODB charset=utf8;
-- IF NOT EXISTS 判断表是否存在 DEFAULT 默认值 AUTO_INCREMENT 标识列 自动增长 一般和主键列一起使用
-- 切换需要操作的数据
USE myschool_test;
-- 删除表 drop table 表名
DROP TABLE `subject`;
-- 查看表设计
desc `subject`;
-- 查看表的创建语句
show create table `subject`;
-- 查看所有表
SHOW TABLES ;
-- 临时表 临时表将在连接MySQL期间存在,当连接断开时,MySQL会自动删除表 并 释放空间,也可以手动删除
-- CREATE TEMPORARY TABLE 临时表名(
-- `字段名1` 列类型 [ 属性 ] [ 索引 ] [注释]
-- )
-- 创建一张表 中需要有 原有Student表中的数据
CREATE TABLE newstudent
AS
SELECT studentNo,studentName FROM student WHERE sex = '男' AND studentName like '李%'
-- 创建一张表 需要有 原有Student表中的结构 不要数据
CREATE TABLE newstudent
AS
SELECT * FROM student WHERE 1=2
-- 删除一个 存在的表
DROP TABLE IF EXISTS newstudent;
-- 更改表名 ALTER TABLE 原表名称 RENAME 更新后的表名
ALTER TABLE newstudent RENAME newstudent_RENAME;
-- 更改表名 RENAME TABLE 原表名称 TO 更新后的表名;
RENAME TABLE newstudent_RENAME TO newstudent;
-- 添加列
ALTER TABLE newstudent ADD sex VARCHAR(2) not null;
-- 删除列
ALTER TABLE newstudent DROP sex;
-- 更改 列名和属性
ALTER TABLE newstudent CHANGE sex age CHAR(4);
-- 更改 属性
ALTER TABLE newstudent MODIFY age VARCHAR(4);
-- 添加主键 ALTER TABLE 表名 ADD PRIMARY KEY(列名);
ALTER TABLE newstudent ADD PRIMARY KEY(studentNo);
-- 添加主键 ALTER TABLE 表名 ADD CONSTRAINT 主键约束名称 PRIMARY KEY(列名);
ALTER TABLE newstudent ADD CONSTRAINT pk_stuno PRIMARY KEY(studentNo);
-- 删除主键
ALTER TABLE newstudent DROP PRIMARY KEY;
-- 添加主外键 关系
-- ALTER TABLE 外键表表名 ADD FOREIGN KEY(外键表外键列) REFERENCES 主表(主键列);
ALTER TABLE newstudent ADD FOREIGN KEY(gradeId) REFERENCES newgrade(gradeId);
-- ALTER TABLE 外键表表名 ADD CONSTRAINT `fk_外键约束的约束名` FOREIGN KEY(外键表外键列) REFERENCES 主表(主键列)
ALTER TABLE newstudent ADD CONSTRAINT `fk_stu_grade_gradeid` FOREIGN KEY(gradeId) REFERENCES newgrade(gradeId)
-- 删除主外键 关系
-- ALTER TABLE 外键表表名 DROP FOREIGN KEY `外键约束的约束名称`;
ALTER TABLE newstudent DROP FOREIGN KEY `newstudent_ibfk_1`;
-- 修改主外键
ALTER TABLE newstudent
DROP FOREIGN KEY `fk_stu_grade_gradeid`;
ALTER TABLE newstudent ADD CONSTRAINT `fk_student_grade_gradeid`
FOREIGN KEY (gradeId)
REFERENCES newgrade(gradeId);
-- 添加 唯一键
ALTER TABLE newstudent ADD UNIQUE (phone);
ALTER TABLE newstudent ADD UNIQUE u_phone (phone);
DROP INDEX `u_phone` ON newstudent
-- 查询语句 SELECT (*:所有列)列名1,列名2,....... FROM 表名 WHERE 列名 = 值 and or等关键字 ......
SELECT * FROM student