mysql数据库

先看与数据库有关的几个名词:

DBdatabase,数据库,里边保存了有组织的规范的数据。

DBMSdatabase management system 数据库管理系统,简称数据库软件,数据库产品,数据库是通过DBMS创建和操作的容器。

SQL:翻译叫结构化查询语言(Structure Query Language),专门用来与数据库通信的语言。

常见的数据库:MySql Oracle DB2 SqlServer

SQL的有点:

1.不是特定的数据库供应商专有的语言,几乎所有DBMS都支持。

2.简单易学。

3.简单,但实际是可以进行非常复杂和高级的数据库操作。

前面讲了,数据库是有组织的,规范的把数据保存起来的。

怎么个组织的,规范的?

数据库的特点:

1.    将数据放到数据表格(二维表)中,在将表格放到库中。

 

2.一个数据库中可以有多张表,每个表都有一个名字,用来标识自己。表名必须唯一。

3.表具有一些特性,这些特性规范了数据在表中的存储格式,形式,类似java中的的设计。以后的开发中你会发现,表和类是可以一一对应起来的。

4.表由列构成,每列我们叫一个字段。所有表都是由一个多个字段(列)构成,这里表的每个字段对应到java中类的属性。比如学生信息表(学号,姓名,年龄,身高),对应javaStudent类里有属性:学号,姓名,年龄,身高

5.表中数据是按照行来存储的,这里表有那些字段,就是表的结构对应java中一个Class类有那些属性;表里具体的每一行数据,对应javanew出类的实例。

MySql数据库原本是瑞典的公司叫MySqlAB公司,后被Oracle收购。

https://news.cnblogs.com/n/577472Mysql的开发者,也是一个传奇)

优点:

-成本低:开源代码,一般可以免费试用

-性能高:执行很快

-简单:很容易安装和使用

DBMS分为两类:

-基于共享文件系统的DBMSAccess

-基于客户机-服务器架构的DBMSMySqlOracleSqlServer

安装myslq一般是说的安装服务端。

Mysql提供两个版本:

-社区版(免费)

-企业版(收费)

下载:

-目前可以下载的版本:5.55.65.78.0(测试)

https://dev.mysql.com/downloads/mysql/

http://mirrors.sohu.com/mysql/MySQL-5.5/

mysql ZIP Archive压缩版本,需要自己配置

mysql MSI Installer:安装版本,安装过程中自动配置

卸载:

-程序卸载这是第一步

-安装目录残余删除

-C盘下的隐藏文件夹ProgramData下的mysql残余删除,才算真正基本卸载干净。

安装演示!

Mysql数据库的安装目录下my.ini简单介绍!

启动和停止:

1、任务管理器或者计算机-->管理--->服务

2、命令行:net stop mysql net start mysql

MySql自带的客户端登陆和退出(exitctrl+c);

cmddos命令端(必须是管理员的):mysql -h localhost -P 3306 -u root -p

-h:主机

-P:端口

-u:用户名

-p:密码(这里可以写,也可回车后再写,写了密码,密码和-p不能有空格,前面的可以有空格)

本机的话,也可以简写:mysql -u root -p

 

show databases; 查看数据库系统里有那些数据库。

 

use test打开一个数据库。

show tables查看刚刚打开的数据库里有些什么表;

show tables from mysql查看非所在库的表信息,用from关键字指定目标库。

select database(); 查看目前在那个库里。

演示一下SQL常用增、删、改、查,让大家有个感性的了解,后面要详细的讲!

create table student(id int , name varchar(4)); 创建一张表

desc student;查看表结构。

select * from student; 查看表里的记录。

insert into student(id,name) values (1,'小白'); 向表里插入一条记录值。

 

Sql当中用select version();查看mysql的版本信息。

 

 

 

 

Dos当中mysql --version 也是查看mysql版本信息。

查看数据库的编码:show variables like '%char%';

命令行中查询表的默认字符集:show create table 表名称;

修改表的默认字符集:ALTER TABLE 表名称 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

1mysql的命令不区分大小写,但建议关键字大写,表名、列名小写;

2、每条命令用“;”结尾。

3、每条命令根据需要,可以进行缩进和换行,建议关键字在一行。

4、注释:

单行注释:#文字文字

单行注释2 -- 文字文字(主要 -- 后有空格)

多行注释: /* 文字文字 */

安装SQLyog

SQLyog的图形界面简单介绍一下!

SQL语言:

1DQL语言(Data QueryLanguage) 数据查询语言.

2DML语言(Data Manipulation Language)数据操纵语言,适用范围:对数据库中的数据进行一些简单操作,如insert,delete,update,select.

3DDL语言(Data Definition Language)数据定义语言,适用范围:对数据库中的某些对象(例如,database,table)进行管理,如Create,AlterDrop.

4TCL语言,事务控制语言(TCL.

导入雇员数据库,介绍一下数据库结构和字段含义!

 

 

 

 

 

#1、语法:

select 要查询的信息 from 表名;

#2、要查询你的信息可以是什么:

表中的一个字段或很多字段(中间用“,”分开)

常量值

表达式

函数

#演示单个字段查询:

SELECT first_name FROM employees;

 

 

 

 

#演示查询多个字段:

SELECT first_namelast_name,....... FROM employees;

 

 

 

#演示查询表中的所有字段:

SELECT first_namelast_name,....把所有字段写完 FROM employees;

SELECT * FROM employees; //*:通配符,表示所有字段

  

#另外补充:

  SELECT

    `department_id`, 

   `department_name`,

   `manager_id`

  FROM

   departments ;

` 符号:不是单引号,是着重号!用于区别关键字和字段名的,可以省略。

#演示查询常量

  select 100;

  select 'john'; 

#演示查询表达式

  select 100%98

 

 

 

#演示查询函数

select version()

 

 

 

select ifnull(参数1,参数2); //参数1真的上null,就返回参数2,参数1不上null,就返回参数1自己.

 

 

 

 

 

 

#3、查询到的结果:是一个虚拟的表格。

#4、给字段起别名

  方法一:用as关键字,如select 100%98 as 余数结果

  好处:一个容易理解,语义化,另一个在后面的多表查询时候区分不同表里的同名字段。

  方法二:as关键字可以换成空格

 

 

 

 

#案列:查询salary,并起别名为 out put,别名里有特殊符号空格,这时要加单引号。

 select salary as ‘out put’ from employment

#5、去重复

  #查询员工表中的所有部门的编号

select distinct department_id from employment

 

 

 

#6+号的作用

#查询员工的名和姓,并并姓名链接起来显示

select last_name+first_name as 姓名 from employment;

// java中加号的作用:运算符,链接符(其中有字符型时)

// mysql中只有一个功能:运算符

select 100+90

select ‘123’ + 90;当有字符型的时候,它会试图将字符型转换成数值型,然后再计算。

select ‘abc’ + 90;如果字符型不能转换,它就会自动将字符型转换为0,然后再计算。

select null + 任何东西;结果的null

怎么实现这个例子呢?可以使用mysql你的一个拼接函数:

select concatlast_name,first_name as 姓名 fromemployment

 

 

 

#条件查询

语法

select

查询列表

from

表名称

where

筛选条件

1. 按照条件表达式来筛选:

条件运算符: > , < , = , != / <>(MYSQL特有的不等号) , >= , <=

2.按照逻辑表达式筛选

逻辑运算符:支持java的写法(&& , || , ! ), 但推荐使用mysql自己的(and , not , or)

3.模糊查询:

like between...and , in , is null

4.看条件表达式:

案例:查询员工工资大于1200的员工有哪些;

select * from employees where salary > 12000;

案例:查询部门编号不等于90号的员工名和部门编号:

select concat(last_name,first_name) as 姓名 , department_id

from employees where department_id <> 90;

5.逻辑表达式:

逻辑运算符主要作用:链接表达式

&&and : 全式true结果才式true;

||or: 只要有一个true结构就式true;

!not: 取反;

案例:工资在1000020000之间到员工名,工资和奖金

select last_name,salary,commission_pct

from employees where salary>=10000 and salary<=20000;

案例:查询部门标号不式在90110之间到,或者工资高于15000点员工信息

select * from employees where (department_id<90 and department_id>110) or salary>15000;

select * from employees where not(department_id>=90 and department_id<=110) or salary>15000;

模糊查询:

like

between and

in

is null | is not null

like:

案例:查询员工名中包含了"a"字符的所有员工的信息

select * from employees where last_name like '%a%'; // %:通配符,表示任意多个字符,也可表示0个字符, _:任意一个字符;

案例:查询第三个字符为n或第五个字符为l的员工信息

select * from employees where last_name like '__n_l%';

案例:查询员工信息表中员工名第二个字符是"_"的员工信息

select * form employees where last_name like '_\_%';//支持java的转义字符

select * from employees where last_name like '_&_' escape '&'; // escape '&':说明&这个符号是转义字符,mysql推荐这样写;

注意:一般情况下,like都是通配符连在一起使用的.

between and:

案例:查询员工工资中1000020000之间到员工信息

select * from employees where salary>=10000 and salary<=20000; 

select * from employees where salary between 10000 and 20000;

注意:使用between and

1.可以简洁sql语句

2.并且包含临界值

3.连个临界值不能调换位置,小的在左边,大的值在右边.

in:

案例:查询员工的工种编号是 it_prog,ad_vp,ad_pres中任意一个的员工信息

select * from employee where job_id='it_prog' or job_id='ad_vp' or job_id='ad_pres';

select * from employees where job_id in('it_prog','ad_vp','ad_pres')

in:判断某个字段的值是否属于in列表中的某一项

1.使用in比使用orsql语句更简单

2.in的值必须是同一种数据类型或者兼容

is null | is no null:

案例:查询没有奖金率的员工信息

select * from employees commission_pct is null; 注意:commission_pct=null这个写法不能判断null

查询奖金率的就取反:

select * from employees commission_pct is not null; 注意:当然这里is not也不能换成<>不等号. 

补充一个东西:

安全等于号:<=> , 这个符号可以判断null,也可以判断普通数值;

is null:只能判断null,不能判断普通数值

=:只能判断普通数值,不能判断null

 后续看有道云笔记https://note.youdao.com/web/#/file/49AE1644B12943BE814F7588A9800F8D/note/58DBCB2BDDE04542B3B40A1342A8D103/

posted @ 2020-04-24 07:34  开发者-彬  阅读(277)  评论(0编辑  收藏  举报