文章目录
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=6 | false |
<>或!= | 不等于 | 5<>6 | true |
> | |||
< | |||
>= | |||
<= | |||
between…and | 在某个范围内 | [2,5] | |
and | 和 && | 5>1 and 1<2 | false |
or | 或 || | 5>1 or 1<2 | true |
注意:
语法: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,'天津','邮件')