数据库Mysql的基础语法与使用
1-mysql的安装
安装包在参考资料的课件中有
记住mysql的默认端口,默认用户名是root,环境变量可以不设置,它只是让你能使用dos mysql命令,作用不大。
设置环境变量https://blog.csdn.net/li93675/article/details/80700152
此电脑右击-管理-服务和应用程序-服务 可查看mysql的服务状态
2-如何彻底卸载mysql
不彻底卸载,第二次安装会安装不上
首先关闭此电脑右击-管理-服务和应用程序-服务 中mysql的服务
再从控制面板卸载mysql installer-community和mysql server 8.0两个软件(版本)
再删除安装目录的文件(有时卸载不会自动删除),一般在c\program files\mysql
再删除c\program files(x86)\mysql ps:x86一般就是32位的软件
再删除c\program data\mysql(在隐藏文件夹,记得勾选显示隐藏文件夹选项)
再清理mysql注册表(不是必须的)
再删除path环境变量中关于mysql的安装路径
win7缺少插件,安装不了mysql就自行下载插件
还安装不了,就是mysql的一些文件没有删感觉,你又不晓得这个文件在哪,建议重装系统。
3-Navicat
远程管理数据的图形化界面软件
与navicat相似的软件还有sqlyog
安装包在参考资料的课件中
4-数据库的一些基础知识
4.1-数据库分类
SQL 的全称是 Structured Query Language, 中文含义是:结构化查询语言. 它是个关系数据库的标准语言
详细请阅读参考资料的课件
4.2为什么用Mysql
因为mysql免费,操作简单,速度快,成本低,易安装卸载,Oracle性能更好,但运营成本太高,安装麻烦,小公司也用不起,维护难。其他数据库管理系统各有各的优缺点,见课件。
5-Mysql连接navicat遇到的问题
连接mysql提示*Authentication plugin ‘caching_sha2_password’ cannot be loaded*
这里是因为navicat12与mysql的密码加密规则不同导致
解决方法参考csdn:https://blog.csdn.net/u011182575/article/details/80821418
6-入门
sql也有很多版本标准,我们一般使用sql-92和sql:1999
alter修改,manipulation操作,definition定义
7-DQL与DML与DDL
-- 表的建立 ddl语言
CREATE table student(
sno int(3),
name varchar(55),
sex char(2),
age int,
dtdate date,
classname varchar(55),
email varchar(55)
-- 最后一条不需要“,”结尾
)
-- 查询表中数据 dql语言
select *from student
-- *代表全部的意思,查询来自student的全部信息
-- 查询表的结构信息,description,展示出表的数据类型并说明
desc student
-- 查询完整的建表sql语句
show create table student
int会自动扩充,所以不需要给长度,char是定长字符串,
如char(100),大小(0-255)里面只放”瑾年“两个字,还是占100个字符
varchar(0*65535)是变长字符串,varchar(100)放“瑾年”只占2个字符
当数据很大就用text,存放音频视频就用blog,但不常用。
时间戳与datetime的区别是,当不赋予时间,时间戳自动获取当前系统时间
7.1-DDL
在表中添加一列ddl
-- 默认添加在最后
alter table student add score double(4,1);
-- 添加到表开头
alter table student add score double(5,1) first;
-- 在指定列后面添加一列
alter table student add score double(5,2) after age;
-- ps:此语句跟随此博客前语句
-- double(4,1)表示四个长度,1个小数位,比如123.1
修改列信息
alter table student modify score int;
-- 把score的类型改成int,原先设置的是double
alter table student change score sco double(4,3)
-- change既可以改变类型也能修改名字,此语句把列 名字score改为sco,类型改成double(4,3)
删除列
alter table student drop sco;
删除表
drop table student
修改表的名称
alter table student rename to teachers;
7.2DML数据的增删改
-- 新增
insert into student values(1,“瑾年”,“男”,12,5.2,“2021-08-06,“python人工智能”,“xxxxxxx@qq.com”);
-- 不区分单双引号,上述语句字符串单引号也行,每个数据见用逗号隔开,系统按照values顺序赋值给相关列
-- 时间可以是2022-08-01也可以2022/08/01也可以2022.08.01
-- 时间可以用函数now(),CURRENT(),sysdate()代替,自动获取现在的时间
-- 指定列的添加
insert into student(name) values('成成');
insert into student(sex,name) values("男","瑾年")
--指定了列,后面的数据按指定列顺序赋值
注意括号和引号都要用英文的,不然报错
-- 修改 把sno=2的学生年纪 修改成19岁
update student set age=19 where sno=2
-- set后面是修改的列,where后面是修改满足条件
update student set age=100,dtadate="1921-06-03" where sno=2 sex="男"
不管是修改还是删除记得加条件,不然会全部选中修改和删除
-- 删除
delete from student where sno=2;
7.3DQL
8-表的完整性约束
用途:如果没有约束,数据中就会出现许多相同数据,从而无法通过条件where精确选中一条数据,也会参杂很多不合法数据
主键只有一个
列级约束
create table student3(
sno int primary key auto_increment,
name varchar(20) not null,
sex char(1) not null default'男' check(sex="男"or sex="女"),
age int check(age>=0 and age<=130),
dtdate date not null,
calssname varchar(50) not null,
email varchar(55) unique
)
SELECT * FROM student3
表级约束
constraint约束,notnull和default只能写在列级约束
create table student4(
sno int auto_increment,
name varchar(20) not null,
sex char(1) not null default'男' ,
age int ,
dtdate date not null,
calssname varchar(50) not null,
email varchar(55),
constraint pk_stu4_sno PRIMARY KEY(sno),
constraint uk_stu4_email unique(email),
constraint ck_stu4_sex check(sex="男" or sex="女")
-- 格式为constraint +你想设置的约束名(方便自己识别)+约束(约束对象)
)
自增auto_increment必须是主键才有
表建立完成后如何添加约束以及如何删除约束
外键约束
参考资料
尚学堂https://www.bilibili.com/video/BV19K4y1P7vq?p=1
课件【尚学堂】MySQL数据库零基础入门到精通全套教程链接: https://pan.baidu.com/s/1hTVI1awirnhO99_XSywz9A 提取码: e9g7