MYSQL基础知识

本文介绍了数据库的基本概念,强调了数据库的优点,如数据共享性和完整性,并列举了常见的数据库类型如MySQL、SQLServer和Oracle。接着,详细阐述了MySQL的范式、SQL语句的基本操作,包括DML(增删改查)以及数据类型的分类。此外,还涵盖了数据库的事务处理、引擎选择以及触发器的使用。
摘要由CSDN通过智能技术生成

目录

目录

目录

1.什么是数据库

1.1数据库的优点:

1.2常见的数据库

MYSQL三大范式

SQL语句

1.基本操作

2.数据库操作

3.数据类型

4.建表

5.数据的操作(表)DML

约束

6.创建用户

7.授权

8.修改用户密码

9.撤销用户权限

10.删除用户

简单查询

1.查询固定列

2.查询列起别名

3.去除重复

运算符

五大查询语句

where:根据特定的条件(表结构存在的)进行查询数据  

子查询

多表查询

视图

数据库事务、引擎

触发器


1.什么是数据库

数据库是存放数据的仓库。它的存储空间很大,可以存放大量数据。用户可以对文件中的数据进行新增、查询、更新、删除等操作。

1.1数据库的优点:

  • 数据的共享性高、冗余度低、易扩充
  • 保持数据的安全、完整
  • 数据独立性高

1.2常见的数据库

  • MySQL :是一种关系型数据库,体积小、速度快
  • SQL Server:微软的商业化产品,SQL语句兼容性好,商业化成熟度高
  • Oracle:基于内存计算的关系数据库
  • Redis:Key-Value数据库,并提供多种语言的API

MYSQL三大范式

第一范式

确保每列保持原子性(不可再分割)

第二范式

在第一范式的基础上,第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(一个表中必须有一个主键)

第三范式

在第二范式的基础上,确保数据表中的每一列数据都和主键直接相关,而不能间接相关

SQL语句

1.基本操作

  • 查看所有数据库名称:SHOW DATABASES
  • 切换数据库:USE student,切换到student数据库

2.数据库操作

  • 创建数据库:create database databasename;
  • 删除数据库:drop database databasename;
  • 查看表中的所有数据:select * from tablename;
  • 查看表结构:desc tablename;
  • 创建表:create table tablename(字段名 数据类型,字段名 数据类型,....);
  • 删除表:drop table tablename;
  • 表追加一列:alter table tablename  add 列声明;

3.数据类型

数值型:整数型和浮点型

        整数型:tinyint(-128--127)  smallint   int  bigint   1byte=8bit  1kb=1024byte  1Mb  GB  TB

                    ----int (M)  

                    Unsigned:无符号

                    M:零填充的位数   int(5) zerofill unsigned 00023  12345  int unsigned 

                    Zerofill:零填充

        浮点型:float  double  decimal money  real

                    float(M,N)        M:浮点数的精度       N:小数点的位数

                    float(5,2)---999.99

字符型:

        定长:char(长度)   char(2)---a----length:2

        变长:varchar(长度) varchar(2)--a---length:1  

        text

日期型:

        date

        datetime:  ----now()

        year

        ‘2019-09-09’

4.建表

        CREATE TABLE 表名(
                列名 列类型,
                列名 列类型,
                …
                );

        例如:      

create table t_testint(id1 int,id2 int unsigned,id3 int(5),id4 int(5) zerofill);

5.数据的操作(表)DML

insert into (增):

        选择型的数据录入:   int a;  a=20

        insert into tablename(字段名,字段名,...) values(值,值,...)   ‘zs’  ‘2023-3-1’   1  99.99

        完全匹配:

        Insert into tablename values(值,值....);

 Delete(删):

        Delete from tablename;#删除所有

        Delete from tablename where 条件字段名=值;【条件:一般会写成主键】

Update(改):

        Update tablename set 字段名=值,字段名=值,...

        Update tablename set 字段名=值,字段名=值,... where 条件字段名=值;【条件:一般会写成主键】

Select(查)

        Select * from tablename;

约束

表规范的一种解决方式。

主键:primary key 用来唯一标识一条数据,一个表中只能有一个主键,不允许为null

           一般不把实际业务中的字段当成主键。

非空:not null

默认: default 默认值

唯一:unique 用来唯一标识一条数据  index,一个表中可以有多个唯一键,可以允许为null

check约束:mysql无强制功能。

以上约束都是单表的规范

外键

其它:自增长 auto_increment  一般主键自增长。(整型)

关系

        1:1(一对一)

        1:n(一对多) 班级和学生  ----FK

        M:n(多对多)

联合主键

        Create table t_score(

                Sid int,# 关联学生表

                Cid int,# 关联课程表

                Score float,

                Primary key(sid,cid)

        )

6.创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

说明:

username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码

7.授权

GRANT privileges ON databasename.tablename TO 'username'@'host'

说明:

privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.

8.修改用户密码

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");

9.撤销用户权限

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

10.删除用户

DROP USER 'username'@'host';

简单查询

1.查询固定列

select sno,name from t_stu;

2.查询列起别名

select sno as stuno,name sna from t_stu s;

3.去除重复

select distinct address from t_stu;

运算符

        算术运算符 +  -  *  /  %  ++  --

        关系运算符 > >=  < <= = !=(<>)不等于

        逻辑运算符 and  or  not

        其它运算符 is  is not   in()   not in()  between...and[>=  <= ]  as  like  any  all

五大查询语句

where:根据特定的条件(表结构存在的)进行查询数据  

根据条件查询信息

精确查询

        #查询地址是大同或者太原的学生信息

        select * from t_student where address='太原' or  address='大同';

        select * from t_student where address in('太原','大同');

        in

        #not in 不在...范围

        #null查询 is  is null

        #not null查询 is not null

模糊查询  like % _

        %关键字%:只要包含关键字就可以查询出来

        %keyword:以keyword结尾

        keyword%:以keyword开头

        Like 李_

        查询学生【姓名或地址】中包含’s’的学生信息

        select * from t_student where name like '%s%' or address like '%s%';

group by

        分组统计查询,一般统计函数(聚合函数)配合使用。

        查询结果可以是聚合函数和分组后的字段信息。

        语法:group by 字段名,字段名....

        5个:count()  max()  min()  avg()  sum()

Having

        可以将查询结果当作查询条件

order by

        asc

        Desc

        多个字段进行排序  用,隔开    字段 desc  字段(asc)

        Select * from t_user order by id desc;

Limit

         Limit M,N 

         M:偏移量                  N:显示的条数

         Limit 0,10                 Limit 10

使用顺序:

        Where>group by>having>order by>limit

子查询

        From子查询

        select * from (select * from t_stu  order by id desc limit 10)  a order by age desc;

        Where子查询

        select * from t_stu where cid in(select id from t_class);

多表查询

        笛卡尔积:一个表的行数*另外一个表的行数

        Where 多表:  select …. From 表1,表2,… where 关联条件       最少两张表

        左连接(left join)

                Select ...... from

                        Lefttable Left join righttable

                On条件:关联条件

        将左表的全部信息与右表的信息进行匹配,匹配成功将信息显示出来,匹配不成功,右表用null表示.

        右连接(right join)

                Select ….. from

                        lefttbalename  right join righttablename

                        on lefttablename.字段名=righttablename.字段名

        将右表的全部信息与左表的信息进行匹配,匹配成功将信息显示出来,匹配不成功,左表用null表示.

        内连接(inner join)

                        Select ….. from lefttbalename  [inner] join righttablename

                        on lefttablename.字段名=righttablename.字段名

        将右表的全部信息与左表的信息进行匹配,只显示匹配成功的结果

视图

        视图是一种虚拟表 ,本身是不具有数据的,占用很少的内存空间,

        视图建立在已有表的基础上, 视图赖以建立的这些表称为基表

创建

        create view viewname

                as

                select sql 语句

数据库事务、引擎     

四个特性

        原子性(A):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。

        一致性(C):事务必须使数据库从一个一致状态变换到另外一个一致状态

        隔离性(I):一个事务内部的操作及使用的数据对并发的其他事务是隔离的

        持久性(D):一个事务一旦提交成功,它对数据库中数据的改变将是永久性的,接下来的其他操作或故障不应对其有任何影响。

Mysql:使用事务   

        开启事务 start transaction;

        编写事务中的sql语句(insert、update、delete)

        成功:提交 commit

        错误:回滚 rollback

MyISAM(5.5版之前)拥有较高的插入、查询速度,但不支持事物

InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),InnoDB是默认的MySQL引擎

触发器

        监视地点(table)

        监视事件(insert,update,delete)

        触发时间(after,before)

        触发事件(insert,update,delete)

创建

        Create trigger triggerName

                After/before  insert/delete/update  on 表名

                For each row

                Begin

                        Sql语句;( insert/delete/update);

                end

删除

        drop trigger 触发器名;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值