PyCharm登录MySQL
1.创建项目
2.点击右边的Database按钮
3.在弹出的编辑框中输入mysql的用户名和密码
如提示Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezone’ prope错误,请参考:问题解决方案
数据库常用字段约束
约束类型 | 关键字 |
---|---|
主键自增 | primary key auto_increment |
不能重复 | unqiue |
不能为空 | not null |
默认值 | default |
代码:
create table user1(
id int primary key auto_increment,
username varchar(16) not null unique ,
password varchar(16) not null,
gender tinyint default 0,
account decimal(12,2) default 0,
vip boolean default false
);
数据库增,删,改,查等命令
插入数据
语法:insert into 【表名】 value (【数据1】,【数据2】… … );
代码:
insert into user3 (username,password,createDatetime) values
('张伟','pass1','2019-07-11'),('王伟','pass2','2019-07-11'),
('王芳','pass3','2019-07-12'),('李伟','pass4','2019-07-11'),
('王秀英','pass5','2019-07-12'),('李秀英','pass6','2019-07-11'),
('李娜','pass7','2019-07-10'),('张秀英','pass8','2019-07-10'),
('刘伟','pass9','2019-07-12'),('张敏','pass10','2019-07-10');
修改数据
语法:update 【表名】 set 【字段1】=【值】,【字段2】=【值】… where 【条件】
代码:
update user1 set username='name2' where id=1;
删除数据
语法:
delete from 【表名】 where 【条件】
代码:
delete from user1 where id=1;
其它
表内新增字段,指定新增字段的类型和约束
alter table 【表名】 add 【字段名】 【类型】 【约束】;
表内修改字段,指定被修改的字段和修改后的名字、字段类型与约束
alter table 【表名】 change 【原字段名】 【新字段名】 【类型】 【约束】;
表内删除字段
alter table 【表名】drop 【字段名】;
修改表的名字
rename table 【原表名】 to【新表名】
代码:
alter table user2 add tel tinyint unique;
alter table user2 change tel tel varchar(16) unique;
alter table user2 drop tel;
rename table user2 to user3;
查询语句
1.查看表内所有数据
select * from 【表名】; 注:*表示所有字段
例子:
select * from user3;
2.查看指定字段
select 【字段1】,【字段2】 from 【表名】;
例子:
select username, password from user3;
3.比较条件查询
select * from 【表名】 where 【条件】;
条件 | 命令 |
---|---|
相等 | = |
不相等 | != |
为空 | is null |
不为空 | is not null |
大于(大于等于) | >(>=) |
小于(小于等于) | <(<=) |
例子:
select * from user3 where username='王伟';
select * from user3 where username!='王伟';
select * from user3 where createDatetime is not null;
select * from user3 where id >=5;
4.模糊条件查询
select * from 【表名】 where 【字段】 like “表达式”;
条件 | 命令 |
---|---|
% | 匹配任意多的字符 |
_ | 匹配一个字符 |
代码:
select * from user where username like '%王%'
select * from user where username like '王_'
5.范围查询
select * from 【表名】 where 【字段】 in(【可能1】,【可能2】… …);
代码:
select * from user where username in ('王伟','李娜');
6.逻辑运算符
条件 | 命令 |
---|---|
and | 与 |
or | 或 |
代码:
select * from user3 where username='王伟' or username='李娜';
7.分组
格式:
select * from 【表名】 where 【条件】 group by 【字段1】,【字段2】… … ;
说明:
- 按照哪个字段分组,哪个字段就不会重复。
- group by 要写在where的后面
代码:
select count(*),createDatetime from user3 group by createDatetime;
格式:
select * from 【表名】 where 【条件】 group by 【字段1】,【字段2】… … having 【条件】;
说明:
where是对select * from的结果进行筛选
having是对group by的最后结果进行筛选
代码:
select count(*),createDatetime from user3 group by createDatetime having count(*) > 3;
8.排序
格式:
select * from 【表名】 where 【条件】 group by 【字段1】,【字段2】… … having 【条件】 order by 【字段1】 asc|desc,【字段2】 asc|desc;
说明:
- asc和desc的含义 asc: 升序(默认) desc: 降序
- 排序优先级 先按【字段1】进行排序,如果【字段1】相同,按【字段2】排序
代码:
select * from user3 order by createDatetime desc,id asc;
9.分页(limit )
格式:
select * from 【表名】 where 【条件】 group by 【字段1】,【字段2】… … having 【条件】 order by 【字段1】 asc|desc,【字段2】 asc|desc limit 【起始索引】,【数据条数】;
代码:
select * from user3 limit 3,5;
多表操作
在实际项目中,往往会进行多张表之间的操作,才能完成,这就是多表操作
多表间的关系有:一对一,一对多,多对多
一对多
1.单张表内字段太多
2.敏感信息分离
一对多
常见应用场景:客户和订单,分类和商品,部门和员工,用户与博客
代码:
## 创建两张表(用户表和博客表)
create table user(
id int primary key auto_increment,
username varchar(16)
);
create table forum(
id int primary key auto_increment,
topic varchar(20),
userid int,
constraint fu1 foreign key (userid) references user(id) on delete cascade
);
user表与forum表就为一对多的关系
外键关系
级联类型 | 解释 |
---|---|
on delete restrict | 默认值 抛异常 |
on delete cascade | 如果主表被引用的外键删除,相关联的表的记录也会被删除 |
on delete set null | 如果主表被引用的外键删除,相关联的表的外键设置为空 |
on delete no action | 什么也不做 |
多对多
常见应用场景:学生和课程、用户和角色,用户和收藏博客
多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键.
代码:
create table user_forum(
id int primary key auto_increment,
user_id int,
forum_id int,
constraint c1 foreign key (user_id) references user(id) on delete cascade ,
constraint c2 foreign key (forum_id) references forum(id) on delete cascade
);
如何提高MySql的运行速度—(索引)
建立索引:
create index 【索引名】 on 【表名】 (【字段名】(【索引长度】));
删除所引:
drop index 【索引名】 on 【表名】;
代码:
## 建立索引
create index username_index on user(username(16))
## 删除索引
drop index username_index on user