数据库Mysql(一)

本文详细介绍了如何在cmd中操作MySQL数据库,包括启动和停止服务,创建和删除数据库,以及查看和切换数据库。深入讲解了数据表的创建、修改和删除,涉及字段类型、属性和主键设置。还探讨了DML语言,如INSERT、UPDATE和DELETE操作,以及数据库引擎的选择。此外,提到了外键和DCL语言的基础知识。
摘要由CSDN通过智能技术生成

1.cmd中操作数据库

1.1

window命令下:
    net start mysql80   -- 开启mysql服务

    net stop mysql80  -- 关闭mysql服务

    mysql -u root -p1234	-- 连接数据库
====================================================================
mysql>show databases;  -- 查看所有数据库
mysql> use db_test;-- 切入数据库
Database changed
mysql> show tables; -- 查看此数据库中所有的表
+-------------------+
| Tables_in_db_test |
+-------------------+
| tb_emp            |
| tb_stu            |
+-------------------+
2 rows in set (0.00 sec)

mysql> describe tb_stu;  -- 显示表中的所有信息
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name     | varchar(255) | NO   |     | NULL    |       |
| sex      | varchar(255) | YES  |     | NULL    |       |
| birthday | varchar(255) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> create database wst;  -- 创建数据库wst
Query OK, 1 row affected (0.02 sec)
mysql> exit; -- 退出
-- 注释
--------show 语句时需要用复数,比如show databases,show tables,
--三层  

1.2数据库XXX语言

DDL 定义 (define)
DML 操作 (manipulate)
DQL 查询 (Query)
DCL 控制 (control)

1.3

数据库默认有四个库

information_schema
sys
mysql
performance_schema

2.操作数据库

操作数据库>操作数据库中的表>操作数据库中表的数据
mysql数据库不区分大小写

2.1

1.创建数据库

CREATE DATABASE  wst2;
CREATE DATABASE if not exists wst2;

2.删除数据库

drop DATABASE wst2;
drop DATABASE if exists wst2;

3.使用数据库

-- Tab键的上面,如果你的表名,或者字段名是一个特殊的字符,就需要带``
USE `school`

4.查看数据库

SHOW DATABASES  -- 查看所有数据库

2.2数据库的数据类型

数值

  • tinyint 微小的数据 一个字节
  • smallint 小数据 2个字节
  • mediumint 中等大小的数据 3个Byte
  • int 标准的整形 4个Byte
  • bigint 较大的数据 8个Byte
  • float 浮点数 4个字节
  • double 浮点数 8个字节(精度问题)
    decimal(十进制的小数) 字符串形式的浮点数 金融计算的时候,一般是使用decimal

字符串

  • char 字符串固定大小的 0~255 (java 字符 char 字符串String)
  • **varchar 可变字符串 0`65535 ** java常用的 String
  • tinytext 微型文本 2^8-1
  • text 文本串 2^16-1 保存大文本

时间和日期

​ java.utilDate

  • date YYYY-MM-DD
  • time HH:mm:ss
  • datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
  • timestamp 时间戳 1970.1.1到现在的毫秒数
  • year 年份表示

null

  • 没有值,未知
  • 不要使用NULL进行运算,结果为NULL

2.3.数据库的字段属性(重点)

Unsigned:

  • 无符号的整数
  • 声明了该列不能声明为负数

zerofill:

  • 0填充 根据(列类型长度)
-- 注意点:使用英文(),表的名称 和 字段 尽量使用 ``括起来
-- AUTO_INCREMENT 自增
-- 字符串引用单引号括起来  '123456'  'male' '性别',
-- 所有的语句后面是英文的(,),最后一行不用加  
-- 注意什么时候用(;)什么时候用(,)   USE `ssh`;show tables;
--  PRIMARY KEY(`id`)  设置主键,一般一个表只有一个唯一的主键
-- NOT NULL DEFAULT'male'与DEFAULT NULL  对立
USE `ssh`;-- 可以手动选择数据库,也可以用这行代码选择数据库
CREATE TABLE IF NOT EXISTS `student2` ( 
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(10) NOT NULL DEFAULT'XXX' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码',
	`sex` VARCHAR(10) NOT NULL DEFAULT'male' COMMENT'性别',
	`birthday` DATETIME DEFAULT NULL COMMENT'出生时间',
	`address` VARCHAR(30) DEFAULT NULL COMMENT'地址',
	`email` VARCHAR(30) DEFAULT NULL COMMENT'邮箱',
	 PRIMARY KEY(`id`)
 )ENGINE=INNODB DEFAULT CHARSET=utf8

格式:

CREATE TABLE [IF NOT EXISTS] `表名`(
    `字段名`  列类型 [属性] [索引] [注释],
    `字段名`  列类型 [属性] [索引] [注释],
    .......
    `字段名`  列类型 [属性] [索引] [注释]
)engine=innodb default charset=utf8

(逆向):常用

SHOW CREATE DATABASE wst; --查看创建数据库的语句
SHOW CREATE TABLE student2; – 查看student数据表的定义语句
DESC student2; --显示表的结构

(例如)想知道已知表的SQL生成语句 执行 show create table student2; 然后 复制单元格到剪切板; 就能得到

CREATE TABLE `student2` (
  `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` varchar(10) NOT NULL DEFAULT 'XXX' COMMENT '姓名',
  `pwd` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` varchar(10) NOT NULL DEFAULT 'male' COMMENT '性别',
  `birthday` datetime DEFAULT NULL COMMENT '出生时间',
  `address` varchar(30) DEFAULT NULL COMMENT '地址',
  `email` varchar(30) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

2.4数据表的类型

-- 关于数据库的引擎/*ENGINE  默认使用~MYISAM 早些年使用的*/

2.5修改删除表

修改

-- 跟表相关的都有alter
ALTER TABLE student RENAME AS student3;-- 修改表名
ALTER TABLE student3 ADD Number INT(10);-- 增加表的字段
ALTER TABLE student3 MODIFY Number VARCHAR (20) -- 修改约束(修改表的字段)  INT(10) -> VARCHAR (20)
ALTER TABLE student3 CHANGE Number Number2 VARCHAR (20)-- 修改字段名     Number -> Number2
ALTER TABLE student3 DROP PNumber;   -- 删除表的字段

删除

-- 删除表DROP TABLE IF EXISTS student3

注意点:

  • `` 字段名,使用这个包裹
  • 注释 --/**/
  • sql关键字大小写不敏感
  • 所有的符号都用英文符号

3.MySQL数据管理

3.1.外键(了解即可)

CREATE TABLE `student2` (
  `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` VARCHAR(10) NOT NULL DEFAULT 'XXX' COMMENT '姓名',
  `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` VARCHAR(10) NOT NULL DEFAULT 'male' COMMENT '性别',
  `birthday` DATETIME DEFAULT NULL COMMENT '出生时间',
  `address` VARCHAR(30) DEFAULT NULL COMMENT '地址',
  `email` VARCHAR(30) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
CREATE TABLE `student3` (
  `qqnum` INT(4) DEFAULT NULL COMMENT 'qq号',
  `name` VARCHAR(10) NOT NULL DEFAULT 'XXX' COMMENT '姓名',
  PRIMARY KEY (`name`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

ALTER TABLE `student2` ADD CONSTRAINT `FK_name` FOREIGN KEY(`name`) REFERENCES `student3`(`name`)

3.2.DML语言(全部要记住)

  • insert
  • update
  • delete

3.3.添加

-- insert into 表名 ([字段名1],[字段名1],[字段名1]...)value ('值1','值2','值3'...),('值1','值2','值3'...)
以下也可,但不推介
INSERT INTO `student4`(`id`,`name`) VALUE (8,'marksix')
INSERT INTO `student4`(`id`,`name`) VALUE (9,"marksix")
INSERT INTO `student4`(`id`,`name`) VALUE ('10','marksix')
INSERT INTO `student4`(`id`,`name`) VALUE ("11","marksix")

语法:insert into 表名 ([字段名1],[字段名1],[字段名1]…)value (‘值1’,‘值2’,‘值3’…),(‘值1’,‘值2’,‘值3’…)…

注意事项:

1.字段和字段之间用英文符号隔开.
2.字段名可以省略,但是后面的值必须一一对应
3.可以同时插入多条数据value(),()…

3.4.删除

DELETE FROM `student4`where...    -- 下一次插入数据,自增继续
TRUNCATE TABLE `student4` -- 重置自增量
相同点:都能删除数据,不会删除表结构
不同:DELETE   TRUNCATE:重新设置自增列,计数器会归零,不会影响事物
delete删除的问题,重启数据库现象:mysql80修复了这个问题
* innoDB  --自增列会从1开始(存在内存当中的,断电即失)
* MyISAM  --继续从上一个自增量开始(存在文件中的,不会丢失)

3.5.修改

-- 修改ID等于5的名字
UPDATE `student4` SET  `name`='小李子' WHERE `id`=5  
-- 不指定条件的情况下,会改动所有表
UPDATE `student4` SET  `name`='小李子' 
-- 修改多个数据用逗号隔开
UPDATE `student4` SET  `name`='小李子',`address`='广西桂平' WHERE `id`=5

语法:UPDATE `表名` SET  colnum_name ='小李子' WHERE[条件]

条件:where 子句运算法 id等于某个值,在某个区间内修改…
操作符会返回布尔值

操作符含义范围结果
=等于5=6false
<>或!=不等于5<>6true
>
<
>=
<=
between…and在某个范围内[2,5]
and和 &&5>1 and 1<2false
or或 ||5>1 or 1<2true

注意:
语法:UPDATE 表名 SET colnum_name =‘value值’ WHERE[条件]
colnum_name是数据库的列尽量带上飘 `
where 条件 没有条件会把所有的都删除
value,是一个具体的值,也可以是一个变量
多个属性之间要用英文逗号隔开

INSERT INTO `student4`(`id`,`name`,`pwd`,`sex`,`birthday`,`address`,`email`)
VALUE ('7','marksix','123456','男',CURRENT_DATE,'天津','邮件'),
('8','marksix','123456','男',CURRENT_TIME,'天津','邮件')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值