Navicat管理mysql

在这里插入图片描述
下面是如何创建表和对表进行操作

DDL

  • 易错:
    表明和字段名可以加转义符(esc下面的````)
    列的创建语句后要加 逗号(英文,)
    右括号)前的最后一行不能加逗号(英文,)
    engine = INNODB charset = utf8 或者engine = INNODB ,charset = utf8

  • 添加 auto_increment :自增加(字符类型不能自增加)

  • 添加 主键 :
    customerID int(11) not null auto_increment COMMENT ‘客户编号’,
    primary key(customerID)
    或者 customerID int(11) not null auto_increment COMMENT ‘客户编号’ primary key,

create table if not EXISTS `userInfo`(
  `customerID` int(11) not null auto_increment COMMENT '客户编号',
  `customerName` char(10) not null ,
  `PID` char(255) not null,
  `telephone` char(64) not null,
  `address` varchar(64) ,
  
  primary key(`customerID`)
	)engine = INNODB charset = utf8;
  • 添加 default:默认
    int类型 : default 0000000
    char类型 : default ‘888888’ (加单引号)
    默认null : defaul null
    默认为系统当前日期:default CURRENT_TIMESTAMP
  • 类型
    DECIMAL(5,2):小数类型 5表示最长16位(包括小数),2表示可以有两位小数
    TEXT:存放最大长度为 65,535 个字符的字符串。
    在这里插入图片描述
create table if not exists cardInfo(
cardID CHAR(64) not null default 0000000 COMMENT '卡号' ,
curID VARCHAR(64) not null COMMENT '货币种类' ,
savingID VARCHAR(64) not null COMMENT '存款类型',
openDate TIMESTAMP not null COMMENT '开户日期',
openMoney DECIMAL(5,2) not null  COMMENT '开户余额',
balance DECIMAL(5,2) not null  COMMENT '余额',
`password` VARCHAR(64) not null default '888888'  COMMENT '密码',
IsReportLoss bit(10) not null DEFAULT '否' COMMENT '是否挂失',
customerID INT(64) not null COMMENT '客户编号',
primary key(cardID)
)engine = innodb, charset = utf8;

DML

  • 添加主外键关系
    ALTER TABLE 外键表表名 ADD FOREIGN KEY(外键表外键列) REFERENCES 主表(主键列);
  1. 只有主键表的主键列和其他表的非主键列才可以添加主键列关系(两个表的主键列之间 X)。其中主键表的主键关系必须先添加上,否则无法添加主外键关系
  2. 主键表和主键列的类型和长度必须完全一样
  3. 添加之前,外键列和主键列必须有数据 且数据满足主外键的关系
ALTER TABLE student ADD PRIMARY KEY(s);-- 添加主键
alter table sc add FOREIGN KEY(s) REFERENCES student(S); -- 添加主外键关系
-- 创建数据库 CREATE DATABASE 数据库名
create database firstDB;
-- 删除数据库 DROP DATABASE 数据库名称
-- 查看数据库
show databases;

--  CREATE   TABLE [ IF NOT EXISTS ]    `表名`   (
--     
--         `字段名1`    列类型 [ 属性 ]  [ 索引 ] [注释] ,
--         `字段名2`   列类型 [ 属性 ]  [ 索引 ] [注释] , 
--          … …    
--          `字段名n`   列类型 [ 属性 ]  [ 索引 ] [注释] 
-- 
-- )  [  表类型 ] [ 表字符集 ] [注释] ;

-- 切换需要操作的数据 
USE firstDB;
CREATE TABLE IF NOT EXISTS student(  -- -- 不需要加单引号 如果表名有特殊含义 加esc下的单引号`subject`
	studentNo INT(11)  NOT NULL AUTO_INCREMENT, -- PRIMARY KEY
	studentName VARCHAR(50) NOT NULL COMMENT '科目名称',
    gradeID int(4) not null,
    PRIMARY KEY(studentNo)
)ENGINE = INNODB charset=utf8;

--  查看表设计
desc student;
-- 删除表  drop table 表名
drop table newstudent  --**为什么不能同时运行 12-15

-- 创建一张表  中需要有 原有Student表中的数据
create table newstudent
AS
select studentNo,studentName,gradeID from student where studentName like '张%' -- studentName like '张%'   --注意 是英文的百分号
-- 查询语句 SELECT (*:所有列)列名1,列名2,....... FROM 表名  WHERE 列名  = 值 and or等关键字 ...... 
SELECT * FROM student 
-- 创建一张表 需要有 原有Student表中的结构  不要数据
CREATE TABLE newstudent
AS
SELECT * FROM student WHERE 1=2  -- *代表所有数据

--  查看表设计
desc newstudent;
-- 查看 创建的表
show create table newstudent
-- 查看所有表
SHOW TABLES ;
-- 删除一个 存在的表
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 studentName age char(4)
-- 更改 属性
alter table newstudent MODIFY  age varchar(4)


-- 删除主键
ALTER TABLE newstudent DROP PRIMARY KEY;
 -- 两种添加主键的方法
-- 添加主键  ALTER TABLE 表名 ADD PRIMARY KEY(列名);
ALTER TABLE newstudent ADD PRIMARY KEY(gradeID); -- 两种添加主键的方法
-- 添加主键 ALTER TABLE 表名 ADD CONSTRAINT 主键约束名称  PRIMARY KEY(列名);
ALTER TABLE newstudent ADD CONSTRAINT pk_gradeID  PRIMARY KEY(gradeID);

-- 添加主外键 关系
-- ALTER TABLE 外键表表名 ADD FOREIGN KEY(外键表外键列) REFERENCES 主表(主键列);
ALTER TABLE student ADD FOREIGN KEY(gradeId) REFERENCES newstudent(gradeId);  -- 外键列和主键列的属性要一致(包括类型和长度)。 创建主外键关系前要保证当前外键列的内容符合主键列的约束
-- 删除主外键 关系
-- ALTER TABLE 外键表表名 DROP FOREIGN KEY `外键约束的约束名称`;
ALTER TABLE student DROP FOREIGN KEY `student_ibfk_1`;  -- 外键约束的约束名称 获取名称:手动更新一个限制之外的值会有提示

-- 添加列
ALTER TABLE student ADD phone int(10) not null;

-- 添加 唯一键
ALTER TABLE student ADD UNIQUE (phone);  -- 添加唯一键之前 确保所在属性内容是唯一不重复
ALTER TABLE student ADD UNIQUE u_phone (phone);  -- **这是啥意思

DROP INDEX `u_phone` ON student
drop table student unique 

一些概念

  • 数据库

在这里插入图片描述

  • 结构化查询语句SQL
    在这里插入图片描述

  • 命令行操作数据库
    在这里插入图片描述

  • 创建数据表
    在这里插入图片描述
    ps1: 反引号(可选、区别于单引号)用于区别MySQL保留字与普通字符而引入的
    ps2:字段属性
    NULL 和 NOT NULL:默认为NULL,即没有插入该列的数值.如果设置为NOT NULL,则该列必须有值。NULL值理解为“没有值”或“未知值”,不要用NULL进行算术运算,结果仍为NULL
    DEFAULT默认的用于设置默认值:DEFAULT null 或者default (指定数据类型的内容)

  • 列类型分类
    数值类型
    在这里插入图片描述
    字符串类型
    在这里插入图片描述
    日期和时间型数值类型
    在这里插入图片描述

  • 主键/标识列:不允许内容重复
    ps; AUTO_INCREMENT(自动增长的,每添加一条数据,自动在上一个记录数上加1.通常用于设置主键,且为整数类型)

  • 主外键约束:外键列的内容受到主键列内容的约束(首先主键列本身就是内容不重复的)

  • 唯一键:不能出现重复内容

  • 主键和唯一键的区别:unique 作用的字段允许为空

    ps1: 为什么向unique 修饰的连续插入两个为空的数据会失败?

    因为unique 需要保证唯一性,属性内容中如果插入两个null 就不唯一了
    

ps2: 组合的意思是
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值