MySQL
一、SQL语言主要分为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-daifSmxN-1649167151720)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648695190758.png)]
二、Navicat
](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648694553253.png)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hQD5wDsZ-1649167151722)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648695040067.png)]
连接MySQL后,新建数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mKbqRIuN-1649167151724)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648699563831.png)]
打开数据库,查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ty6AN6wU-1649167151725)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648699722648.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lIELP82G-1649167151726)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648699877622.png)]
三、SQL语言基础
1、sql语言中的注释
注释 ctrl+/ --行注释
解除注释ctrl+shift+/ /注释内容/
2、常用数据类型
整数:int,有符号范围(-2147483648,2147483647),无符号范围(0,4294967295)如:int unsigned,代表设置一个无符号的整数;
小整数:tinyint,有符号范围(-128,127),无符号范围(0,255)
小数:decimal,如decimal(5,2)表示共存五位,小数两位,不能超过两位;整数占三位,不能超过三位。
字符串:varchar,如(3)表示最多存三个字符,一个中文或一个字母都占一个字符
日期时间:datetime,范围(1000-01-01 00:00:00~9999-12-31 23:59:59)
3、数据库中的元素
数据库——database
表——table
字段——field
记录(行)——record
4、创建表
create table 表名 (字段名 字段类型,字段名 字段类型);
创建一个字段:
例 创建a ,字段要求:name(姓名),数据类型:varchar(字符串),长度为10.
create table a (name varchar(10));
创建两个字段表:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KOugm39a-1649167151728)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648704018487.png)]
create table b (
name varchara(10),
height decimal(5,2)
);
创建三个字段表:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXi8Fa7K-1649167151730)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648704482408.png)]
create table c (
id int,
name varchar(20),
age tinyint unsigned
);
左侧 表格刷新
5、插入记录insert
- 格式一 insert into 表名 values (…);
往表c里插入一个字段:
insert into c values(0,'张飞',30);
- 格式二 insert into c (字段名) values (…);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Z8uvYy3-1649167151732)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648706157639.png)]
insert into c (id,name) values (3, '刘备');
- 插入多条字段,用分号隔开
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxHXvu9K-1649167151734)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648706439054.png)]
insert into c values (4,'关羽',23);
insert into c (id,name) values (5,灰太狼,15);
insert into c (name) values (喜羊羊);
-
用一条insert 插入多条记录,用逗号隔开
格式 insert into 表名 values (值,值),(值,值);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcXc5ClC-1649167151735)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648707111834.png)]
insert into c values (7,'小a',24),
(8,'lulu',26),
(9,'懒洋洋',44);
- insert into 表名 (字段名,字段名) values (值,值),(值,值),(值,值);
6、select查询表
- 语法:select * from 表名; 查询表的所有字段
select * from c ; 查询表c的所有字段
指定字段名查询
- 语法 select 字段名 ,字段名 from 表名;
select id from c; 查询表c的id字段
select name, id, age from c ; 查询表c的所有字段,但顺序自定义
7、update 修改数据
语法:update 表名 set 字段=值, 字段=值 where 条件;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y57RxZUt-1649167151737)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648711734775.png)]
update c set age=50;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ry5dmPvN-1649167151738)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648711915127.png)]
update c set name='狄仁杰',age=20 where id=3;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pE7YckQq-1649167151741)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648712200047.png)]
update c set age=age+1 from id>10;
8、delete 删除表中的记录
语法 delete from 表名 where 条件;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-exZyiYa7-1649167151743)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648780133238.png)]
delete from c where id=4;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-60HnrGas-1649167151744)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648780314234.png)]
delete from c;
9、truncate table 删除表的数据
语法 truncate table 表名;
删除表c中所有数据;
truncate table c;
10、delete和truncate 的区别
在速度上,truncate>delete;
如果想删除部分数据用delete,注意带上where条件;
如果想保留表而将所有数据删除,自增长字段恢复从1开始,用truncate。
11、drop table 删除表
- 语法一: drop table 表名;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pkD0Akmb-1649167151746)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648799056033.png)]
drop table a;
- 语法二: drop table if exists ;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sgrYQhTV-1649167151748)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648799029851.png)]
drop table if exists a;
四、字段的约束
- 创建带约束的字段的语法格式
create table 表名(
字段名 数据类型 约束,
字段名 数据类型 约束
...
);
- 常用约束
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tdNur7aR-1649167151750)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648866516465.png)]
1、主键
主键的值不能重复 primary key
自增长 ,auto_increment,值会系统自动维护,自动增长
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQoFTF8t-1649167151751)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648870583107.png)]
create table d(
id int unsigned primary key,
name varchar(10),
age int
);
insert into d (name,age) values ('xiao',30);
insert into d (id,name,age) values (6,'hui',23); 插入时指定了id的值
inset into d (name,age) values ('tian ', 54); 插入时未指定id的值,输出为7
select *from d;
- 如果不指定字段,主键自增长字段的值可以用占位符,0或null
insert into d values (0,'kang' ,37);
insert into d values (null,'yang',23);
select * from d;
2、非空
非空 not null 这个字段必须有值,如果没有,insert插入会失败
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hyu9vurS-1649167151753)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648891505708.png)]
create table e (
id int unsigned,
name varchar(10) not null,
age int
);
insert into e values (1 ,'张三',20);
insert into e (id ,age) values (1,23); 错误
select * from e ;
3、唯一
唯一 unique 字段的约束为唯一,表示字段的值不能重复
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6BAAvQPe-1649167151754)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648900902848.png)]
create table f(
id int,
name varchar(10) unique,
age int);
insert into f vaues (1,'z',23);
insert into f value (2,'z',23); 错误
select * from f;
4、默认值约束
默认值约束default 值 当一个字段有默认值约束时,如果指定了值,那么默认值无效;如果没指定默认值,会使用默认值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CTQr8zoH-1649167151756)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648903855008.png)]
create table g(
id int,
name varchar(10),
age int default 30);
insert into g value (1,'zhangsan',20);
insert into g (id,name) value (2,'lisi'); 插入时不指定age
5、别名
字段的别名 as
通过as给字段起一个别名,别名可以中文
select card as 身份证 ,name as 姓名, sex as 性别 from students;
别名的as可以省略
字段名+as+别名 和 字段名 + 别名效果一样
表的别名 as
通过as给表起一个别名,as可以省略
select * from students as stu;
select * from students stu;
6、消除重复记录 distinct
通过select distinct +字段名,字段名+from 表名 来过滤select查询结果中的重复记录;
select distinct sex , class from students;
select distinct * from students;