MySQL学习(三) —数据库常用命令

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】… … ;
说明:

  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;
说明:

  1. asc和desc的含义 asc: 升序(默认) desc: 降序
  2. 排序优先级 先按【字段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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值