MySQL数据库——基础篇1

数据库(Database,简称DB)

  • 概念
    长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”

  • 作用
    保存、管理数据

  • 分类

    • 关系型数据库(SQL)
      MySQL、Oracle、SQL Server、SQLite、DB2
    • 非关系型数据库(NOSQL)
      Redis、MongoDB

        现在的数据库主要以关系型数据库为主流,但是别的数据库也是存在的,比如层次型、网状型、面向对象数据模型等,但是用的少,所以上边分类只分关系型和非关系型。
我也就主要说说关系型数据库中代表性的应用广泛的MySQL数据库。

MySQL 数据库

  • 概念
    是现流行的开源、免费的关系型数据库
  • 特点
    免费、开源数据库
    小巧、功能齐全
    使用便捷
    可运行于Windows或Linux操作系统
    可适用于中小型甚至大型网站应用
    这是它的小标标,记住哦小海豚

        它的安装、管理工具SQLyog安装就不详说了,自己找应该挺多,也挺简单。我主要用的老师推荐的管理工具Navicat操作,语句都一样。

SQL语句(结构化查询语句)

  • 概念
    关系数据库的标准语言,也是通用的、功能极强的关系数据库语言

  • 分类

    - DDL(数据定义语言)

命令行操作数据库

  • 创建数据库: CREATE DATABASE 数据库名称;
CREATE DATABASE myschool;
  • 删除数据库: DROP DATABASE 数据库名称;
DROP DATABASE myschool;
  • 查询所有数据库
SHOW DATABASES;
  • 切换到数据库下: USE 数据库名称;
USE myschool;

命令行创建数据表

数据库下有多个属于自己的表,并且可以相互关联。创建表之前先要切换到该数据库下再创建。

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

这里的列类型、列属性、表类型等咱们再详细说一说

列类型
  • 概念: 规定数据库中该列存放的数据类型
  • 分类:
    数值类型
    在这里插入图片描述字符串类型
    在这里插入图片描述
    日期和时间型数值类型
    在这里插入图片描述
    NULL值:就是能不能为null值(空)。注意:不要用NULL进行算术运算,结果仍为NULL
字段属性
  • UNSIGNED:
    无符号的
    声明该数据列不允许负数
  • ZEROFILL:
    0填充的
    不足位数的用0来填充,如 int(3),5则为 005
  • AUTO_INCREMENT:
    自动增长的,每添加一条数据,自动在上一个记录数上加1
    通常用于设置主键,且为整数类型
    可定义起始值和步长
  • COMMENT:
    注释 对于 表或 列的描述
    COMMENT=‘测试表’;
  • DEFAULT:
    默认的
    用于设置默认值
    例如,性别字段,默认为“男”,否则为“女”;若无指定该列的值,则默认为“男”的值
  • PRIMARY KEY :
    主键
表属性
  • ENGINE:
    表类型,也就是设置表的存储模式 ,一般为ENGINE=InnoDB / MyISAM
  • charset:
    字符编码集,设置 charset=utf8(包含中文的编码集);

下边举一个具体实例,创建一个课程表:

CREATE TABLE IF NOT EXISTS `subject`(
  subjectNo int(11) NOT NULL  PRIMARY KEY AUTO_INCREMENT COMMENT '科目编号',
  subjectName varchar(50) NOT NULL COMMENT '科目名称',
  classHour int(4) NOT NULL COMMENT '课时',
  gradeID int(4) COMMENT '年级编号'
) ENGINE =  InnoDB,COMMENT='年级表',charset=utf8;

创建成功,没有错误我们来看看这个创建好的空表:
查询语句再说这个表的属性(和咱们创建时设置的一样):

在这里插入图片描述然后说一些别的常用语句吧:

  • 创建表同时 复制原有表中的数据与结构
CREATE TABLE `newsubject`  SELECT * FROM `subject`;
  • 创建表同时 只复制表中的结构,不要数据
CREATE TABLE `newsubject2`  SELECT * FROM `subject` where 1=2;
  • 创建表同时 复制表中的指定列
CREATE TABLE `newsubject3`  SELECT subjectNo,subjectName FROM `subject` where 1=2;
  • 查询表的结构
DESC `subject`;                  -- 简单 常用(注释就是-- )
DESCRIBE `subject`;
SHOW COLUMNS IN `subject`;
SHOW COLUMNS FROM `subject`;
EXPLAIN  `subject`;
  • 查询已创建表的语句
SHOW CREATE TABLE `subject`;

命令行修改数据表

  • 修改表名称 语法:ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE  newsubject RENAME AS newsubject1;
  • 添加字段 语法: ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ]
ALTER TABLE newsubject1   ADD test  VARCHAR(50) NOT NULL;
  • 修改字段 语法一: ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ]
ALTER TABLE newsubject1 MODIFY test VARCHAR(10) NULL
语法二 : ALTER TABLE 表名   CHANGE 旧字段名  新字段名   列类型 [ 属性 ]
ALTER TABLE newsubject1   CHANGE test  test2 VARCHAR(10) NULL
  • 删除字段 语法: ALTER TABLE 表名 DROP 字段名
ALTER TABLE newsubject1 DROP test2
  • 增加主键 语法:ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
ALTER TABLE  newsubject1 ADD PRIMARY KEY (subjectNo);
  • 删除主键 (主键只有一个,所以不需要名字)
ALTER TABLE newsubject1 DROP PRIMARY KEY;
  • 创建主外键关系: ALTER TABLE 外键表 ADD FOREIGN KEY (外键列) REFERENCES 主键表(主键列);
ALTER TABLE  news ADD FOREIGN KEY (ntid) REFERENCES topic(tid);
  • 创建主外键关系 命名关系
ALTER TABLE news ADD CONSTRAINT fk_news_ntid_topic_tid FOREIGN KEY (ntid) REFERENCES topic(tid);
  • 删除主外键关系 通过命的名字 fk_news_ntid_topic_tid
ALTER TABLE news DROP FOREIGN KEY `fk_news_ntid_topic_tid`;

命令行操作数据

  • 添加语句 语法:INSERT INTO 表名(列名1,列名2,列名3,列名4,…)VALUES(值1,值2,值3,值4,…)
INSERT INTO grade(gradeName)VALUES('大一'); --逐条添加
INSERT INTO grade(gradeName)VALUES('大二'),('大三'),('大四'); -- 逐列添加
INSERT INTO `subject`(subjectName,classHour,gradeID)VALUES('高等数学-1',120,4),('高等数学-2',110,5),('高等数学-3',100,6),('高等数学-5',90,7);    --批量添加
  • 修改语句 语法: UPDATE 表名 SET column_name(列名) = value(值) [ , column_name2 = value2, …. ] [ WHERE condition(筛选条件) ];
UPDATE student SET studentName = '李四' WHERE studentNo = 1011

UPDATE student SET loginPwd = '000000',email='123@qq.com' WHERE studentNo = 10000

UPDATE student SET loginPwd = '123456' WHERE gradeid=4 AND email = '123@qq.com'
  • 删除 语法1: DELETE FROM 表名 [ WHERE condition ]; – (要删主表先删子表)
             语法2:TRUNCATE 表名 --(完全清空表数据,但表结构、索引、约束等不变)
DELETE FROM student WHERE studentNo = 1010
TRUNCATE testTable 
  • 查询null值
SELECT * FROM student WHERE email is null
SELECT * FROM student WHERE email is NOT null

创建数据库、创建表(属性)、添加数据、修改数据、删除数据我们都简单聊了聊,最后最重要的查询语句,我们下一篇再详细介绍。希望对你有帮助,有问题的麻烦批评指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值