基础

刘国斌 bjliugb@tedu.cn

MySql01

课程介绍

[图片上传失败...(image-2a1576-1519536729651)]
2.png
3.png
4.png
11.png
建表语句.png

数据库简介

之前通过流操作文件的方式存储数据弊端:

  1. 效率低
  2. 不管是存还是取都比较麻烦
  3. 一般只能存储小量数据
  4. 只能存储文本数据

什么是DB

DataBase:数据库
数据库是一个文件集

什么是DBMS

DataBaseManagementSystem:数据库管理系统
是管理数据库文件的软件

数据库分类

  1. 关系型数据库
    经过数学理论验证可以存储现实生活中各种关系的数据库,如果存储的数据之间有关系会在数据库中以表的形式把相关数据封装起来
  2. 非关系型数据库
    有多种存储数据的方式如Redis(非关系型数据库的一种)
    redis是通过Key-Value

主流关系型数据库介绍

-MySql

系统:windows Linux 
背景故事:08年被Sun 09年被Oracle收购 Oracle 开源 卖服务 
发展:MySql5.5 使用了Oracle数据库的核心技术 性能提高30%,但因为影响了Oracle导致mysql面临闭源,MySql面临闭源后 一些大牛程序员从Orecle出来 创建了MariaDB数据库

-Oracle

windows Linux Oracle公司 拉里艾莉森32 执行效率最高 性能最好 最贵 闭源

-DB2

IBM 大型数据库 Linux和unix操作系统 闭源 收费软件

-SQL Server

微软公司 windows系统 市场排名第三  主要被.net(C#)开发的网站所使用

-Sqlite

轻量级数据库 ios android 或一些嵌入式设备上,很小只有几十k 

开源和闭源

-开源:免费 公开源代码 大牛程序员会无偿的去维护和升级

-闭源:收费 不公开源代码 大牛程序员会攻击

安装MySql数据库

windows安装具体步骤参见安装文档
注意端口号为3306 编码utf8

SQL

什么是SQL

Structured Query Language:结构化查询语言

Sql是执行在客户端(windows在命令行下执行,linux在终端执行)下或者通过java代码执行在JDBC

打开客户端并登陆mysql

linux下在任何位置直接打开终端即可
windows下使用各种客户端打开

登陆mysql命令 直接在终端下执行以下代码 然后输入密码

mysql -uroot -p 

退出:exit;

SQL语句规范

  1. 以;(分号)结尾
  2. 关键字之间有空格 通常一个空格 但是有多个也没问题
  3. sql语句中可以添加换行
  4. SQL 不区分大小写

数据库相关SQL

  1. 查看所有数据库命令:

     show databases;
    
  2. 创建数据库 通常一个项目只对应1个数据库
    格式:create database 数据库名称;

     create database db1;
    

    指定字符集的创建格式 :create database 数据库名称 CHARACTER SET utf8;

     create database db2 character set gbk;
    
  3. 查看数据库详情
    -格式:show create database 数据库名称;

     show create database db1;
    
  4. 删除数据库
    -格式:drop database 数据库名称;

     drop database db2;
    
  5. 选中数据库

     use db2;
    

表相关SQL

什么是表

-表是数据库中的数据组成单位 类似于Java中的对象
表中的字段 对应对象中的属性

创建表

格式: create table 表名 (字段1名 字段类型,字段2名 字段类型);
    create table person (name varchar(10),age int);

创建表的原理:

-在客户端中写完创建表的sql语句后客户端会把sql语句交给DBMS(MySql)DBMS解析后 会在数据库中创建语句中的表 和表中的字段
[图片上传失败...(image-9dbdaf-1519536729651)]

查看所有表

show tables;

查看表结构

-格式:show create table 表名;
show create table person;

-格式: desc 表名

表的引擎

  1. InnoDB:支持数据库的高级处理包括 事物 外键等 默认是innodb

  2. Myisam:只支持数据的基本存储

创建表时指定表的字符集 和 引擎

-格式

 create table person (id int,name varchar(10)) engine=myisam charset=utf8;

练习:创建5个数据库 在每个数据库里面创建1个表 然后删除数据库

练习 创建学生表

create table student (
    id int,
    name varchar(10),
    chinese int,
    math int,
    english int
);

对已经创建好的表进行修改

  1. 修改表名称
    -格式: rename table 原名 to 新名;

     rename table student to t_student;
    
  2. 修改表的属性
    -格式: alter table 表名 engine=myisam charset=gbk;

     alter table t_student engine=myisam charset=gbk;
    
  3. 添加表的字段
    -在最后添加
    -格式:alter table 表名 add age int;

     alter table student add age int;
    

    -在最前面添加
    -格式:alter table 表名 add fatherAge int first;

     alter table student add fatherAge int first;
    

    -在某个字段之后添加
    -格式:alter table 表名 add fatherName varchar(10) after fatherAge;

     alter table student add fatherName varchar(10) after fatherAge;
    
  4. 删除表字段
    -格式: alter table 表名 drop 字段名;

         alter table student drop fatherAge;
    
  5. 修改字段名和类型
    -格式: alter table 表名 change 原字段名 新字段名 新字段类型;

     alter table student change age fatherAge varchar(10);
    
  6. 修改类型和顺序
    -格式1: alter table 表名 modify 字段名称 新字段类型 after 字段名
    -格式2: alter table 表名 modify 字段名称 新字段类型 first

     alter table student modify fatherAge int first; 
     alter table student modify fatherAge int after id; 
    

删除表

-格式: drop table 表名
    drop table student;

练习:

1.创建一个hero表 有 id name type 三个字段

    create table hero (id int,name varchar(10),type varchar(10));

2.修改hero表的属性 引擎为myisam 编码属性为utf8

    alter table hero engine=myisam charset=utf8;

3.给hero表添加一个money int 字段 添加在name字段的后面

    alter table hero add money int after name;

4.修改type字段 名称修改为 hero_type varchar(30)

    alter table hero change type hero_type varchar(30);

5.修改hero表名为heros

    rename table hero to heros;

6.修改name字段到最后面

    alter table heros modify name varchar(10) after hero_type;

7.把money字段删除

    alter table heros drop money;

8.删除hero表
drop table heros;

数据相关SQL

    create table student(
        id int,
        name varchar(20),
        chinese int,
        math int,
        english int
    );
  1. 插入语句
    -全表插入格式:insert into 表名 values(值1,值2,值3....);
    全表插入values后面的值的数量和顺序必须和表中字段的数量和顺序一致

     insert into student values(1,'lisi',18,26,88);
    

    -指定字段插入格式:insert into 表名 (字段名1,字段名2)values(值1,值2);

     insert into student (name,math)values('张三',90);
    

    -批量插入

    -全表批量
    insert into student values(10,'刘备',10,20,30),(11,'关羽',12,34,22),(12,'张飞',3,4,2);
    -指定字段批量

     insert into student (id,name,english)values(20,'孙悟空',0),(21,'猪八戒',90),(22,'沙师弟',5);
    
  2. 查询语句
    -格式: select 字段1, 字段2,字段3... from 表名
    -如果字段位置写* 代表查询所有的字段

     select * from student;
     select id,name,math from student;
    
  3. 更新(修改)语句
    -修改全表格式:update 表名 set math=100;

     update student set math=100; 
    

    -添加条件修改格式:
    update 表名 set math=50 where id=10;

     update student set math=50 where id=10;
    
  4. 删除语句
    -删除指定条件的数据格式:delete from 表名 where id=10;

     delete from student where id=10;
     delete from student where chinese is null;
    

    -删除表中所有数据
    delete from student;

练习操作数据语句:

1.创建hero表 id 名字 类型 money
create table hero (id int, name varchar(10), type varchar(10),money int);
2.插入以下5条数据
insert into hero values(
1,'诸葛亮','法师',18888),
(2,'孙悟空','打野',18888),
(3,'小乔','法师',13888),
(4,'黄忠','射手',8888),
(5,'刘备','战士',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.删除所有数据
delete from hero;

练习1:

  1. 创建员工表emp
  2. 创建部门表dept;

练习2:

  1. 给dept表插入4条数据

    10,'ACCOUNTING','NEW YORK' --财务部 纽约
    20,'RESEARCH','DALLAS' --研究部 达拉斯市
    30,'SALES','CHICAGO' --销售部 芝加哥
    40,'OPERATIONS','BOSTON' --运营部 波士顿

练习3:

  1. 创建 mydb 数据库,使用 utf8 编码
  2. 创建 t_item 商品表
  3. 在 t_item 表插入商品数据
  4. 修改 id 是7的商品,修改库存量为20
  5. 删除商品 7

eclipse SQL客户端

1.先准备mysql-connector-java-5.1.6.jar
2.打开eclipse 打开window-》showView->Other找到DataSource Explorer 和 SQLResults 显示出来
3.在DataSourceExplorer里面的DatabaseConnections 上右键 点击 New
4.在弹出窗口中找到MySql
5.点击下拉选项旁边的加号
6.在弹出页面中选中5.1 然后点击第二个选项卡(JarList) 点击clear All
7.点击AddJar 找到第一步下载的jar包
8.点击ok

9.在新页面中把URL:jdbc:mysql://localhost:3306/db1 最后的值修改为自己已存在数据库的名称
10.finish
11.在New MySQL(MySQL v.5.50)上右键点击 OpenSQLScrapbook
12.在type中选择 mysql5.1 在name 选择唯一的值 在database中选择 唯一的值

在此工具中不能操作数据库

乱码问题

1.数据库编码保证是utf8
2.表保证是utf8
3.windows的命令行默认编码为gbk 需要在命令行中先进入mysql执行 set names gbk;

4.修改mysql默认数据库的编码格式
windows: 在开始菜单中找到所有程序找到mariaDB里面的my.ini 在里面添加 character-set-server=utf8 即可

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 系统用户: 1.sys system(sys权限最高) 2.sysman(操作企业管理器) 密码是安装的时候输入的...
    3hours阅读 1,544评论 0 0
  • iOS中的数据存储方式 Plist(NSArray\NSDictionary),只能存储数组,字典,但是数组和字典...
    AlanGe阅读 551评论 0 0
  • 1.MySQL数据库 2.SQL语句 第一节课 ###1(MySQL数据库)数据库概念.avi 5...
    码了个农啵阅读 1,192评论 1 16
  • 数据库简介关系型数据库MySQL安装和使用SQL语言 一、数据库简介 (一)数据库的发展 文件系统:磁盘文件存储数...
    哈喽别样阅读 435评论 0 1
  • 1、登录SQL plus 使用系统用户登录: 首先系统用户有:sys和system,这两个用户权限较高; 其中sy...
    方研梅阅读 684评论 0 0