Mysql入门

database

一、数据库概述

1、为什么要用数据库?

程序中的数据是在内存中,一旦程序关了,数据就没了,没法永久保存。

所以我们需要把数据“持久化”。

我们虽然学过IO流和File类,可以实现数据的持久化,但是用普通的文件保存的话

  1. 数据的格式
  2. 检索、管理(增加、修改、删除)等操作及其不方便

因此我们要用特殊的文件来存储我们的数据,这个特殊的文件就是数据库。

数据库就是有组织/有结构的方式来存储我们的数据。

结论:

  1. 数据“持久化”。
  2. 有组织/有结构的方式来存储我们的数据,更方便增、删、改、查...

2、什么是数据库

  • DB:Database,数据库->数据仓库,存储数据用的,并有结构的存储。
  • DBMS:Database Management System 数据库管理系统,

    • mysql,oracle,sql server, access, redis,mango db...

  • SQL:Structured Query Language 结构化查询语言

3、安装DBMS

4、mysql属于关系型数据库

二维(行、列)表格的形式

mysql的DBMS系统中会有很多库DB,

但是一个DB数据库中又会有很多张表格table,

每一个表格中会有很多的列column和行record。

二、卸载

1、最好,建议,先检查mysql的服务是否正在运行..

  • (1)方式一:

    启动任务管理-->服务-->mysql服务

DBMS是一个网络应用程序,它属于TCP/IP协议的网络应用程序,并且它是一个服务器端。

  • (2)方式二

    我的电脑(计算机)-->右键-->管理-->服务

2、卸载

  • 方式一:控制面板
  • 方式二:电脑管家或360安全卫士
  • 方式三:用安装程序自带的卸载程序

3、清理遗留文件

  1. 找到之前的安装目录,清理
  2. 如果你是默认安装的,要注意,mysql的默认的数据目录,是在一个隐藏文件夹中:

C:ProgramDataMySQL

4、清理注册表

如何打开注册表编辑器:在系统的搜索框中输入regedit

如果前两步做了,再次安装还是失败,那么可以清理注册表

  • 1:HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesEventlogApplicationMySQL服务 目录删除
  • 2:HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesMySQL服务 目录删除
  • 3:HKEY_LOCAL_MACHINESYSTEMControlSet002ServicesEventlogApplicationMySQL服务 目录删除
  • 4:HKEY_LOCAL_MACHINESYSTEMControlSet002ServicesMySQL服务 目录删除
  • 5:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationMySQL服务目录删除
  • 6:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMySQL服务删除
  • 注册表中的ControlSet001,ControlSet002,不一定是001和002,可能是ControlSet005、006之类

三、安装

四、使用

注意:我们刚才安装的mysql是服务器端的程序。

我们使用时要分为两步:

1、启动服务器

检查服务是否已启动

任务管理器-->服务-->mysql5.5

2、用客户端去连接服务器端

客户端的种类有很多,常见的:

  1. 命令行客户端
  2. Java程序
  3. 可视化工具,SQLyog,Navicat,Mysql admin....

3、使用命令行客户端

  1. 确定环境变量正确

  • 可以使用mysql命令

  1. mysql命令的格式:

mysql -h localhost -P 3306 -u root -p

Enter password:密码

说明:

  1. -h,-P,-u后面可以有空格也可以没有空格,但是最后-p后面不要加空格
  2. 如果你是默认连接本机localhost,那么可以省略-h localhost
  3. 如果你是默认用3306端口号,那么可以省略-P 3306

五、演示几个SQL语句

1. 查看当前的DBMS系统中都有哪些数据库?

show databases;

2. 查看某个数据库中都有什么表格?

show tables;

mysql> show tables;

ERROR 1046 (3D000): No database selected

方式有两种:

方式一:

show tables from 数据库名;

mysql> show tables from test;

Empty set (0.00 sec)

方式二:

use 数据库名;

show tables;

3. 查看某张表的数据

方式一:

select * from mysql.user;

方式二:

use 数据库名;

select * from user;

4. 创建一个表格

create table test.stu(

id int,

name varchar(20),

age int

);

5. 添加记录

insert into test.stu values(1,"张三",23);

mysql> insert into test.stu values(1,"张三",23);

ERROR 1366 (HY000): Incorrect string value: "xD5xC5xC8xFD" for column "name" at row 1

因为客户端是GBK,而服务器端认为我当前的客户端是UTF-8。

可以通过如下的语句,告知服务器当前的客户端是GBK。

set names gbk;

六、MySQL数据类型

1、整型

  • Java:byte,short,int,long
  • mysql:

    • tinyint byte 1个字节 -128~127, unsigned 0~255
    • smallint short 2个字节
    • mediumint 3个字节
    • int 4个字节
    • bigint long 8个字节

例如:

  • id int(8) 等价于 int(11)
  • int(M):这个M是指宽度,如果单独使用(M)是没有意义,必须结合zerofill unsigned
  • id int(8) zerofill unsigned: 1 ->00000001

2、浮点型

  • Java:float,double

  • mysql:float,double

  • mysql中的float和double可以指定宽度和精度

  • double(M,D),例如:double(5,2) 存储范围是-999.99~999.99

    • M是一共有几位,D表示小数点后有几位

  • double(M,D) unsigned ,例如:double(5,2) unsigned 存储范围:0~999.99

3、定点型

  • Java:BigDecimal,BigInteger
  • mysql:DECIMAL和NUMERIC 都是可以表示小数

4、日期时间类型

  • Java:java.sql.Date,java.sql.Time,java.sql.Timestamp

  • mysql:date,time,timestamp,datetime,year

    • date:日期
    • time:时间
    • timestamp,datetime:日期加时间
    • year:只有年份

  • timestamp,datetime:

    • timestamp底层是使用毫秒表示,可以区分时区的(同一个毫秒值,在不同的时区,显示的结果是适用当前时区)

      • 范围:1970 ... ~ 2038....

    • datetime是日期和时分秒表示,不区分时区,什么值就是什么值

      • 范围:1000....~ 9999....

5、字符串类型

  • Java中分为字符类型char和字符串类型String

  • Mysql没有字符类型,都是字符串类型

    • char:也是字符串类型
    • varchar:也是字符串类型,如果是varchar,使用时,必须指定varchar(M)
    • text:也是字符串类型

  • char或char(1)表示存1个字符,如果char(M)存储M个字符

  • char和varchar的区别:

    • char一个是定长字符串,例如:char(8),"尚" 用"u0000"补全8位,char的读写速度快
    • varchar一个是变长字符串 ,例如:varchar(8),"尚" 实际占尚这个字和这个字的字节数,varchar读写速度慢,节省空间

      • 例如是UTF-8 占3个字节 + 1个字节(存3这个数字)

6、其他类型

  • xxxbit
  • xxxblob:二进制类型 可以存储二维码,小头像
  • 枚举类型:预定义几个值,从中选一个
  • 集合类型:预定义几个值,从中选多个

7、特殊值:null

  • 在Java中,只有引用数据类型才能赋值为null

    • 要判断null值, if(变量 == null) 或 if(变量 !=null)
    • null值不能用来计算,用来计算是要报错

  • 在MySQL中,所有类型都可以赋值为null

    • 要判断null值, is null 或 is not null
    • null值用来计算不会报错,但是结果都是null
    • SUM 函数会过滤null值

七、SQL规范和规则

Structure Query Language,结构化查询语言

1、规范

  1. mysql对于SQL语句不区分大小写,SQL语句关键字尽量大写

show databases;

show DataBASES;

SHOW DATABASES;

  1. 值,除了数值型,字符串型和日期时间类型使用单引号("")
  2. 列/字段别名,尽量使用双引号(""),而且不建议省略as
  3. 所有标点符号使用英文状态下的半角输入方式
  4. 必须保证所有(),单引号,双引号是成对结束的
  5. 可以使用(1)#单行注释 (2)--空格单行注释 (3)/* 多行注释 */

2、规则

  1. 必须只能包含 A–Z, a–z, 0–9, _共63个字符
  2. 长度不宜过长
  3. 不能包含空格
  4. 不要重名

例如:

  • 同一张表,字段不能同名,不同的表,字段可以重名
  • 同一个库,表不能重名,不同的库,表可以重名
  • 同一个DBMS中,库不能同名,不同的DBMS系统中,库可以重名

  1. 必须保证你的字段没有和保留字、数据库系统或常用方法冲突
  2. 如果某个字段在不同的表中,表示的意思是一样的,那么数据类型必须相同

    例如:

  • 员工表:

id int

name varchar(20)

did int #所在的部门编号

  • 部门表:

id int   #部门编号

dname varchar(50)

八、SQL-DML

  • DDL:数据定义语言,定义库、表结构用的
  • DML:数据操作语言,增、删、改、查
  • DCL:数据控制语言,权限、事务等控制语句

(一)DDL

1、操作数据库的语句

(1)查看当前DBMS中的所有数据库

show databases;

(2)创建一个数据库

create database 数据库名;

(3)删除一个数据库

drop database 数据库名;

(4)使用,指定使用哪个数据库

use 数据库名;

有了这句后,下面的sql都是默认针对这个数据库的操作。

2、操作表格的语句

(1)查看某个库的所有表格

show tables;  #必须前面有use 数据库名;的语句  否则报no database select的错误

show tables from 数据库名;

(2)创建表格:基本版:

create table 【数据库名.】表名称(

字段名1 数据类型,

字段名2 数据类型,

字段名2 数据类型,

....

);

  • create table 【数据库名.】表名称(字段名1 数据类型,字段名2 数据类型,字段名2 数据类型,....);

    • 注意:最后一个字段名的数据类型后面就不用加,

例如:

create table employee(

id int,

name varchar(20),

age int,

salary double,

gender char,

birthday date

);

(3)查看表结构

desc 表名称;

(4)修改表结构:增加一列

  • alter table 表名称 add 字段名 数据类型 【after 字段名/ first】;

例如:

alter table employee add tel char(11);

alter table employee add tel char(11) after name;

(5)修改表结构:删除一列

  • alter table 表名称 drop 字段名;

例如:

alter table employee drop tel;

(6)修改表结构:修改列的类型,位置等

  • alter table 表名称 modify 字段名 数据类型 【after 字段名/ first】;

例如:

alter table employee modify gender char(2) after age;

(7)修改表结构:修改列的名称

  • alter table 表名称 change 旧字段名 新的字段名 数据类型 【after 字段名/ first】;

例如:

alter table employee change gender sex char(2) after age;

(8)修改表名称

  • alter table 表名称 rename to 新名称;

例如:

alter table employee rename to emp;

(9)删除整张表,包括数据和表结构

drop table 表名称;

九、SQL-DML

1、添加数据

(1)为表的所有列赋值

  • insert into 表名称 values(值列表);

例如:

employee:

+----------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+----------+-------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(20) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

| salary | double | YES | | NULL | |

| gender | char(1) | YES | | NULL | |

| birthday | date | YES | | NULL | |

+----------+-------------+------+-----+---------+-------+

insert into employee values(1,"张三",23,10000,"男","1990-01-01");

(2)为表的部分列赋值

  • insert into 表名称(字段列表) values(值列表);

insert into employee(id,name) values(2,"李四");

(3)可以一次性增加多行

  • insert into 表名称 values(值列表1),(值列表2),....;
  • insert into 表名称(字段列表) values(值列表1),(值列表2),....;

例如:

insert into employee(id,name) values(3,"王五"),(4,"赵六"),(5,"钱七");

2、修改数据

  • update 表名称 set 字段名1 = 字段值1, 字段名2 = 字段值2 【where 条件】;

例如:

update employee set gender = "男";

update employee set age = 24 where name = "李四";

update employee set salary = salary * 2; #给所有人涨薪

3、删除数据

  • delete from 表名称 【where 条件】;

例如:

delete from employee;

delete from employee where name = "赵六";

4、查看数据

(1)查看所有的数据

  • select * from 表名称;

例如:

select * from employee;

(2)查看部分列

  • select 字段列表 from 表名称;

例如:

select id,name from employee;

(3)查看部分行

  • select * from 表名称 【where 条件】;
  • select 字段列表 from 表名称 【where 条件】;

例如:

select * from employee where name ="张三";

#查看张三的薪资

select salary from employee where name ="张三";

5、可以在查询结果时,给字段取别名。

  • select 字段名1 as "别名1",字段名2 as "别名2" ... from 表名称 【where 条件】;

例如:

select id as "编号", name as "姓名", salary as "薪资" from employee;

select id "编 号", name 姓名, salary 薪资 from employee;

以上是 Mysql入门 的全部内容, 来源链接: utcz.com/z/532816.html

回到顶部