mysql 数据库是一个常用的关系型数据库
关系型数据库核心元素有哪些?
主键: 特殊字段, 用来唯一标识记录的唯一性
字段: 数据列
记录: 数据行
数据表: 数据行的集合
数据库: 数据表的集合
安装, 启动, 停止, 重启 mysql 服务器的命令
安装: sudo apt-get install mysql-server
启动: sudo service mysql start
# 查看进程中是否存在 mysql 服务 ps ajx|grep mysql
停止: sudo service mysql stop
重启: sudo service mysql restart
mysql 数据库的操作
1. 连接数据库
mysql -u root -pmysql
不显示密码连接
python@ubuntu:~/Desktop$ mysql -u root -p
Enter password: mysql
退出数据库
ctrl+l: 清除命令屏幕
quit\exit
2. 创建数据库
create database 数据库名 charset=utf8;
### 创建数据库时一定要记得解决编码问题
3. 查看当前使用的数据库: select database();
查看所以数据库: show databases;
查看当前数据库中所有表: show tabes;
查看当前表中所有的列: select * from 表名;
查看表结构: desc 表名;
4. 1)创建表需要用到的数据类型:
整数: int,bit #int unsigned: 无符号整形 #tinyint unsigned: 无符号整形(但范围比较小, 一般用于年龄) #.bit 是位数据类型, 长度为 1 字节; int 是整型; bit 实际就是 bool 类型, 只能是 0 和 1,int 的是 4 个字节的整型
小数: decimal #decimal(5,2)表示五位数字, 两位小数点
字符串: varchar,char #varchar: 可变字符串
日期时间: date, time, datetime
枚举类型: enum
主键: primary key
自动增长(增加): atuo_increment
默认值: default
不能为空: not null
外键: foreign key
in
2)表格式: create table 数据表名字(id 无符号整形 主键 自动增长(增加) 不能为空; name 可变字符串(数字 / 范围) 默认值'';age 无符号整形 默认值 0;height 小数; gender 枚举 默认值; foreign key 无符号整形 默认值);
例如: create table t_students(id int unsigned primary key auto_increment not null,name varchar(10) default '',age tinyint unsigned default 0,height decimal(5,2),gender enum('男','女','中性','保密') default'保密',cls_id int unsigned default 0);
5. 查看创建数据库的语句: show create database 库名
查看创建表的语句: show create table 表名
6. 使用数据库: use 数据库名
删除数据库: drop database 数据库名
删除表: drop table 表名
删除表 -- 删除字段(列)alter table 表名 drop 列名
7. 表的修改:
1) 修改表 - 添加字段 kouhao (班级口号)
alter table 表名 add 列名 类型及约束;
alter table t_classes add kouhao varchar(20) not null default '人生苦短, 我用 Python';
2) 修改表 - 修改字段: 重命名版
alter table 表名 change 原名 新名 类型及约束;
alter table t_classes change kouhao logo varchar(20);
3) 修改表 - 修改字段: 不重命名版
alter table 表名 modify 列名 类型及约束;
alter table t_classes modify logo varchar(20) not null default '人生苦短, 我用 Python';
8. 数据的增删改查(curd)
curd 的解释: 代表创建 (Create), 更新(Update), 读取(Retrieve) 和删除(Delete)
1)增加
1. 全列插入
insert [into] 表名 values(...) #into 可用可不用
主键字段 可以用 0 null default 来占位
如: 向 classes 表中插入 一个班级
- insert into t_classes values(0,'python02');
- insert into t_classes values(0,'python01');
如: 向 students 表插入一个学生信息(id,name,age,height,gender,cls_id)
- insert t_students values(null,'大乔',23,165.12,'男',1);
- insert t_students values(null,'李白',23,180.12,'女',1);
2. 部分插入
insert into 表名(列 1,...) values(值 1,...)
insert into t_students(name,gender) values ('张飞',1); #这里张飞后面的一是创建表时, 列表性别列对象的枚举参数顺序
3. 多行插入
insert into 表名(name,gender) values("小张 1",1),("小张 2",2);
insert into t_students(name,gender) values('小王',2),('大王',3);
2)修改
update 表名 set 列 1 = 值 1, 列 2 = 值 2... where 条件;
1. 全部修改
update t_students set height=188.88 ;
2. 按条件修改
update t_students set gender='女' where id=1;
3. 按条件修改多个值
- update students set gender ="",name ="xxx" ;
- update t_students set height=165.60,gender=1 where id=3;
3)查询
1. 查询所有列
select * from 表名;
select * from t_students;
2. 指定条件查询
select * from t_students where name='李白';
3. 查询指定列
select 列 1, 列 2,... from 表名;
select name,age from t_students;
4)删除
1. 物理删除 #删除后不可恢复
delete from 表名 where 条件
delete from t_students where id=4;
2. 逻辑删除 #对要删除的对象做标记, 可恢复(用一个字段来表示 这条信息是否已经不能再使用了)
需要给 students 表添加一个 isdelete 字段 bit 类型才能进行逻辑删除
isdelete=1 就是代表删除标记; is_delete=0 就是恢复 #用二进制 0 和 1 表示
update t_students set isdelete=1 where id=5 ;
来源: http://www.bubuko.com/infodetail-2690714.html