文章目录
- MySQL笔记
- SQL语言介绍
- 数据库系统
- 关系型数据库
- 非关系型数据库
- SQL和数据库系统的关系
- 数据库系统架构
- MySQL的介绍
- 概念
- MySQL的版本
- MySQL的DDL操作-重点
- 基本数据库操作
- 基本表操作
- MySQL的DML操作-重点
- insert-插入数据
- update-更新数据
- delete-删除数据
- MySQL的约束-了解
- 概述
- 约束的分类
- 主键约束
- 自增约束
- 其他约束
- 插入以下数据,发现主键从100开始,然后依次加1
MySQL笔记
SQL语言介绍
-
SQL语句概念
1.SQL全称: Structured Query Language,是结构化查询语言,用来访问结构化数据(类似Excel文本数据) 2.SQL用来操作数据库系统 3.SQL发展到现在,制定了很多的标准,有:SQL-92、SQL-99标准,不同的标准表达方式不同
-
SQL语言的分类
数据定义语言-DDL (create/drop/show) 数据操作语言-DML (insert/delete/update) 数据查询语言-DQL (select/group by/order by) !!!!!!! 数据控制语言-DCL
-
SQL语法特点
SQL 对关键字的大小写不敏感 SQL语句可以以单行或者多行书写,以分行结束
-
SQL的注释
-- 单行注释 # 单行注释 /* 多行注释 多行注释 多行注释 多行注释 */
数据库系统
关系型数据库
-
介绍
关系型数据库最大的特点是:数据库中存储的是一张张的表格,表格与表格之间存在的某种关系
-
分类
1、Oracle数据库 (老大,最挣钱的数据库) 2、MySQL数据库 (最流行中型数据库)) 3、SQL server数据库 (Windows上最好的数据库) 4、PostgreSQL(功能最强大的开源数据库) 5、SQLite(最流行的嵌入式数据库 #黑马的课程设计的数据库:MySQL数据库、Oracle数据库、PostgreSQL数据库
非关系型数据库
-
介绍
菲关系型数据库中存储的是键值对,大部分都不是表
-
分类
1、Redis(最好的缓存数据库) 2、MongoDB(最好的文档型数据库) 3、Elasticsearch(最好的搜索服务) 4、Cassandra(最好的列式数据库) 5、HBase(优秀的分布式、列式数据库) #黑马的课程设计的数据库:Elasticsearch、HBase、MongoDB
SQL和数据库系统的关系
1、SQL是一种用于操作数据库的语言,SQL适用于所有关系型数据库。 2、MySQL、Oracle、SQLServer是一个数据库软件,我们使用SQL可以操作这些软件,不过每一个数据库系统会在标准SQL的基础上扩展自己的SQL语法。
数据库系统架构
数据库系统 --->数据库 --->表 --->数据
MySQL的介绍
概念
1、MySQL现在归属于Oracle公司(甲骨文)、该公司旗下还有一个Oracle数据库, 2、MySQL底层是C语言 3、MySQL支持多种操作系统,多种编程语言访问()
MySQL的版本
MySQL的经典数字版本: MySQL 8.x 和 MySQL 5.x 可以安装 社区版MySQL 8.x 或者 商业版 MySQL 8.x
MySQL的DDL操作-重点
基本数据库操作
-- 1、查看所有的数据库 show databases ; -- 2、创建数据库 #不推荐使用以下命令,如果数据库存在,则报错 create database mydb1; #推荐使用以下命令,如果数据库存在,则什么也不做,如果数据库不存在,则创建 create database if not exists mydb1; -- 3、选择当前要使用哪个数据库 use mydb1; -- 4、删除数据库 #以下命令不推荐,因为如果数据库不存在,则报错 drop database mydb1; #以下命令推荐,因为如果数据库不存在,则什么也不做 drop database if exists mydb1; -- 5、修改数据库编码 #我们目前的数据库默认就是utf-8编码 -- alter database mydb1 character set utf8;
d=img-5BSVIfZf-1715992255382)
基本表操作
-
数据类型
-
创建表语法
create table [if not exists]表名( 字段名1 类型[(宽度)] [约束条件] [comment '字段说明'], 字段名2 类型[(宽度)] [约束条件] [comment '字段说明'], 字段名3 类型[(宽度)] [约束条件] [comment '字段说明'] )[表的一些设置];
-
创建表操作
-- 1、创建学生表 use mydb1; -- comment是给表字段(列)加注释,可以通过表结构查看注释 -- decimal(10,2) :10表示最多是10为有效数字(整数+小数) ,小数保留2位,整数最多是8位 -- 12345678.34 :整数8位 + 小数2位 -- varchar(20) 这里边最多存入20个字符,超过会截断 create table if not exists student2( sid int comment '学生学号', name varchar(20) comment '学生名字', gender varchar(2) comment '学生的性别', age int comment '学生的年龄', birth date comment '学生的生日', -- 2000-12-23 address varchar(50) comment '学生的地址', score decimal(10,2) comment '学生的成绩' ); use mydb1; -- 查看所有的表 show tables ; -- 查看表创建时的sql语句 show create table student2; -- 查看表结构,表字段名字和类型 desc student; -- 删除表 drop table student;
MySQL的DML操作-重点
insert-插入数据
-
语法
insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3...); #向表中插入某些 insert into 表 values (值1,值2,值3...); #向表中插入所有列
-
代码
#------------------DML操作-insert插入数据----------------------- -- 添加一行数据 insert into student(sid,name,gender,age,birth,address,score) values (1,'宝玉','男',19,'2000-12-23','北京',87); -- 添加一行数据 #前边跟几个字段,后边就要跟几个值,类型要相同 insert into student(sid,name,gender) values (2,'黛玉','女'); -- 添加一行数据 # 如果表的后边没有加字段,则values后边需要给所有字段赋值 insert into student values (3,'宝钗','女',16,'2000-12-23','上海',98); -- 添加多行数据 insert into student values (4,'晴雯','女',17,'2002-12-23','深圳',56), (5,'贾琏','男',34,'2023-10-23','广州',98), (6,'贾雨村','男',156,'2008-02-21','杭州',45);
update-更新数据
-
语法
update 表名 set 字段名=值,字段名=值...; update 表名 set 字段名=值,字段名=值... where 条件;
-
代码
#------------------DML操作-update更新数据----------------------- -- 将所有学生的地址改为:吉山村 update student set address = '吉山村'; -- 将所有学生的age改为18,score改为100 update student set age = 18,score = 100; -- 将所有学生的age在原来基础加上10岁 update student set age = age + 10 ; -- 将 晴雯 的address改为广州 update student set address = '广州' where name = '晴雯'; update student set address = '广州' where sid = 4;
delete-删除数据
-
语法
delete from 表名 [where 条件]; truncate table 表名 或者 truncate 表名
-
代码
#------------------DML操作-delete删除数据----------------------- -- 删除操作,如果后边不加where条件,则会将该表的所有数据全部删除,比较危险 delete from student ; -- 删除宝玉这个学生 delete from student where name = '宝玉'; -- 清空表的所有内容 #注意:delete和truncate原理不同,delete只删除内容,而truncate类似于drop table ,可以理解为是将整个表删除,然后再创建该表; truncate table student; truncate student; -- 作用同上
MySQL的约束-了解
概述
约束就是给某一列加限制,让该列的值复合某种要求,英文:constraint
约束的分类
主键约束(primary key) PK 自增长约束(auto_increment) 非空约束(not null) 唯一性约束(unique) 默认约束(default) 外键约束(foreign key) FK
主键约束
-
特点
1、MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在数据库中尽快的找到某一行。 2、主键约束相当于 非空 + 唯一 的组合,主键约束列不允许重复,也不允许出现空值(null值)。 3、每个表最多只允许一个主键 4、主键约束的关键字是:primary key
-
语法
#----------------方式1----------------------- -- 在 create table 语句中,通过 PRIMARY KEY 关键字来指定主键。 --在定义字段的同时指定主键,语法格式如下: create table 表名( ... <字段名> <数据类型> primary key ... ) #----------------方式2----------------------- --在定义字段之后再指定主键,语法格式如下: create table 表名( ... primary key(字段名) );
-
代码
#----------------方式1----------------------- drop table if exists student; create table if not exists student( sid int primary key comment '学生学号', # !!!添加主键-sid这一列的值不能为空,而且必须唯一 name varchar(20) comment '学生名字', gender varchar(2) comment '学生的性别', age int comment '学生的年龄', birth date comment '学生的生日', -- 2000-12-23 address varchar(50) comment '学生的地址', score decimal(10,2) comment '学生的成绩' ); #----------------方式2----------------------- drop table if exists student; create table if not exists student( sid int comment '学生学号', name varchar(20) comment '学生名字', gender varchar(2) comment '学生的性别', age int comment '学生的年龄', birth date comment '学生的生日', -- 2000-12-23 address varchar(50) comment '学生的地址', score decimal(10,2) comment '学生的成绩', primary key (sid) # !!!添加主键 ,sid这一列的值不能为空,而且必须唯一 ); # 插入成功 insert into student values (1,'宝钗','女',16,'2000-12-23','上海',98); # 插入失败,因为主键不能重复 insert into student values (1,'宝玉','男',16,'2000-12-23','上海',98); # 插入失败,因为主键不能为空 insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98); # 插入失败,因为主键列没有指定值,默认是null值,则不符合主键的要求 insert into student(name,gender) values ('黛玉','女');
-
删除主键
# 删除主键,但是还剩下一个非空约束 alter table student drop primary key; #再删除非空约束,这样主键的所有影响全部消除 ALTER TABLE student MODIFY sid INT NULL;
自增约束
-
概念
1、在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键就会自动加1 2、自动增长必须要加在主键的后边,加了自动增长之后,该列的值可以自己在每次添加数据时加1 3、自动增长的列默认是1开始增长,每次加1 4、主键列必须是数字列 5、自动增长的关键字:auto_increment
-
代码
#------------------DML操作-自动增长----------------------- # 自动增长必须要加在主键的后边,加了自动增长之后,该列的值可以自己在每次添加数据时加1 # 自动增长的列默认是1开始增长,每次加1 # 主键列必须是数字列 drop table if exists student; create table if not exists student( sid int primary key auto_increment, # 给主键添加自增长约束auto_increment name varchar(20) , gender varchar(2) , age int , birth date , address varchar(50) , score decimal(10,2) ); # 你可以执行以下命令多次,发现主键会自增 insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98); # 删除所有数据,主键的历史记录不会被清空,下一次添加依然在之前最大的主键值之上加1 delete from student; # 你可以执行以下命令多次,发现主键会在最大值之上加1 insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98); # 如果你想让主键重新回到1开始自增,则可以使用truncate命令(先删除表,再建表) truncate table student; # 你会发现,主键又从1开始增长 insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98); # 我们也可以设置主键从某个值开始增长 drop table if exists student; create table if not exists student( sid int primary key auto_increment, # 给主键添加自增长约束auto_increment name varchar(20) , gender varchar(2) , age int , birth date , address varchar(50) , score decimal(10,2) )auto_increment = 100; # 我们也可以设置主键从100开始增长 # 插入以下数据,发现主键从100开始,然后依次加1 insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98);
其他约束
create table if not exists student( sid int primary key auto_increment, name varchar(20) not null, # 非空约束,该列的值不能为空 gender varchar(2) unique , # 唯一约束,该列的值必须唯一 age int , birth date , address varchar(50) default '北京', # 默认值约束,该列如果没有给值,则模式是北京 score decimal(10,2) );
,
score decimal(10,2)
)auto_increment = 100; # 我们也可以设置主键从100开始增长
插入以下数据,发现主键从100开始,然后依次加1
insert into student values (null,‘宝玉’,‘男’,16,‘2000-12-23’,‘上海’,98);
### 其他约束 ```sql create table if not exists student( sid int primary key auto_increment, name varchar(20) not null, # 非空约束,该列的值不能为空 gender varchar(2) unique , # 唯一约束,该列的值必须唯一 age int , birth date , address varchar(50) default '北京', # 默认值约束,该列如果没有给值,则模式是北京 score decimal(10,2) );
-
-
-
-
-
-
-
-
-
还没有评论,来说两句吧...