mysql01

###数据库
####数据库简介

  • 通过IO流自己对数据进行操作需要写大量的代码,而且不能保证程序的执行效率,IT行业中凡是很常用实现又很麻烦的业务,通常会有完整的解决方案,数据库软件就是对数据增删改查的解决方案,程序员只需要学习如何使用数据库软件即可。
  • 什么是DBMS: DataBase数据库Management管理System系统(数据库管理软件),常见的DBMS: MySQL、Oracle、DB2、SQLserver等
    ####DBMS介绍:
  1. MySQL: Oracle公司产品, 08年被SUN公司收购,09年Sun公司被Oracle收购,担心MySQL被闭源,原MYSQL创始人们离开Oracle创建了MariaDB,市场占有率排名第一。
  2. Oracle: Oracle公司产品,市场占有率排名第二,性能最高,价格最贵,老板拉力.艾莉森。
  3. SQLServer: 微软公司产品,市场占有率排名第三,主要应用在微软的整套解决方案中
    整套解决方案: 开发语言+操作系统+web服务软件+数据库软件
  4. DB2: IBM公司产品,一般应用在IBM整套解决方案中
  5. SQLite: 轻量级数据库。安装包只有几十k,应用在移动设备和嵌入式设备中
  • 开源和闭源区别:
  1. 开源: 开放源代码,免费,盈利方式:靠提供服务赚钱,有技术大牛无偿维护升级。
  2. 闭源:不公开源代码,收费,盈利方式:靠卖产品和卖服务赚钱,有技术大牛攻击,不过公司有钱可以养一帮人维护。
    ###SQL
  • Structured Query Language:结构化 查询 语言 ,用于程序员和数据库之间的交流,学习数据库主要学习的就是这门语言
    ####如何连接MySQL数据库软件
  1. window:
  2. linux:在空白区域右键-》终端-》mysql -uroot -p 回车-》输入密码(没有密码直接敲回车)敲回车
  3. 退出指令: exit
    ####数据库相关SQL
  4. 查询所有数据库
  • 格式:show databases;
  1. 创建数据库并指定字符集
  • 格式: create database 数据库名 character set utf8/gbk;
    create database db1 character set utf8;
    show databases;
    create database db2 character set gbk;
  1. 查看数据库详情
  • 格式: show create database 数据库名;
    show create database db1;
  1. 删除数据库
  • 格式: drop database 数据库名;
    drop database db1;
  1. 使用数据库
  • 格式: use 数据库名;
    use db1;(前提db1已经存在)
  • 练习:
    1. 分别创建mydb1和mydb2数据库 第一个是gbk第二个是utf8
    2. 创建完后查询两个是不是都存在
    3. 查询两个字符集是否正确
    4. 先使用mydb1再使用mydb2
    5. 删除两个数据库

####表相关SQL

  • 表相关的各种操作必须已经使用了数据库
    create database db1 character set utf8;
    use db1;
  1. 创建表
  • 格式: create table 表名(字段名 类型,字段名 类型);
    create table person(name varchar(10),age int);
  • 练习: 创建学生表student 字段有: 学号id 姓名name 语文chinese 数学math 英语english
    create table student
    (id int,name varchar(10),chinese int,math int,english int);
  1. 查询所有表
  • 格式: show tables;
  1. 查看表详情
  • 格式: show create table 表名;
    show create table student;
  1. 创建表指定字符集
  • 格式: create table 表名(字段名 类型,字段名 类型) charset=utf8/gbk;
    create table t1(name varchar(10),age int)charset=gbk;
    show create table t1;
  1. 查看表字段
  • 格式: desc 表名;
    desc student;
  1. 删除表
  • 格式: drop table 表名
    drop table t1;
  1. 添加表字段
  • 最后添加格式: alter table 表名 add 字段名 类型;
    alter table person add sal int;
  • 最前面添加格式:alter table 表名 add 字段名 类型 first;
    alter table person add id int first;
  • xxx的后面添加格式:alter table 表名 add 字段名 类型 after xxx;
    alter table person add gender varchar(10) after name;
  1. 删除表字段
  • 格式: alter table 表名 drop 字段名;
    alter table person drop gender;
  1. 修改表字段名和类型
  • 格式: alter table 表名 change 原名 新名 新类型;
    alter table person change sal gender varchar(10);
    ####数据库和表相关练习:
  1. 创建数据库mydb1 字符集为utf8 并使用该数据库
    create database mydb1 character set utf8;
    use mydb1;
  2. 在mydb1中创建员工表emp 字段有name 字符集为utf8
    create table emp (name varchar(10)) charset=utf8;
  3. 添加表字段age在最后面
    alter table emp add age int;
  4. 添加id字段在最前面
    alter table emp add id int first;
  5. 添加sal字段在name的后面
    alter table emp add sal int after name;
  6. 修改字段sal为salary
    alter table emp change sal salary int;
  7. 删除age字段 alter table emp drop age;
  8. 删除emp表 drop table emp;
  9. 删除数据库 drop database mydb1;
    ####数据相关SQL
    create database newdb1 character set utf8;
    use newdb1;
    create table emp(id int,name varchar(10),age int);
  10. 插入数据
  • 全表插入格式: insert into 表名 values(值1,值2,值3);
    insert into emp values(1,‘Tom’,18);
  • 指定字段格式:insert into 表名(字段名1,字段名2)values(值1,值2);
    insert into emp(name,age) values(‘Jerry’,15);
  • 批量插入数据格式:
    insert into emp values(4,‘悟空’,500),(5,‘八戒’,300),(6,‘沙僧’,200);
    insert into emp(name,age) values(‘刘备’,25),(‘关羽’,23),(‘张飞’,18);
  • 中文问题:
    insert into emp values(3,‘刘德华’,25);
    如果有同学执行以上SQL语句报错的话执行以下SQL语句即可
    set names gbk;
  1. 查询数据
  • 格式: select 字段信息 from 表名 where 条件;
  • 举例:
    1. 查询所有的员工姓名 select name from emp;
    2. 查询所有员工的所有信息 select * from emp;
    3. 查询年龄小于100岁的员工姓名和年龄
      select name,age from emp where age<100;
    4. 查询悟空的信息
      select * from emp where name=‘悟空’;
  1. 修改数据
  • 格式: update 表名 set 字段名=值,字段名=值 where 条件;
  • 举例:
    1. 修改悟空名字为孙悟空
      update emp set name=‘孙悟空’ where name=‘悟空’;
    2. 修改刘备年龄为50岁
      update emp set age=50 where name=‘刘备’;
    3. 修改30岁以下的员工年龄为10岁
      update emp set age=10 where age<30;
  1. 删除数据
  • 格式: delete from 表名 where 条件;
  • 举例:
    1. 删除Tom
      delete from emp where name=‘Tom’;
    2. 删除年龄10岁的员工
      delete from emp where age=10;
    3. 删除所有数据
      delete from emp;
      ####练习:
  1. 创建hero表 id 名字name 类型type 价格money
    create table hero(id int,name varchar(10),type varchar(10),money int);
  2. 保存以下数据
    insert into hero values
    (1, ‘诸葛亮’, ‘法师’, 18888), (2, ‘周瑜’, ‘法师’, 13888),
    (3, ‘孙悟空’, ‘打野’, 18888), (4, ‘小乔’, ‘法师’, 13888),
    (5, ‘黄忠’, ‘射手’, 8888), (6, ‘刘备’, ‘战士’, 6888);
  3. 修改所有18888为28888
    update hero set money=28888 where money=18888;
  4. 修改所有法师为战士
    update hero set type=‘战士’ where type=‘法师’;
  5. 删除价格为6888的英雄 delete from hero where money=6888;
  6. 修改小乔为猪八戒
    update hero set name=‘猪八戒’ where name=‘小乔’;
  7. 删除价格低于15000的英雄 delete from hero where money<15000;
  8. 添加性别gender字段在name的后面
    alter table hero add gender varchar(10) after name;
  9. 修改所有英雄的性别为男 udpate hero set gender=‘男’;
  10. 删除所有数据 delete from hero;
  11. 删除表 drop hero;

####数据类型

  1. 整数: int(m) 和 bigint(等效java中的long) ,m代表显示长度 需要结合zerofill关键字使用
    create table t_int(id int,age int(10) zerofill);
    insert into t_int values(1,20);
    select * from t_int;
  2. 浮点数: double(m,d) m代表总长度 d代表小数长度 m=5 d=3 23.456,超高精度浮点数decimal(m,d) 只有涉及到超高精度运算时使用
  3. 字符串:
  • char(m): 固定长度 m=5 “abc” 所占长度为5,执行效率略高 ,最大长度255
  • varchar(m):可变长度m=5 “abc” 所占长度为3,节省空间,最大长度65535 超过255建议使用text
  • text(m):可变长度 最大长度65535
  1. 日期:
  • date: 只能保存年月日

  • time: 只能保存时分秒

  • datetime:年月日时分秒 默认值null 最大值9999-12-31

  • timestamp:时间戳 默认值当前系统时间 最大值2038年1月19号

      create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
      insert into t_date values('2019-9-5',null,null,null);
      insert into t_date values(null,'17:37:28','2019-9-5 17:37:28',null);
    

###课程回顾:

  1. 数据库相关SQL
  • show databases;
  • create database db1 character set utf8/gbk;
  • show create database db1;
  • drop database db1;
  • use db1;
  1. 表相关SQL
  • create table t1(id int,name varchar(10)) charset=utf8/gbk;
  • show tables;
  • show create table t1;
  • desc t1;
  • drop table t1;
  • alter table t1 add age int first/ after xxx;
  • alter table t1 drop age;
  • alter table t1 change 原名 新名 新类型;
  1. 数据相关SQL
  • insert into t1(字段名1,字段名2) values(‘值1’,‘值2’),(‘值1’,‘值2’);
  • select 字段信息 from t1 where 条件;
  • update t1 set xxx=xxx where 条件;
  • delete from t1 where 条件;
  1. 数据类型
  • 整数: int和bigint
  • 浮点数: double(m,d) m总长度 d小数长度 超高精度decimal(m,d)
  • 字符串: char 固定长度 最大255 varchar 可变长度最大65535 超高255建议使用text text 可变长度最大65535
  • 日期: date time datetime 最大9999-12-31 默认null timestamp最大2038-1-19 默认值当前系统时间

html
css
JavaScript
jQuery
Bootstrap
MySQL

### MySQL 相关资料及常见问题解析 #### 一、MySQL 的基本概念与发展历程 MySQL 是一种关系型数据库管理系统,广泛应用于 Web 庢企业级应用中。早期版本(如 MySQL 5.1 及以前)默认使用的存储引擎为 MyISAM[^3]。MyISAM 存储引擎虽然具有较高的插入查询效率,但它存在一些局限性,比如不支持事务处理、仅提供表级别的锁定机制以及缺乏系统崩溃后的自动恢复功能。 随着技术的发展,InnoDB 成为了 MySQL 默认推荐的存储引擎(自 MySQL 5.5 起),它提供了更强大的特性,包括但不限于事务支持、行级锁定外键约束等功能[^1]。 --- #### 二、常见问题及其解决方案 ##### (1)设置密码 对于新安装的 MySQL 实例,默认情况下可能未设置 root 用户密码。可以通过以下命令完成初始密码设定: ```bash ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; ``` 针对不同版本的操作略有差异。例如,在 MySQL 5.7 中,需特别注意 `auth_plugin` 参数的影响[^2]。 --- ##### (2)开启远程访问权限 某些场景下需要允许外部主机连接到 MySQL 数据库服务器。这通常涉及以下几个方面的工作: - 修改用户账户绑定地址; - 配置防火墙规则以开放必要的端口(通常是 3306); - 确保 my.cnf 或 my.ini 文件中的 bind-address 设置正确。 具体实现方法如下所示: ```sql -- 创建或修改现有用户的远程访问权限 GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' IDENTIFIED BY 'password'; -- 刷新权限使更改生效 FLUSH PRIVILEGES; -- 关闭本地防火墙服务 (Linux 平台为例) sudo systemctl stop firewalld ``` 需要注意的是,出于安全考虑应谨慎授予完全控制权,并合理限制可访问范围。 --- ##### (3)数据操作与性能调优 在实际项目开发过程中经常会碰到因 SQL 查询语句设计不当而导致执行速度缓慢的情况。对此可以从索引创建、字段类型选择等多个角度入手加以改进。另外还可以利用 EXPLAIN 工具分析计划路径从而找出潜在瓶颈所在位置。 示例代码片段展示如何添加复合索引来提升多条件筛选效率: ```sql CREATE INDEX idx_name_age_gender ON your_table(name, age, gender); ``` --- ##### (4)乱码问题预防措施 当跨平台迁移或者交互式界面显示中文字符时容易出现编码错误现象。为了避免此类情况的发生建议统一采用 UTF-8 编码标准贯穿整个流程链路之中——从客户端请求头指定 charset 属性直到最终持久化层写入磁盘文件为止均保持一致[^4]。 典型配置样例如下: ```ini [client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` --- ### 总结 以上列举了几类典型的 MySQL 使用过程里可能会遭遇到的技术难题并给出了相应的应对策略。当然这只是冰山一角而已,更多深层次的内容还需要依靠个人不断地探索学习才能掌握得更加透彻。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值