MySQL
1.MySQL的登录
1.1服务的启动与停止
使用命令行工具
-
# 启动MySQL服务命令: net start MySQL服务名 # 停止MySQL服务命令: net stop MySQL服务名
1.2登录与退出
-
格式
mysql -h 主机名 -P 端口号 -u用户名 -p密码
-
举例
mysql -h localhost -P 3306 -u root -p******
2.MySQL演示使用
2.1 MySQL5.7中
-
查看编码命令
show variables like 'character_%'; show variables like 'collation_%';
-
修改mysql的数据目录下的my.ini配置文件
[mysql] #大概63行左右,在其下添加 default-character-server=utf8 [mysqld] #大概76行左右,在其下添加 character-set-server=utf8 collation-server=utf8_general_ci
-
重启服务
-
再次查看编码
2.2 MySQL 8
-
MySQL 8中数据库默认编码方式为 utf8bm4 ,无需修改编码方式。
2.3MySQL常见命令
-
修改密码
update mysql.user set authentication_string=password('******') where user='root' and Host='localhost';
-
刷新权限
flush privileges;
-
查看数据库中所有的表
show tables;
-
显示数据库中所有表的信息
describe student;
-
退出连接
exit; ctrl + c -- 强制退出
-
注释
-- 单行注释 /*(多行注释) hello */
3 .操作数据库
操作数据库>操作数据库中的表>操作数据库中的表的数据
mysql关键字不区分大小写
3.1操作数据库
-
创建数据库
create database xxx;
-
使用数据库
-- 如果表名或者字段名是一个特殊字符,就需要带` `(tab上面) use dbtest1;
-
查看所有的数据库
show databases;
-
删除数据库
drop datebase [if exists] dbtest1;
3.2数据库的列类型
数值
-
tinyint 十分小的数据 1个字节
-
smallint 较小的数据 2个字节
-
mendiumint 中等大小的数据 3个字节
-
int 标准的数据 4个字节
-
bigint 较大的数据 8个字节
-
float 浮点数 4个字节
-
double 浮点数 8个字节
-
decimal 字符串形式的浮点数 通常金融计算时使用
字符串
-
char 字符串固定大小的
-
varchar 可变字符串
-
tinytext 微型文本
-
text 文本串(保存大文本)
时间日期
-
data YYYY-MM-DD,日期格式
-
time HH:mm:ss,时间格式
-
datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
-
timestamp 时间戳 1970.0.0到现在的毫秒数
-
year 年份表示
null
-
没有值,位置
-
注意,不要使用NULL进行运算,结果为NULL
3.3数据库的字段属性(重点)
Unsigned
-
无符号的整数
-
声明了该列不能声明为负数
zerofill
-
0填充
-
将不足的位数使用0填充
自增
-
自动在上一条记录的基础上加1
-
通常用来设置唯一的主键,必须为整数类型
-
可以自定义设置主键自增的起始值和步长
非空
-
不赋值会报错
默认
-
设置默认的值
-
如果不指定值则为默认值
3.4创建数据库表
-- 注意点:使用英文括号,表的名称和字段尽量加` ` -- auto_increment自增 -- 所有的语句后面加, 最后一个不用加 CREATE TABLE IF NOT EXISTS `student` ( `id` INT ( 4 ) NOT NULL auto_increment comment '学号', `name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' comment '姓名', `pwd` VARCHAR ( 20 ) NOT NULL DEFAULT '123456' comment '密码', `sex` VARCHAR ( 2 ) NOT NULL DEFAULT '女' comment '性别', `birthday` datetime DEFAULT NULL comment '出生日期', `address` VARCHAR ( 100 ) DEFAULT NULL comment '家庭住址', `email` VARCHAR ( 50 ) DEFAULT NULL comment '邮箱', PRIMARY KEY ( `id` ) ) ENGINE = INNODB DEFAULT charset = utf8
3.5修改删除表
修改
-- 修改表名 ALTRER TABLE 旧表名 RENAME AS 新表名 -- 增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性 -- 修改表的字段 ALTER TABLE 表名 MODIFY 字段名 列属性[] -- 修改约束 ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性[] -- 字段重命名 -- 删除表的字段 ALTER TABLE 表名 DROP 字段名
删除
-- 删除表(判断后删除) DROP TABLE IF EXISTS 表名
4.MySQL数据管理
4.1外键
CREATE TABLE IF NOT EXISTS `grade`( `gradeid` int(10) NOT NULL AUTO_INCREMENT COMMENT '年级id', `gradename` VARCHAR(50) NOT NULL COMMENT '年纪名称', PRIMARY KEY(`gradeid`) )ENGINE=INNODB DEFAULT CHARSET=utf8 -- 注意点:使用英文括号,表的名称和字段尽量加` ` -- auto_increment自增 -- 所有的语句后面加, 最后一个不用加 CREATE TABLE IF NOT EXISTS `student` ( `id` INT ( 4 ) NOT NULL auto_increment comment '学号', `name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' comment '姓名', `gradeid` INT(10) NOT NULL COMMENT '学生的年级', `pwd` VARCHAR ( 20 ) NOT NULL DEFAULT '123456' comment '密码', `sex` VARCHAR ( 2 ) NOT NULL DEFAULT '女' comment '性别', `birthday` datetime DEFAULT NULL comment '出生日期', `address` VARCHAR ( 100 ) DEFAULT NULL comment '家庭住址', `email` VARCHAR ( 50 ) DEFAULT NULL comment '邮箱', PRIMARY KEY ( `id` ), KEY `FK_gradeid` (`gradeid`), CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `gradeid`(`gradeid`) ) ENGINE = INNODB DEFAULT charset = utf8 -- 创建表的时候没有外键 ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `gradeid`(`gradeid`)
4.2DML语言
数据库意义:数据存储、数据管理
DML语言:数据操作语言
-
insert
-
update
-
delete
4.3添加
-- 插入语句(添加) INSERT INTO `grade`(`gradename`) VALUES ('大四') -- 不写插入的字段,会自动一一匹配 INSERT INTO `grade` VALUES (3,'大四') -- 插入多条数据 INSERT INTO `grade`(`gradename`) VALUES ('大一'),('大二') -- 插入一条数据中的多个字段 INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES ('张三','aaaaaa','男') -- 插入多条数据 INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES ('王五','aaaaaa','男'),('李四','bbbbbb','女')
4.4修改
-- 修改姓名,带简介 UPDATE `student` SET `name`='修改后' WHERE id = 1; -- 不能指定条件的情况下,会改动所有表 UPDATE `student` SET `name` = '修改后'; -- 修改多个属性用逗号隔开 UPDATE `student` SET `name`='修改后',email = '123@qq.com' WHERE id = 1; -- 多个条件定位数据 UPDATE `student` SET `name`='修改后' WHERE `name`='修改前' AND(AND为同时满足条件,OR为满足其一即可) sex= '女'
4.5删除
delete 命令
语法:delete from 表名 [where 条件]
-- 删除数据(尽量避免) DELETE FROM `student`; -- 删除指定数据 DELETE FROM `student` WHERE id=1;
TRUNCATE命令
作用:完全清空一个数据库,表的结构和索引约束不会变
-- 清空表 TRUNCATE `表名`
delete和TRUNCATE区别
-
delete 不会影响自增序号
-
TRUNCATE 重新设置自增列 计数器会归零
-
TRUNCATE 不会影响事务