基本数据长度(M,D)

  • 后面的数字是显示数据的宽度,最大有效宽度为255。
  • 显示宽度与数据大小或类型包含的值的范围无关,
  • 只是当设置了zerofill的时候,当实际值长度小于M的时候,在显示的时候自动补零

整型

浮点型与定点型

Float(6,2)、Double(6,2)、Decimal(6,2);

日期与时间类型

TIMESTAMP

DATETIME

TIME

DATE

YEAR

字符串类型

CHAR、VARCHAR、BLOB、TEXT、ENUM、SET

  • CHAR和VARCHAR区别

    char如果插入的长度小于定义长度时,则用空格填充;varchar小于定义长度时,还是按实际长度存储,插入多长就存多长。

  • TEXT

    TINYTEXT

    TEXT

    MEDIUMTEXT

    LONGTEXT

二进制类型包括

  • BINARY、
  • VARBINARY、
  • BIT、
  • TINYBLOB、
  • BLOB、
  • MEDIUMBLOB、
  • LONGBLOB。

MySQL中没有Bool或Boolean类型

常用约束条件有以下这些

  1. UNSIGNED :无符号,值从0开始,无负数
  2. ZEROFILL:零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED
  3. NOT NULL:非空约束,表示该字段的值不能为空
  4. DEFAULT (NULL):表示如果插入数据时没有给该字段赋值,那么就使用默认值
  5. PRIMARY KEY:主键约束,表示唯一标识,不能为空,且一个表只能有一个主键。一般都是用来约束id
  6. AUTO_INCREMENT:自增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,每次增长1
  7. UNIQUE KEY:唯一值,表示该字段下的值不能重复,null除外。比如身份证号是一人一号的,一般都会用这个进行约束
  8. FOREIGN KEY:外键约束,目的是为了保证数据的完成性和唯一性,以及实现一对一或一对多关系
SHOW DATABASES;USE `sakila`;SHOW tables;USE `testdb`;show tables;delete `student`;create table if not exists `student`(`id` INT(3) NOT NULL AUTO_INCREMENT COMMENT '学号',`age` INT(3) DEFAULT NULL COMMENT '年龄',`name` varchar(20) NOT NULL DEFAULT 'niming' COMMENT '姓名',`pwd` varchar(20) NOT NULL DEFAULT '123456'COMMENT '密码',`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',`address` varchar(100) DEFAULT NULL COMMENT'家庭住址',PRIMARY Key(`id`)
)ENGINE=Innodb default charset=utf8;select * from `student`;INSERT INTO `student` value(201803469, 21, "SImon", "123123", NULL, "hubeihuanggang");-- DESC 后面只能接表名
DESC `student`;create table `aq1`(`id` int
)engine=Innodb default charset=utf8mb4;create table `aq2`(`id` int
)engine=MyISAM default charset=utf8mb4;show create DATABASE `testdb`;
名称 解释 命令
DDL 定义数据库对象,如数据库,数据表 CREATE,DROP,ALTER
DML 用于操作数据库对象中包含的数据 INSERT,UPDATE,DELETE
DQL 用于查询数据库 SELECT
DCL 用于管理数据库的语言,包括管理权限和数据更改 GRANT,COMMIT,ROOLLBACK

操作数据库-》操作数据表-操作数据项

  1. 数据库操作
  • create database if not exists testdb
  • drop database if exists testdb
  • use testdb
  • show databases;
  • show create database school:查看字符集编码

2、数据表操作

  • 增 create table if not exists teacher();

  • 删 drop table if exists teacher

  • 清空表()

    • DELETE(不指定条件,则清空表)
    • TRUNCATE(推荐)
    • 区别
      • 相同 : 都能删除数据 , 不删除表结构 , 但TRUNCATE速度更快
      • 不同 :
        • 使用TRUNCATE TABLE 重新设置AUTO_INCREMENT计数器
        • 使用TRUNCATE TABLE不会对事务有影响 (事务后面会说)
  • 改结构 alter

    • 改表名:alter table 旧表名 rename as 新表名

      • alter table readerreader rename as reader;
        
    • 添加字段:alter table 表名 add 字段名 约束

      • alter table reader add rdAge int NOT NULL comment '读者年龄';
        
    • 修改字段:

      • alter table 表名 modify 字段名
    • 修改约束:-- 创建外键方式二 : 创建子表完毕后,修改子表添加外键
      ALTER TABLE student
      ADD CONSTRAINT FK_gradeid FOREIGN KEY (gradeid) REFERENCES grade (gradeid);

    • 删除字段 : ALTER TABLE 表名 DROP 字段名

      • alter table reader drop rddage;
        
  • 改内容 update:UPDATE 表名 SET column_name=value [,column_name2=value2,…] [WHERE condition];

  • 删内容delete

  • 加内容insert:

    • INSERT INTO 表名[(字段1,字段2,字段3,…)] VALUES(‘值1’,‘值2’,‘值3’)
    • INSERT INTO 表名 values(’’,’’,’’,’’,’’)括号里面的数据要与表中的字段一一对应
  • 查看表结构 DESC + 表名==(DESC 只能对表名用)==

  • 查看表定义:show create table student

  • 查select

select

SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias][left | right | inner join table_name2]  -- 联合查询[WHERE ...]  -- 指定结果需满足的条件[GROUP BY ...]  -- 指定结果按照哪几个字段来分组[HAVING]  -- 过滤分组的记录必须满足的次要条件[ORDER BY ...]  -- 指定查询记录按一个或多个条件排序[LIMIT {[offset,]row_count | row_countOFFSET offset}];--  指定查询的记录从哪条至哪条
select rdName 用户名, rdDept 用户院系, bkName 用户借阅的书籍名称, bkPress 书记出版社, bkPrice 书籍价格 from reader r
left join  borrow br
on r.rdID = br.rdID
inner join book bk
on br.bkID = bk.bkID;

±----------±----------------------±----------------------±-------------------±-------------+
| 用户名 | 用户院系 | 用户借阅的书籍名称 | 书记出版社 | 书籍价格
±----------±----------------------±----------------------±-------------------±-------------+
| 王桃群 | 计算机科学学院 | 古代汉语 | 中华书局 | 20.40 |
| 连笑脸 | 管理学院 | 当代教育心理学 | 北京师范大学 | 37.20 |
| 徐淼 | 物理学院 | 当代教育心理学 | 北京师范大学 | 37.20 |
| 孙小妹 | 英语学院 | 古代汉语 | 中华书局 | 20.40 |
±----------±----------------------±----------------------±-------------------±-------------+

where子句

运算符:=, !=, >, <,>=, <=, BETWEEN AND, AND, OR

AS 子句作为别名(AS 可以省略不写)

作用:

  • 可给数据列取一个新别名
  • 可给表取一个新别名
  • 可把经计算或总结的结果用另一个新名称来代替

DISTINCT关键字的使用

like关键字:% _ 有特殊字符的话要用/进行转义

in关键字:在什么之内:

select * from student where sId in (201803469,201803470) and sex = "男";
--查找出这些学号中性别为男的学生信息
 select * from reader where rdID in ("rd2017001", "rd2017002", "rd2017003") and rdType = 2;

联表查询

  • 左连接
  • inner链接
  • 右连接
use mysqldesc user;grant select(zno) on specialty to 'Simon'@'localhost';use qqq;delimiter ##create PROCEDURE getnamebysno(In xh char(10), out name char(20))Begin select sname into name from student where sno = xh;END ##delimiter ; set @nameq = null;call getsnamebysno(201803469, @nameq);select @nameq;create procedure getsnamebysno(In xh char(10), out name char(20))BEGIN select sname into name from student where sno = xh;ENDcall getallstudent();create USER `Simon`@`localhost` identified by '123123';insert into specialty value (MD5(1010), 'xx');select host, user from mysql.`user`; create table `specialty`(  `zno` varchar(5) NOT NULL primary key,    `zname` varchar(50) Not nULL)engine=InnoDB charset = utf8mb4;create table `course`(   `cno` varchar(8) NOT NULL primary key,    `cname` varchar(50) NOT NULL, `ccredit` int(11) NOT NULL,   `cdept` varchar(20) NOT NULL)engine=InnoDB charset = utf8mb4;create table `student`(  `sno` varchar(10) NOT NULL PRIMARY KEY,   `sname` varchar(20) NOT NULL, `ssex` varchar(2),    `sbirth` Date NOT NULL,   `sclass` varchar(11) NOT NULL,    `zno` varchar(4) NOT NULL,    constraint `aa` foreign key (zno) references specialty(zno))engine = InnoDB charset = utf8mb4;drop table `sc`;    --超过一个主键    create table `sc`(    `sno` varchar(10) NOT NULL,   `cno` varchar(8) NOT NULL,    `grade` float(4) NOT NULL,    primary key (`sno`, `cno`), constraint `bb` foreign key (`sno`) references `student`(`sno`),    constraint `cc` foreign key (`cno`) references `course`(`cno`))engine = InnoDB charset = utf8mb4;添加外键alter table scadd foreign key cno references course(cno); select sno 学号,grade 成绩 from `sc` where grade between 87 and 100; having zno = 1407  limit 0,2select * from `student` GROUP BY `ssex`;select all* from student group by zno having zno in (1214,1407,1102);set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';select version();select @@sql_mode;

引擎的区别

名称 MyISAM InnoDB
事务处理 不支持 支持
数据行锁 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大约2倍
  • * . frm – 表结构定义文件

  • * . MYD – 数据文件 ( data )

  • * . MYI – 索引文件 ( index )

  • InnoDB类型数据表只有一个 *.frm文件 , 以及上一级目录的ibdata1文件

  • MyISAM类型数据表对应三个文件 :

create table `specialty`(  `zno` varchar(5) NOT NULL primary key,    `zname` varchar(50) Not nULL)engine=InnoDB charset = utf8mb4;create table `course`(   `cno` varchar(8) NOT NULL primary key,    `cname` varchar(50) NOT NULL, `ccredit` int(11) NOT NULL,   `cdept` varchar(20) NOT NULL)engine=InnoDB charset = utf8mb4;create table `student`(  `sno` varchar(10) NOT NULL PRIMARY KEY,   `sname` varchar(20) NOT NULL, `ssex` varchar(2),    `sbirth` Date NOT NULL,   `sclass` varchar(11) NOT NULL,    `zno` varchar(4) NOT NULL,    constraint `aa` foreign key (zno) references specialty(zno))engine = InnoDB charset = utf8mb4;drop table `sc`;    --超过一个主键    create table `sc`(    `sno` varchar(10) NOT NULL,   `cno` varchar(8) NOT NULL,    `grade` float(4) NOT NULL,    primary key (`sno`, `cno`), constraint `bb` foreign key (`sno`) references `student`(`sno`),    constraint `cc` foreign key (`cno`) references `course`(`cno`))engine = InnoDB charset = utf8mb4;添加外键alter table scadd foreign key cno references course(cno);

建外键注意事项

建外键

  • 在建表的时候在结尾添加一个或多个外键

  • 或者表建完后,用以下语追加外键

  • alter table scadd foreign key cno references course(cno);
    

注意

  • 每张表的字符集编码charset和collate要一样,要么为utf8要么为utf8mb4
  • 字段的类型和字长必须一致
  • 如果原本是utf8后来改为了utf8mb4,这只是表级的编码改了,列级没有改,还需要将列级也修改一下

分组查询GROUP BY

每次只能查出该属性的所有类别的从前到后的一组数据,

比如说学生表中只有5种专业,哪怕有100个学生,group by查询也只能查到5条记录,这五条记录是在学生表最前面的记录。

2021-08-02复习总结mysql的杂七杂八相关推荐

  1. 复习整合Mysql指令操作

    复习指令 Mysql常用指令 进入 退出 用户的操作 增加用户 赋予新权限 刷新权限 修改用户密码 删除用户 库的操作 创建数据库 查看数据库 选择数据库 删除数据库 库名的修改 表的操作 创建 查看 ...

  2. 2021.08.09【普及组】模拟赛C组比赛总结

    文章目录 2021.08.09[普及组]模拟赛C组比赛总结 写在前面: T1 :[普及模拟]生产武器 题目大意: 正解: T2 :[普及模拟]城市连接 题目大意: 正解: T3 :[普及模拟]抢救文件 ...

  3. 《安富莱嵌入式周报》第227期:2021.08.23--2021.08.29

    往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 ...

  4. http://southpeak.github.io/blog/2014/08/02/reactiv

    2019独角兽企业重金招聘Python工程师标准>>> http://southpeak.github.io/blog/2014/08/02/reactivecocoazhi-nan ...

  5. 纯Go实现的Firebase的替代品 | Gopher Daily (2021.08.11) ʕ◔ϖ◔ʔ

    每日一谚:Global variables should have longer names. Go技术生态 如何才能成功将Python切换到Go - https://itnext.io/opinio ...

  6. GNSS数据下载网站整理,包括gamit、bernese更新文件地址[2021.08更新]

    本人博客园同名原创文章,展示到CSDN供大家参考,转载请声明地址:https://www.cnblogs.com/ydh2017/p/6474654.html 从事GNSS研究的小伙伴大都离不开GNS ...

  7. 考前复习必备MySQL数据库(关系型数据库管理系统)

    大家好,我是魔王哪吒,话不多说,今天带来的是一篇<考前复习必备MySQL数据库(关系型数据库管理系统)>文章,欢迎大家喜欢. 前言 MySQL是一个关系型数据库管理系统,在web应用方面, ...

  8. java毕业生设计在线交友系统2021计算机源码+系统+mysql+调试部署+lw

    java毕业生设计在线交友系统2021计算机源码+系统+mysql+调试部署+lw java毕业生设计在线交友系统2021计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S ...

  9. 【财经期刊FM-Radio|2021年02月23日】

    title: [财经期刊FM-Radio|2021年02月23日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 纳指跌超2%,科技股领跌,道指收涨,能源领衔走高,金银油铜高涨,伦铜 ...

  10. 计算机毕业设计Java智慧公寓系统演示录屏2021(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java智慧公寓系统演示录屏2021(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java智慧公寓系统演示录屏2021(源码+系统+mysql数据库+Lw文档) 本源码技术栈 ...

最新文章

  1. qfdw.xyz sq.php,GitHub - STORMSQ/sqphp: 練習用框架,使用PHP搭建
  2. 容器开启数据服务之旅系列(四):Kubernetes QoS 助力在线运用与大数据离线运用的带宽控制和磁盘控制...
  3. hyperopt中文文档:Scipy2013
  4. 【C语言简单说】二十一:双重指针基础 (完结)
  5. junit rule_使用JUnit的ExpectedException和@Rule测试自定义异常
  6. Tshark的使用问题
  7. java年轻代频繁gc_年轻代频繁ParNew GC,导致http服务rt飙高
  8. 7-8 猜数字 (20 分)
  9. linux如何查看系统崩溃日志,Linux系统日志及日志分析
  10. 医学图像处理(三)ABIDE数据集下载
  11. STM32共阳数码管编程分享
  12. 第六讲 Keras实现手写字体识别分类
  13. 全球程序员收入出炉!北京收入排入全球第十
  14. MySQL 千万级数据处理
  15. jQuery 汉字转拼音
  16. Android利用Socket与硬件通信之智能家居APP
  17. SDUT-1150 因式分解
  18. Redmibook pro 15 锐龙版 2021评测2022款各家本子推荐
  19. HTML 锚点的作用及用法
  20. 金融风控机器学习第三十一天---拜师课堂 机器学习算法--决策树 随机森林

热门文章

  1. 微波技术与天线_HFSS_微带贴片天线建模仿真
  2. 小尺寸 GPS 北斗 GNSS 全向内置天线方案 CA-G01 CrossAir贴片天线
  3. html调用打印机,[Javascript]网页调用打印机
  4. PC_溢出概念+判断方法+示例
  5. sqli-labs注入特色分类教程1-15【手动注入与sqlmap全面双解】
  6. 根据录入的计算公式计算_炒股还需工匠精神:请笑纳30个财务分析指标和计算方式,上市公司财务分析必备,速速珍藏...
  7. 仿唯品会尺码助手弹框 带箭头叉号的popupwindow BubbleLayout
  8. 下载并安装Pandoc
  9. 2021年中国化妆品发展现状及进出口状况分析:消费升级局面下,化妆品市场依旧景气 [图]
  10. excel表格打印每页都有表头_EXCEL打印小技巧:如何打印出每张纸上都有表头标题的表格?...