MySQL
SQL(Strucutured Query Language) - 结构化查询语言
SQL是不区分大小写的编程语言
-
DDL(数据定义语言)- 创建删除修改各种对象
create / drop / alter
-
DML(数据操作语言) - 插入、删除、修改数据
insert / delete / update
-
DQL(数据查询语言) - 检索(查询)数据
select
-
DCL(数据控制语言) - 授予或者召回用户权限
grant / revoke
命令启动MySQL服务
net start 数据库名称
例如:net start mysql80
连接服务器(登录)
- 语法:MySQL -u 用户名 -h 主机地址 -p
- 例如:连接本地:mysql -u tt -h 127.0.0.1 -p
Enter password: 手动输入密码
- 例如:连接本地:mysql -u tt -h 127.0.0.1 -p
更改用户密码(需登录)
- 语法:alter user ‘root’@‘localhost’ identified by ‘新密码’
断开服务器
- 语法:quit
Ⅰ数据库操作
显示本地数据库
show databases;
创建数据库
语法:create database 数据库名 default charset 字符集(常用utf-8);
常见一个数据库名school,设置默认字符集
create database school default charset utf8;
删除数据库
语法:drop database 数据库名
如果有数据库就删除
drop database if exists school
切换到指定数据库
use 数据库名;
打开学生数据库
use school在连接时打开数据库
MySQL -u 用户名 -h 主机地址 -p school
查看数据库下所有数据表
语法:show tables;
创建数据表
1-数据类型
数据类型:
- 整数
- int / integer --> -2^31 ~ 2^31-1
- int unsigned --> 0 ~ 2^32-1
- bigint --> -2^63 ~ 2^63-1
- bigint unsigned --> 2^64-1
- tinyint --> -128 ~ 127
- tinyint unsigned --> 0 ~ 255
- smallint
- 小数
- float / double
- decimal --> decimal(10,2)-小数共10位,小数后占2位
- 字符串
- char / verchar
- longtext --> longtext(二进制大对象) --> 放资源路径(url)
- 时间日期
- date / time / datetime
- timestamp时间戳 --> 1970-1-1 00:00:00
- 布尔型
- boolean --> tinyint(1) --> 0/1
-枚举型
- enum --> 'M' / 'N'
2-创建表
语法:
create table 表名(
字段1 数据类型 not null auto_increment,
字段2 数据类型 not null(设置非空约束),
字段3 数据类型 default '值',
primary key(字段1)(设置主索引)
unique(字段名)(唯一索引)
check(约束条件)
)engine=innodb auto_increment=11;
default 值 -- 设置字段默认值
auto_increment=11 -- 这句代码意思是指定开始值从11开始
auto_increment -- 意思是数字自动增长,必须是主键
例子
create table stu(
stu_id integer not null auto_increment comment '学号',
stu_name varchar(10) not null,
stu_set char(1) default 'M' not null,
primary key(stu_id)
check(stu_set='M' OR stu_set='F') -- 设置约束性别只能是M或者F
);
命令输入:desc stu(表名) - 显示表结构
comment '学号' -- 添加注释
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rCwJJAVP-1629982374534)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210825145830342.png)]
3-显示表结构
命令:desc 表名
desc - describe的简写
简写desc区分:
排序order by中:descend - 降序
显示表结构中:describe - 描述
4-删除表
drop 表名
5-修改表字段
5.1添加字段列
alter table 表名 add column `字段名` varchar(100);
5.2删除字段列
alter table 表名 drop column `字段名`;
5.3修改字段列
- 只修改字段属性(modify)
-- 修改某字段的类型属性
alter table 表名 modify column `字段名` 类型;
- 字段名和属性都修改(change)
-- 修改字段名和其他类型属性
alter table 表名 change column 字段名 新字段名 类型;
5.4添加约束
-- 普通约束
alter table 表名 add constraint 约束名 check (约束条件);
-- 添加主索引约束
alter table 表名 add constraint primary(字段名);
-- 添加唯一索引约束
alter table 表名 add constraint unique(字段名);
-- 添加外键约束
alter table 表名 add constraint 约束名 foreign key(外键字段名) references 外表(外表主键字段名);
设置约束 -- 学生的性别字段值只能是M或者F
alter table tb_student add constraint `ck_student_gender`
check (`stu_gender`='M' or `stu_gender`='F');
5.5删除约束
alter table 表名 drop constraint 约束名;
alter table 表名 drop index 约束名;
alter table 表名 drop primary key 约束名;
...
6-修改记录行
6.1添加记录(insert)
--values后可批量添加--
insert into 表名 (字段名1,字段名2...) values (值1, 值2...),(值1, 值2...);
6.2修改记录(update)
--修改满足条件的记录的字段值--
update 表名 set 字段名=值 where 条件
6.3删除记录(delete)
-- 删除满足条件的记录--
delete from 表名 where 条件
-- 删除表的所有记录--
truncate table 表名;
值2…),(值1, 值2…);
##### 6.2修改记录(update)
```mysql
--修改满足条件的记录的字段值--
update 表名 set 字段名=值 where 条件
6.3删除记录(delete)
-- 删除满足条件的记录--
delete from 表名 where 条件
-- 删除表的所有记录--
truncate table 表名;