黑窗口连接来远程mysql命令参数
mysql -h 1.13.181.242 -u root -p -P 3306
展示数据库
show databases;
新建数据库
create database 数据库名 charset utf8;
删除数据库
drop database 数据库名;
选择某一个库(进入某一个库) 出现 Database changed,就说明数据库已经被选择;
use 数据库名
展示所有的表 Empty 空的
show tables;
创建表
create table 表名( 字段名1 类型 [约束], 字段名2 类型 [约束], 字段名3 类型 [约束] );
查看表属性
desc 表名;
删除表
drop table 表名;
对表单添加信息
方法1:insert into 表名(name,gender,age,address) values("马克","男",20,"峡谷");
方法2:insert into 表名 values("马克","男",20,"峡谷"), ("李白","男",22,"峡谷");
查看表新增信息
select * from 表名;
表中字段数据类型
数值型
整数:tinyint int int(11) 指定几位
小数:decimal float decimal(5,2) 五位数中有两位是小数
字符串
char:固定长度 char(11) 存放两个字符,多余的位置由空格占位
varchar: 可变长度 varchar(20) 剩下多余的位置释放掉
时间
date:年月日 2020-01-01
time:时分秒 12:29:59
datetime :年月日时分秒 2021-01-01 12:29:59
year:年 2022 枚举
enum:单选 enum("男","女","中性") 集合
set:多选 set("游泳","下棋","唱歌")
约束类型:
唯一约束
unique(字段名,字段名) #内容不可重复 否则报错
非空约束
字段名 类型 not null # not null 字段的数值不能为空也不能为None
#null允许为空
默认约束
字段名 类型 default"男" #默认为
主键约束
字段名 类型 primary key # 唯一且不能为空
自增约束
字段名 类型 primary key auto_increment #唯一,非空,可自定义
外键约束
foreign key
外键
添加外键:
删除外键:
-- 需要先获取外键约束名称,该名称系统会自动生成,可以通过查看表创建语句来获取名称
1.第一步查询外键名及外键约束名:
show create table teacher;
>>>>>展示结果:
CONSTRAINT `SBook_comment_id_406b0112_fk_comment_id` FOREIGN KEY (`comment_id`) REFERENCES `comment` (`id`)
要删除的外键约束名>>> SBook_comment_id_406b0112_fk_comment_id
要删除的外键名>>> comment` (`id`)
2.第二步删除外键约束:
alter table 表名 drop constraint 外键约束名
// alter table sbook drop constraint SBook_comment_id_406b0112_fk_comment_id;
3.第三步删除外键字段:
alter table 表名 drop 外键字段名;
// alter table sbook drop comment_id;
show create table permission;
-- 删除现有的外键约束
ALTER TABLE permission
DROP FOREIGN KEY permission_menuSuperior_id_aaea408c_fk_permission_id;
# 不能删就用这个
# alter table permission drop constraint permission_menuSuperior_id_aaea408c_fk_permission_id;
-- 添加新的外键约束,将 on_delete 更改为 NO ACTION(类似于 PROTECT)
ALTER TABLE permission
ADD CONSTRAINT permission_menuSuperior_id_aaea408c_fk_permission_id
FOREIGN KEY (menuSuperior_id)
REFERENCES permission(id)
ON DELETE NO ACTION;
操作表
注意:对所有表中字段的操作(修改表结构)都需要用到alter
语法:alter table 表名 add/drop/modify/change 字段名 类型[约束];
修改表名
语法:alter table 原表名 rename 新表名;
案例:alter table embloy rename employ;
给表中增加字段
语法:alter table 表名 add 字段名 类型 [约束];
案例:alter table employ add isdelete int;
删除表中字段
语法:alter table 表名 drop 字段名;
案例:alter table employ drop hobby;
操作字段
alter table commentmodel modify parent_id int default 0;
修改字段类型和约束
语法:alter table 表名 modify 字段名 类型[约束];
案例:alter table employ modify name varchar(32);
案例:alter table employ modify id int primary kay;
案例:alter table employ modify enumb int unique;
修改字段名
语法:alter table 表名 change 原字段名 新字段名 类型[约束];
案例:alter table employ change gender sex varchar(3);
操作数据
给表中增加数据
insert into 表名 values(数据1),(数据2);
修改表中所有数据
update 表名 set 字段名=新值;
修改表中某一条数据
update 表名 set 字段名=新值 where 条件;
修改teacher表中 sex为男的所有 money的值
update teacher set money="2000.00" where sex="男";
修改表num2中 字段名为id. 1 中的数值
update num2 set num=num-50 where id=1;
删除表数据
物理删除
删除表中某一条数据
语法:delete from 表名 where 条件;
案例:delete from people where sname="玛卡巴卡";
删除表中所有的数据
语法:delete from 表名;
案例:delete from people;
mysql清空表可以用delete和truncate两个命令来完成:
1. delete
① 语法:delete from table_name;
② 示例:DELETE FROM `order`;
2. truncate
① 语法:truncate table table_name;
② 示例:TRUNCATE TABLE `order`;
逻辑删除
语法:alter table 表名 add 字段名 类型 [约束];
案例:alter table people add isdelete int default 0;
将某一条数据设置为已删除 字段值为0说明未删除 值为1说明删除
语法:update 表名 set isdelete=1 where 条件;
案例:update people set isdelete=1 where name="王洋";
PyCharm连接数据库,创建表
"""mysql--数据库 py--python文件的后缀名
python连接mysql 需要借助pymysql第三方模块
"""
"""创建表"""
# 导包
import pymysql
# 连接mysql数据库 connect 方法
# host:即ip,由于python和mysql都在本地运行 所以host直接为localhost
# port:即端口,默认为3306,端口是数字类型数据
# user:mysql数据库的用户名
# password:mysql数据库的密码(自己的密码)
# database:选择连接的数据库的库名
# charset:选择编码方式
con = pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="h2110a", charset="utf8")
# 需要借助游标对象来执行sql语句
# 创建游标对象 游标对象 = 数据库对象.cursor()
c1 = con.cursor()
# 编写sql语句 (注意:group是关键词,不能用在表字段上,可以加上_s之类的, group_s varchar(10),)
sql = """create table sttt(id int,name varchar(20),
gender enum("男","女","未知"),age int,address char(23));"""
# 执行 execute()
c1.execute(sql)
"""1.修改表名为student1 """
import pymysql
con = pymysql.connect(host="localhost", port=3306, user="root",
password="iamgod", database="h2110a", charset="utf8")
# 创建游标对象 数据库对象.cursor()
c1 = con.cursor()
# 编写sql语句
sql = """alter table stude rename student1"""
# 游标对象执行sql语句 execute()
c1.execute(sql)