Mysql

1.介绍

是一个关系型数据库管理软件

Mysql中数据结构:
数据库 + 表的形式;
所有操作都是围绕表中数据;
表中的数据都有严格规则和关系。

1.1创建管理员用户

用户名baby,密码881212
CREATE USER 'baby‘@‘%’INENTIFIED BY‘baby’;

1.2给用户授予所有远程访问权限

GRANT ALL ON . TO 'baby‘@’%‘;

1.3使权限生效

FLUSH PRIVILEGES;

2.进入数据库

mysql -u用户名 -p密码;

3.库级命令

查看所有库名:show databases;
创建数据库:create database (~~if not exists~~) db_name;
删除数据库:drop database (~~if not exists~~) db_name;
进入数据库:use db_name;

4.表级命令

查看所有表名:show tables;
创建表:

create table tb_name(id int,
				     name varchar(64),
					 age int,
					 gender enum('male','female')
					)

显示建表信息: show create table tb_name;
删除表:drop table (~~if exists~~) tb_name;

5.表操作 crud

select * from tb_name;

条件查询

select field from tb_name where  ~~~~~;

and, or ,not语句

insert into tb_name (field) values (value);
insert into tb_name (field1, field2) values (value1, value2);


全删:delete from tb_name;
指定删:delete from tb_name where ~~~~~;

改:
修改一个字段的所有值:

update tb_name set field = 'value2' where field = 'value1';

6.数据类型

在这里插入图片描述

7.特殊查询

排序:order by
select * from tb_name order by age(~~desc~~) ; (倒序)

限制:limit
select * from tb_name order by id limit 3;查前三条

select * from tb_name order by id limit 1, 3;查1之后的三条

去重:distinct

select distinct field from tb_name;

模糊查询:like
任意多个字符%
select * from tb_name where field like '%zh%'; 查所有字段为field的值中包含zh的数据

任意一个字符_
使用方法类似%

范围查询:between a and b / in
select * from tb_name where age between 17 and 20; 连续查询

select * from tb_name where age in (17,31,56); 不连续查询

8.聚合

8.1统计个数 count

select count(id) from tb_name where age between 17 and 20;

注意:字段中值为null的不计数

8.2求和 sum

select sum(age) from tb_name where age between 17 and 20;

8.3 求平均值 avg

select avg(age) from tb_name where age between 17 and 20;

8.4 最值(max,min)

select max(age) from tb_name where age between 17 and 20;

8.5 分组 group by

select course , sum(pay) as total_pay from tb_name group by course;

8.6 子句 having

因为where无法与聚合函数一起使用,所以用having代替where。

8.7 嵌套

select * from student where age < (select avg(age) from student); 

嵌套内容用括号包裹。

9.连接

9.1内连接 inner join

9.1.1 无条件内连接

又名交叉连接或笛卡尔连接,第一张表中的每一项与另一张表中的每一项依次组合。

select * from tb_name1 inner join tb_name2 ;

9.1.2 有条件内连接

将符合连接条件的内容连接在一起。

select * from tb_name1 inner join tb_name2 on field1 = field2;

9.2 外连接 left/right join

select * from tb_name1 left join tb_name2 on field1 = field2;

将符合连接条件的内容连接在一起,且在连接条件不匹配时,留下左表中的数据,右表中空数据用null代替。

10.表结构修改 alter

10.1改表名

alter table tb_name1 rename to tb_name2;

10.2 改字段名

alter table tb_name change field1 field field_type;

10.3改字段类型

alter table tb_name modify field field_type;

10.4添加字段

alter table tb_name add field field_type;

10.5 删除字段

alter table tb_name drop field;

包括数据一起删除

11.约束

11.1默认约束 default

 create table tb_name(id int,
    				  name varchar(64),
    			    **age int default 18,**
    				  gender enum('male','female')
    					)

未设置默认值时,默认为null

11.2 非空约束 not null

 create table tb_name(**id int not null,**
        			 name varchar(64),
        			 age int default 18,
        			 gender enum('male','female')
        					)

11.3 唯一约束 unique key

 create table tb_name(**id int not null unique key,**
        			 name varchar(64),
        			 age int default 18,
        			 gender enum('male','female')
        					)

11.4主键 primary key(非空且唯一)

 create table tb_name(**id int primary key,**
        			 name varchar(64),
        			 age int default 18,
        			 gender enum('male','female')
        					)

11.5 自增长 auto_increment

一般用在主键上,每个表只能有一个字段为自增长。

 create table tb_name(**id int primary key auto_increment,**
        			 name varchar(64),
        			 age int default 18,
        			 gender enum('male','female')
        					)

11.6 外键 foreign key

只能连接到另一张表的主键,被外键关联的数据无法删除。

foreign key (s_id) references tb_name( primary_key_name);

12.表关系 (用外键实现)

案例:选课系统
共4个表:

1.学院表college:

字段:
id int primary key auto_increment
name varchar(32)

2.学生表student:

字段:
id int primary key auto_increment
name varchar(32)
foreign key (scr_id) references college(id)

3.课程表course:

字段:
id int primary key auto_increment
name varchar(32)
foreign key (cc_id) references college(id)

4.课程表enroll:

字段:
foreign key (s_id) references student(id)
foreign key (cr_id) references course(id)
primary key(s_id,cr_id)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值