MySQL基础

这篇博客详细介绍了MySQL的基础知识,包括建表、查看表结构、插入、查询、修改和删除数据,以及表结构的修改。进一步讲解了表的完整性约束,如非外键和外键约束,并探讨了数据备份。此外,还涵盖了DQL语言,如单表查询和多表联合查询。最后,深入讨论了事务的概念、特征、并发问题和隔离级别,以及视图和存储过程的作用和使用方法。
摘要由CSDN通过智能技术生成

备注:Server version: 5.7.20

一、建表语句:

/*
建立一个存储学生信息的表,
字段包括:学号、姓名、性别、年龄、入学日期、班级,email等信息。
*/
-- 创建数据库表
create table t_student(
  sno int(6), -- 6是定义的显示长(款)度,不代表数据类型占用的字节数,长度不够的话MySQL会自动增加长度。
	            -- 注意:不是所有的类型超过定义的长度后MySQL都会自动扩充,比如:score    double(4,1)表示小数部分为1,总宽度为4,并且不会自动扩充。 
	sname VARCHAR(5), --5个字符
	sex CHAR(1),
	age int(3),
	enterdate date,
	classname VARCHAR(10),
	email VARCHAR(15)
);

二、查看表结构:

1.sql:

desc t_student;

2.查询结果:

三、查看建表语句:

1.sql:

show create table t_student;

CREATE TABLE `t_student` (
  `sno` int(6) DEFAULT NULL,
  `sname` varchar(5) DEFAULT NULL,
  `sex` char(1) DEFAULT NULL,
  `age` int(3) DEFAULT NULL,
  `enterdate` date DEFAULT NULL,
  `classname` varchar(10) DEFAULT NULL,
  `email` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

2.查询结果:

四、插入语句:

1.sql:

insert into t_student values(1,'张三','男',18,'2024-04-19','软件工程1班','123@163.com');

2.注意事项:

1.int宽度是显示宽度,如果超过,可以自动增大宽度,int底层都是4个字节;
2.时间的方式多样"1256-12-23";"1256/12/23","1256.12.23"; 
3.字符串不区分单引号和双引号; 
4.如何写入当前的时间now(),sysdate(),CURRENT_DATE(); 
5.char varchar是字符的个数,不是字节的个数,可以使用binary,varbinary表示定长和不定长的字节个数;
6.如果不是全字段插入数据的话,需要加入字段的名字;
-- 以下sql均正确:
insert into t_student values (1,'张三','男',18,'2022-5-8','软件1班','123@126.com');
insert into t_student values (10010010,'张三','男',18,'2022-5-8','软件1班','123@126.com');
insert into t_student values (2,'张三','男',18,'2022.5.8','软件1班','123@126.com');
insert into t_student values (88,"tony",'男',18,'2024/4/19','软件1班','123@126.com');
insert into t_student values (8,"张三",'男',18,CURRENT_DATE(),'软件1班','123@126.com');
insert into t_student values (9,"易烊千玺",'男',18,now(),'软件1班','123@126.com');
insert into t_student (sno,sname,enterdate) values (10,'李四',SYSDATE());

 五、查询语句:

1.sql:

select * from t_student;

2.结果:

 

 六、修改和删除数据:

1.注意事项:

①关键字、表、字段名不分大小写;
②默认情况下内容不分大小写;
③删除操作from关键字不能少;
④修改、删除操作不能忘记加限制条件。

2.操作:

修改数据:
update t_student set age=20 where sname='tony';
删除数据:
delete from t_student where sno=2;

 七、修改表结构

1.增加一列:

alter table t_student add score double(5,2); --5:存放数据的数字总位数(有5个数字);2:小数点后的位数
alter table t_student add score double(5,2) FIRST; --增加一列放首列
alter table t_student add score double(5,2) AFTER sex; --增加一列放sex和age字段之间

2.给新增字段填数据:

update t_student set score=123.5678 where sno=1; --多余位数测小数会四舍五入之保留两位

3.删除一列:

alter table t_student drop score;

4.修改一列:

-- 修改字段能存放的数字位数和小数点后数字位数之后,原来的数据会按照新设定的要求显示,原来的123.57会四舍五入显示成123.6
-- modify修改的是字段的数据类型,不修改字段名字
alter table t_student modify score float(4,1); 
alter table t_student change score score_new double(5,1); -- change修改列名和列的类型定义

5.删除整张表:

drop table t_student;

八、表的完整性约束:

1.非外键约束:

/*
建立一张用来存储学生信息的表
字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息

约束:
建立一张用来存储学生信息的表
字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息
【1】学号是主键 = 不能为空 +  唯一 ,主键的作用:可以通过主键查到唯一的一条记录【2】如果主键是整数类型,那么需要自增
【3】姓名不能为空
【4】Email唯一
【5】性别默认值是男
【6】性别只能是男女
【7】年龄只能在18-50之间
*/
-- 创建数据库表:
create table t_student(
        sno int(6) primary key auto_increment, -- 主键约束、自动增加约束
        sname varchar(5) not null, -- 非空约束(字段值不能为空)
        sex char(1) default '男' check(sex='男' || sex='女'), -- 默认值约束(给字段设置默认值)、检查约束
        age int(3) check(age>=18 and age<=50), -- 检查约束(限制某个字段的取值范围)
        enterdate date,
        classname varchar(10),
        email varchar(15) unique -- 唯一性约束
);

-- 添加数据:
--  1048 - Column 'sname' cannot be null 不能为null
-- 3819 - Check constraint 't_student_chk_1' is violated. 违反检查约束
insert into t_student values (1,'张三','男',21,'2023-9-1','java01班','zs@126.com');
-- 1062 - Duplicate entry '1' for key 't_student.PRIMARY' 主键重复
-- > 1062 - Duplicate entry 'ls@126.com' for key 't_student.email' 违反唯一约束
insert into t_student values (2,'李四','男',21,'2023-9-1','java01班','ls@126.com');
insert into t_student values (3,'露露','男',21,'2023-9-1','java01班','ls@126.com');
-- 如果主键没有设定值,或者用null.default都可以完成主键自增的效果
insert into t_student (sname,enterdate) values ('菲菲','2029-4-5');
insert into t_student values (null,'小明','男',21,'2023-9-1','java01班','xm@126.com');
insert into t_student values (default,'小刚','男',21,'2023-9-1','java01班','xg@126.com');
-- 如果sql报错,可能主键就浪费了,后续插入的主键是不连号的,我们主键也不要求连号的
insert into t_student values (null,'小明','男',21,'2023-9-1','java01班','oo@126.com');

1.表级约束:

备注:表级约束指的是在创建表的sql后面加约束。自增约书、非空约束、默认值约束只能有列级约束,只能在sql的字段后面加。

-- 创建数据库表:
create table t_student(
        sno int(6) auto_increment, -- 主键约束、自动增加约束(自动增加功能只能在字段上加)
        sname varchar(5) not null, -- 非空约束(只能在字段上加)
        sex char(1) default '男', -- 默认值约束(只能在字段上加)
        age int(3), -- 检查约束(限制某个字段的取值范围)
        enterdate date,
        classname varchar(10),
        email varchar(15),
				constraint pk_stu primary key(sno), -- pk_stu 主键约束的名字
			  constraint ck_stu_sex check (sex = '男' || sex = '女'), -- ck_stu_sex:性别检查约束的名字
			  constraint ck_stu_age check (age >=18 and age<=50),	-- ck_stu_age:年龄检查约束的名字 
				constraint uq_stu_email unique (email) -- uq_stu_email:唯一约束的名字
);

2.列级约束:

备注:创建表时sql的字段后面加约束条件。但是非空、默认值约束必须在创建表时在字段后面加,不支持通过sql语句单独添加。

drop table t_student;
select * from t_student;

-- 创建数据库表只加了非空、默认值约束
create table t_student(
        sno int(6),
        sname varchar(5) not null,
        sex char(1) default '男',
        age int(3),
        enterdate date,
        classname varchar(10),
        email varchar(15)
);
-- 创建表以后添加约束:
alter table t_student add constraint pk_stu primary key (sno); -- 主键约束
alter table t_student modify sno int(6) auto_increment; -- 修改自增条件(不支持和添加主键约束的sql放在一条语句)
alter table t_student add constraint ck_stu_sex check (sex = '男' || sex = '女'); -- 添加性别检查约束
alter table t_student add constraint ck_stu_age check (age >=18 and age <=50); -- 添加年龄检查约束
alter table t_student add constraint uq_stu_email unique (email); -- 添加邮箱唯一性约束
--查看表结构:
desc t_student;

建立环境实验和数据库/ 实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的 通过本实验的学习,使学生熟悉SQL Server 2014的集成环境,帮助学生掌握数据库、的建立方法以及SQL Server的数据导入方法 二、实验内容    (一)、SQL Server 2014的安装 SQL Server2014的安装过程与 SQL Server 2008、SQL Server2012的安装过程类似,都提供了一个功能树以用来安装所有 SQL Server 组件,包括计划、安装、维护、工具、资源、高级、选项等功能。下面是各功能选项中所包含的内容,如图3-1所示。 图3-1 安装计划中的内容 (1)选择“安装”功能,因为要创建SQL Server 2014的全新安装,单击“全新SQL Server 2014独立安装或向现有安装添加功能”选项,如图3-2所示。 图3-2 “安装”功能中的内容 (2)在“产品密匙”页上,选择相应的单选按钮,这些按钮指示是安装免费版本的SQL Server还是具有产品密匙的产品版本,如果使指免费的评估版,只有180天的试用期限,如图3-3所示。 图3-3 “产品密钥”界面 (3)在“许可条款”页上阅读许可协议,然后选中相应的复选框以接受许可条款和条件。如图3-4所示。 图3-4 “许可条款”界面 (4)系统进行安装程序支持规则检查,以确定安装SQL Server安装程序支持文件时可能发生的问题。必须更正所有的失败,安装程序才能继续。如图3-5所示。 图3-5 “安装规则”界面 (5)在“设置角色”页上选择SQL Server功能安装,如图3-6所示。 图3-6 “设置”角色界面 (6)在“功能选择”页上选择要安装的组件。选择功能名称后,右侧窗体中会显示每个组件的说明。可以根据实际需要,选中一些功能,如图3-7所示。一般应用可选择“数据库引擎服务”、“客户端工具连接”、“SQL客户端连接”和“管理工具”等选项。 图3-7“功能选择”界面 (7)在“实例配置”页上制定是安装默认实例还是命名实例,对于默认实例,实例的名称和ID都是MSSQLSERVER,也可以自己“命名实例”安装实例,如图3-8所示。SQL Server支持多个实例,即支持在同一台计算机上同时运行多个SQL Server数据库引擎实例,每个SQL Server数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。应用程序连接同一台计算机上的SQL Server数据库引擎实例的方式与连接其它计算机上运行的SQL Server数据库引擎的方式基本相同。 图3-8 “实例配置”界面 (8)在“服务器配置”页上指定SQL Server服务的登录帐户。SQL Server提供了多种服务,可以为所有SQL Server服务分配相同的登录账户,也可以分别配置每个服务账户。还可以指定服务是自动启动、手动启动还是禁用。Microsoft建议对各服务账户进行单独配置,以便为每项服务提供最低特权,即向SQL Server服务授予它们完成各自任务所需的最低权限,如图3-9所示。SQL Server中的每个服务代一个进程或一组进程,每个进程需要有访问SQL Server相关文件和系统注册的权限,为了能让SQL Server服务在操作系统中正常的启动和运行,就需要指定SQL Server的服务帐户,所以服务帐户指的是Windows操作系统中的帐户。 图3-9 “服务器配置”界面 (9)在“数据库引擎配置”的“服务器配置”页上指定身份验证模式、用户名、密码,如图3-10所示。这里的用户身份验证指的是登录到服务器使用的身份验证模式及用户名和密码。身份验证模式分为“Windows身份验证模式”和“混合模式(SQL Server身份验证和Windows身份验证)”。如果选择“Windows身份验证模式”示则只能使用Windows的帐号登录,即使用当前登录到操作系统的帐号进行登录,通过这种方式用户登录到SQL Server中时不再需要输入帐号和密码。如选择“混合模式(SQL Server身份验证和Windows身份验证)”示除了可以用使用登录到Windows的帐号作为登录的依据外,还可以使用SQL Server系统的帐号登录,这里必须为内置SQL Server系统管理员账户(SA)提供一个强密码。必须至少为SQL Server实例指定一个系统管理员。若要添加用以运行SQL Server安装程序账户,则要单击“添加当前用户”按钮。若要向系统管理员列中添加账户或从中删除账户,则单击“添加…”或“删除…”按钮,然后编辑将拥有SQL Server实例的管理员特权的用户、组或计算机列。 图3-10 设置身份验证模式和管理员 (10)在“准备安装”页显示安装过程中的安装选项的树视图,如图3-11所示。若要继续,单击“安装”按钮。在安装过程中,“安装进度”页会提供相应的状态,因此可以在安装过程中监视安装进度。 图3-121“准备安装”界面 (11)安装完成后,“完成”页提供指向安装日志文件摘要以及其他重要说明的链接。如图3-12所示。 图3-12 “安装完成”界面 (二)、建库建练习      1、利用语句建库和建创建学生数据库StuDB,文件名和位置自定,在此数据库中创建如下三张学生(student) (   学号(sno) 普通编码定长字符类型,长度9,主码,   姓名(sname) 普通编码定长字符类型,长度10,非空,   性别(ssex) 统一编码定长字符类型,长度2,   年龄(sage) 微整型,   所在系(sdept) 统一编码可变长字符类型,长度20 ) 课程(course) (   课程号(cno) ,通编码定长字符类型,长度4,主码,   课程名(cname) 统一编码定长字符类型,长度,40,非空,   开课学期(Semester) 短整数, 学分(credit) 短整数 ) 修课(sc)(   学号(sno) 普通编码定长字符类型,长度7,主码,外码   课程号(cno) 普通编码定长字符类型,长度6,主码,外码   成绩(grade) 小整型,   修课类别(ctype)普通编码定长字符类型,长度4 ) 2、建立“汽车”数据库,文件名和位置自定,在此数据库中创建如下三张: 汽车(CarT),结构如下:   汽车序号(CId) 整型 主关键字,   汽车名称(CName) 普通编码定长字符类型 长度为10  非空,   型号(CType)普通编码变长字符类型 长度为60  非空,   价格(CPrice) 整型,   车身眼色(Ccolor)普通编码变长字符类型 长度为20。 部门(DepartT),结构如下:   部门序号(DId)整型 主关键字,   部门名(DName)普通编码定长字符类型 长度为20   非空,   负责人名(DLead)普通编码定长字符类型 长度为10  非空,   人数(DAmount) 整型。 汽车出厂(FacT),结构如下:   汽车序号(CID) 整型 非空,   部门序号(DId) 整型 非空,   出厂日期(FDate)小日期时间型 非空,   出厂数量(FAmount) 整型,   出厂价格(FPrice) 整型。   其中:主关键字为(汽车序号,部门序号,出厂日期)   “汽车序号”为引用汽车的“汽车序号”的外部关键字; “部门序号”为引用部门的“部门序号”的外部关键字。 3、使用数据库的可视化工具建库建 建立银行贷款,具体要求同课堂教学的建库建一致。 银行(BankT)( 银行代码(Bno) 主键 银行名称(Bname) 非空 电话(Tel) ) 法人(LET)( 法人代码(Eno)主键 法人名称(Ename)取值唯一 经济性质(Enature) 注册资金(Ecapital) 法定代人(Erep) ) 贷款(LoanT)( 法人代码(Eno) 银行代码(Bno) 贷款日期(Ldata) 贷款金额(Lamount) 贷款期限(Lterm) )        (三)、数据导入练习 将“学生数据库数据.xls”中的数据导入到学生数据库的三张中。 将“银行贷款数据.xls”中的数据导入到银行贷款数据库的三张中。 三、实验报告 将实验结果反映在实验报告中,并对实验中遇到的问题及解决方案、进行整理、分析总结,提出实验结论或自己的看法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值