浅谈MYSQL数据库

MySQL是一种开源的关系型数据库管理系统(RDBMS),MySQL数据库管理系统,开发者为瑞典MySQL AB公司,目前属 Oracle作为当前最流行的关系数据库管理系统之一,被广泛地应用中小型网站。由于其具有体积小、速度快、总体成本低,以及开放源码的特点,所以许中小型网站为了降低网站总体成本而选择 MySQL 作为网站数据库。目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统, Apache 作为 Web 服务器,MySQL 作为数据库,PHP作为服务器端脚本解释器。由于这4个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。MySQL 数据库最令人欣赏的特性之一是,它采用的是开放式的架构,甚至允许第三方开发自己的数据存储引擎,这吸引了大量第三方公司的注意并投身于此。自那以后,它已被广泛采用,成为最流行的开源数据库之一,也是全球最流行的数据库之一。


目录

安装MySQL

基本查询

创建表

外连接

索引分类:

约束

视图

SQL修改表修改表


软件下载

mysql5.7 64位下载地址:

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip

电脑是64位的就下载使用64位版本的!

1.6 安装步骤
1、下载后得到zip压缩包.

2、解压到自己想要安装到的目录,本人解压到的是D:\Environment\mysql-5.7.19

3、添加环境变量:我的电脑->属性->高级->环境变量

4、新建mysql配置文件,编辑 my.ini 文件 ,注意替换路径位置

5、启动管理员模式下的CMD,并将路径切换至mysql下的bin目录,然后输入mysqld –install(安装mysql)

6、再输入 mysqld --initialize-insecure --user=mysql 初始化数据文件

7、然后再次启动mysql net start mysql然后用命令 mysql –u root –p 进入mysql管理界面(密码可为空)

8、进入界面后更改root密码

9、修改my.ini文件删除最后一句skip-grant-tables

10、重启mysql即可正常使用

 


                                                         MySQL入门须知

                         


                                                          MySQL数据类型


基本查询

select * from 表名 -- 全列查询
select 字段1 字段2  from 表名 -- 表名查询的显示结果只有这两个字段

- 子查询需用括号包裹。
-- from型
    from后要求是一个表,必须给子查询结果取个别名。
    - 简化每个查询内的条件。
    - from型需将结果生成一个临时表格,可用以原表的锁定的释放。
    - 子查询返回一个表,表型子查询。
    select * from (select * from tb where id>0) as subfrom where id>1;
-- where型
    - 子查询返回一个值,标量子查询。
    - 不需要给子查询取别名。
    - where子查询内的表,不能直接用以更新。
    select * from tb where money = (select max(money) from tb);
    -- 列子查询
        如果子查询结果返回的是一列。
        使用 in 或 not in 完成查询
        exists 和 not exists 条件
            如果子查询返回数据,则返回1或0。常用于判断条件。
            select column1 from t1 where exists (select * from t2);
 

将多个表的字段进行连接,可以指定连接条件。
-- 内连接(inner join)
    - 默认就是内连接,可省略inner。
    - 只有数据存在时才能发送连接。即连接结果不能出现空行。
    on 表示连接条件。其条件表达式与where类似。也可以省略条件(表示条件永远为真)
    也可用where表示连接条件。
    还有 using, 但需字段名相同。using(字段名)
    -- 交叉连接 cross join
        即,没有条件的内连接。
        select * from tb1 cross join tb2;
-- 外连接(outer join)
    - 如果数据不存在,也会出现在连接结果中。
    -- 左外连接 left join
        如果数据不存在,左表记录会出现,而右表为null填充
    -- 右外连接 right join
        如果数据不存在,右表记录会出现,而左表为null填充
-- 自然连接(natural join)
    自动判断连接条件完成连接。
    相当于省略了using,会自动查找相同字段名。
    natural join
    natural left join
    natural right join
    
select info.id, info.name, info.stu_num, extra_info.hobby, extra_info.sex from info, extra_info where info.stu_num = extra_info.stu_id;
 


创建表

-- 创建表
    CREATE [TEMPORARY] TABLE[ IF NOT EXISTS] [库名.]表名 ( 表的结构定义 )[ 表选项]
        每个字段必须有数据类型
        最后一个字段后不能有逗号
        TEMPORARY 临时表,会话结束时表自动消失
        对于字段的定义:
            字段名 数据类型 [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']
-- 表选项
    -- 字符集
        CHARSET = charset_name
        如果表没有设定,则使用数据库字符集
    -- 存储引擎
        ENGINE = engine_name
        表在管理数据时采用的不同的数据结构,结构不同会导致处理方式、提供的特性操作等不同
        常见的引擎:InnoDB MyISAM Memory/Heap BDB Merge Example CSV MaxDB Archive
        不同的引擎在保存表的结构和数据时采用不同的方式
        MyISAM表文件含义:.frm表定义,.MYD表数据,.MYI表索引
        InnoDB表文件含义:.frm表定义,表空间数据和日志文件
        SHOW ENGINES -- 显示存储引擎的状态信息
        SHOW ENGINE 引擎名 {LOGS|STATUS} -- 显示存储引擎的日志或状态信息
    -- 自增起始数
        AUTO_INCREMENT = 行数
    -- 数据文件目录
        DATA DIRECTORY = '目录'
    -- 索引文件目录
        INDEX DIRECTORY = '目录'
    -- 表注释
        COMMENT = 'string'
    -- 分区选项
        PARTITION BY ... (详细见手册)
-- 查看所有表
    SHOW TABLES[ LIKE 'pattern']
    SHOW TABLES FROM 表名
-- 查看表机构
    SHOW CREATE TABLE 表名 (信息更详细)
    DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 / SHOW COLUMNS FROM 表名 [LIKE 'PATTERN']
    SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
-- 修改表
    -- 修改表本身的选项
        ALTER TABLE 表名 表的选项
        eg: ALTER TABLE 表名 ENGINE=MYISAM;
    -- 对表进行重命名
        RENAME TABLE 原表名 TO 新表名
        RENAME TABLE 原表名 TO 库名.表名 (可将表移动到另一个数据库)
        -- RENAME可以交换两个表名
    -- 修改表的字段机构(13.1.2. ALTER TABLE语法)
        ALTER TABLE 表名 操作名
        -- 操作名
            ADD[ COLUMN] 字段定义       -- 增加字段
                AFTER 字段名          -- 表示增加在该字段名后面
                FIRST               -- 表示增加在第一个
            ADD PRIMARY KEY(字段名)   -- 创建主键
            ADD UNIQUE [索引名] (字段名)-- 创建唯一索引
            ADD INDEX [索引名] (字段名) -- 创建普通索引
            DROP[ COLUMN] 字段名      -- 删除字段
            MODIFY[ COLUMN] 字段名 字段属性     -- 支持对字段属性进行修改,不能修改字段名(所有原有属性也需写上)
            CHANGE[ COLUMN] 原字段名 新字段名 字段属性      -- 支持对字段名修改
            DROP PRIMARY KEY    -- 删除主键(删除主键前需删除其AUTO_INCREMENT属性)
            DROP INDEX 索引名 -- 删除索引
            DROP FOREIGN KEY 外键    -- 删除外键
-- 删除表
    DROP TABLE[ IF EXISTS] 表名 
-- 清空表数据
    TRUNCATE [TABLE] 表名
-- 复制表结构
    CREATE TABLE 表名 LIKE 要复制的表名
-- 复制表结构和数据
    CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名


6.外连接

外连接分为左连接 和右连接

SELECT *  

FROM product as a left JOIN category as b

on a.category_id = b.id ;  


7.索引分类:

唯一性索引:索引值具有唯一性。

主键索引: 把主键字段当做索引,唯一索引的一种。

组合索引: 多个字段组合成的索引。

索引的创建:

CREATE  INDEX  index_name   ON tablename(ziduanming);

create unique index index_name   ON tablename(ziduanming);(唯一性索引)

create index 索引名 on 表名(要设置索引的列名)


10.约束

约束保证数据的完整性和一致性
约束分为表级约束和列级约束
对一个数据列建立的约束,列级约束
对多个数据列建立的约束,表级约束
约束类型包括:
NOT NULL
PRIMARY KEY
UNIQUE KEY
DEFAULT
FOREIGN KEY


11.视图

视图是一个虚拟的表,它是基于一个或多个表的查询结果构建而成。

存储过程:存储过程是一组预定义的 SQL 语句,可以在需要时调用以执行特定的任务。

-- 创建触发器
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
    参数:
    trigger_time是触发程序的动作时间。它可以是 before 或 after,以指明触发程序是在激活它的语句之前或之后触发。
    trigger_event指明了激活触发程序的语句的类型
        INSERT:将新行插入表时激活触发程序
        UPDATE:更改某一行时激活触发程序
        DELETE:从表中删除某一行时激活触发程序
    tbl_name:监听的表,必须是永久性的表,不能将触发程序与TEMPORARY表或视图关联起来。
    trigger_stmt:当触发程序激活时执行的语句。执行多个语句,可使用BEGIN...END复合语句结构
-- 删除
DROP TRIGGER [schema_name.]trigger_name
可以使用old和new代替旧的和新的数据
    更新操作,更新前是old,更新后是new.
    删除操作,只有old.
    增加操作,只有new.
-- 注意
    1. 对于具有相同触发程序动作时间和事件的给定表,不能有两个触发程序。
-- 字符连接函数
concat(str1,str2,...])
concat_ws(separator,str1,str2,...)
-- 分支语句
if 条件 then
    执行语句
elseif 条件 then
    执行语句
else
    执行语句
end if;
-- 修改最外层语句结束符
delimiter 自定义结束符号
    SQL语句
自定义结束符号
delimiter ;     -- 修改回原来的分号
-- 语句块包裹
begin
    语句块
end


SQL修改表修改表

语法:alter table 表名 add 列名 类型(长度) 约束;alter table user add image varchar(20) not null;修改表:修改列类型,长度和约束

语法: alter table 表名 modify 列名 类型(长度) 约束;alter table user modify image varchar(50);修改表:删除列

语法:alter table 表名 drop 列名;alter table user drop age;修改表:修改列名称

 语法:alter table 表名 change 旧列名 新列名 类型(长度) 约束alter table user change image pic varchar(50) not null;修改表:修改表名

语法:rename table 表名 to 新的表名;rename table table user to person;修改表:修改表的字符集语法:MySQL的用户


MySQL的应用

MySQL广泛用于Web应用程序、嵌入式应用程序和个人应用程序等领域。以下是几个主要的应用场景。

Web应用程序: MySQL特别适用于像在线购物、社交网络、博客和其他一些Web应用程序,因为它能够管理大量数据并提供良好的性能。
数据仓库应用: MySQL可以存储大量数据,并能快速查询和分析数据,因此它也适用于数据仓库应用。
嵌入式应用程序: MySQL也可以作为嵌入式数据库使用,能够在应用程序中占用较少的内存和CPU,因此适合于嵌入式设备和应用。
个人应用程序:由于MySQL易于学习和使用,并且可以轻松地与其他应用程序和语言进行集成,因此它也适合于个人应用程序开发。


MySQL的优点

  1. 开源免费:MySQL是一款开源免费的关系型数据库管理系统,可以节省开发成本,适合毕业生的自主研发。

  2. 易于安装和使用:MySQL的安装和配置非常简单,可以快速上手,而且MySQL具有良好的可扩展性和可定制性,适合各种规模的项目。

  3. 数据库管理功能强大:MySQL提供了完整的数据库管理功能,如创建、修改、删除数据库、表和字段等,还支持多种数据类型和索引,可以满足大多数毕设需求。

  4. 大量的资源:MySQL是一个广泛使用的数据库,有大量的相关资料和社区资源可供参考,可以帮助毕业生快速解决问题和学习。

  5. 安全性高:MySQL的安全性非常高,可以提供多层次的安全控制,如用户认证、权限管理等,可以保护数据的安全性。


MySQL的缺点

专业知识:尽管MySQL易于学习,但它也需要一定的数据库管理知识来使用它的高级功能。
不支持一些功能:MySQL虽然支持大多数常用的功能,但它对某些特定功能的支持可能较软弱。
固定的数据模型:MySQL是一种关系型数据库,因此它只能处理固定数据模型的数据。
垂直扩展的限制:尽管MySQL支持垂直扩展,但它有一定的限制,因为它需要更高的硬件配置和更多的资源来维护更大的数据库。


MySQL是一种开源的关系型数据库管理系统(RDBMS),具有高性能、高可靠性、易用性、扩展性等优点,可以普遍应用于Web应用程序、数据仓库应用、嵌入式应用程序和个人应用程序等各种场景。它也有一些缺点,例如需要专业知识、固定的数据模型、不支持某些功能以及垂直扩展的限制。但总的来说,它是一种被广泛采用的开源数据库系统,具有重要的意义。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值