数据库Mysql的基础语法与使用


数据库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 double41);
-- 添加到表开头
alter table student add score double51first-- 在指定列后面添加一列
alter table student add score double52after 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 values1,“瑾年”,“男”,125.2,“2021-08-06,“python人工智能”,“32671794@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


文章作者: 瑾年
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 瑾年 !
评论
  目录