小米 mysql sql审核_mysql和sql - 小米米儿小的个人空间 - OSCHINA - 中文开源技术交流社区...

一.MySQL的安装

使用命令终端打开服务启动项:services.msc

安装MySQL后,应注意以下配置:

1.选择第一项Reconfigure Instance进行重新配置。

2.选择第一项详细配置。

3.用户类型选择:开发者选择第一项。

4.数据库的使用方式:选择我们是否用到事务。选择第一项多功能的。

5.文件保存路径:一般选择默认的

6.选择数据库的连接并发数:一般选择第三项

7.数据库作为网络服务器设置端口号

8.设置数据库字符集:选择第三项,并设置为utf8。.

9.设置path:把第二项选择上

10.设置用户名密码

安装配置MySQL视图软件:

先启动MySQL服务,在任务管理器中查看mysqld.exe

配置连接项

刚安装的MySQL有如下几个数据库:information_schema,mysql,test。

二.MySQL入门

1.概述

数据库

数据库管理系统

数据库应用系统

数据实例

2.连接MySQL方式

连接方式:

(1)cmd中输入mysql -uroot -p123456 -h

(2)直接使用自带的管理器输入密码进入

3.常用命令

show databases;显示当前拥有的数据库

use数据库名称;打开指定数据库

show tables;显示当前数据库有哪些表

creat database数据库名称;创建一个新的数据库

drop database数据库名称;丢弃一个数据库

desc表名;查看表结构

drop table表名:删除表

4.MySQL常用字段类型

char(size):定长字符(0-255)[存放的字符串长度不够就需要使用空格补齐,长度多了会报错。方便查询]

varchar(size):变长字符(0-255)[节省空间]

date:日期类型[默认格式:yyyy-MM-dd]

DATETIME:日期+时间类型[默认格式:默认格式:'yyyy-MM-dd  hh:mm:ss']

int(size):整形类型[对应java中的byte,short,int,long(Long):bigint(11)]

double[(s,p)]:浮点数[s指总长度,p指小数点后尾数]

举例:double(2,2)

blob:大二进制数据[0-4GB,一般不要把大的二进制数据放到数据库]

text:大文本数据[0-4GB]

三.SQL

1.sql语句分类:

SELECT查询语句

DML语句(数据操作语言)INSERT/UPDATE/DELETE

DDL语句(数据定义语言)CREATE/DORP/ALTER

DCL语句(数据控制语言)

事务控制语句

2.SQL书写规则:

在mysql中,sql语句大小写不敏感。(不论什么操作系统,mysql关键字大小写不敏感;但是字段名、表名、数据库名的敏感性是由操作系统规定的,尽量使用小写。)

在sql语句中,关键字不能跨多行或缩写。

四.SELECT语句

1.创建表

CREATE TABLE table_name(

column_name1 column_properties  constraint_definition,

列名类型约束(最后一行没有逗号)

)

注意:如果列名中的名字变蓝(即为关键字)则需要加上单引号。

2.表的查询

基本的查询语句格式:

SELECT {*,column[alias],...} FROM table_name;

在select中使用运算符:

注意,运算符两边的数据结构必须相等且能参与对应运算。

对NUMBER型数据可以使用算数操作符创建表达式(+  -  *  /);

对DATE型数据可以使用部分算数操作符创建表达式(+  -):加减是天数。

3.字段别名

①改变列的标题头。

②用于表示计算结果的含义。

③作为列的别名(用在java里面)。

④如果别名中使用特殊字符,或者是强制大小写敏感(ORACLE),或有空格时,都需加双引号。

如:SELECT id编号,productname货品名称,(costprice+1)*50进50加运费

FROM product;

SELECT id "编号",productname "Descr"

FROM product;

4.使用WHERE子句限定返回的记录

语法:SELECT   [DISTINCT] {*, column [alias], ...}  FROM  table

[WHEREcondition(s)];

举例:查询分类编号不等于2的货品信息

SELECT * FROM product  WHERE dir_id<>2;

5.binary:二进制

日期值格式敏感,字符串是大小写敏感的(不一定):默认情况下,字符串查询不区分大小写,如果必须区分大小写,比如使用binary关键字。

举例:查询罗技M100的编号和零售价

SELECT id,saleprice,productname FROM product

WHERE productname = '罗技M100';

SELECT id,saleprice,productname FROM product

WHERE binary productname = '罗技m100';

举例:我这里能用别名吗?

SELECT id,productname,saleprice*cutoff disprice FROM product

WHERE disprice>350;

结论:不能在where中使用select中的别名,执行顺序:先过滤,再选择,再别名。

6.其他关键字

BETWEEN..AND..:在两个值之间,闭区间,通常用在数值,日期,字符串上。

举例:选择id,货品名称,批发价在300-400之间的货品

SELECT id,productname,saleprice*cutoff FROM product

WHERE saleprice*cutoff BETWEEN 300 AND 400;

IN:在列出的值之中,符合某一个就行。

举例:查询分类编号不等于2的货品信息

SELECT id,productname,dir_id FROM product

WHERE dir_id IN (3,4);

使用LIKE运算符执行通配查询

查询条件可包含文字字符或数字

(%) :可表示零或多个字符

( _ ) :可表示一个字符

举例:查询所有罗技鼠标

SELECT * FROM product

WHERE productname LIKE '罗技%';

举例:查询所有的M系列鼠标id,货品名称

SELECT * FROM product

WHERE productname LIKE '%M%';

举例:查询所有的M双数系列鼠标id,货品名称

SELECT * FROM product

WHERE productname LIKE '%M__';

7.逻辑运算符

使用AND模拟BETWEEN..AND

举例:选择id,货品名称,批发价在300-400之间的货品

SELECT id,productname,saleprice*cutoff FROM product

WHERE saleprice*cutoff >=300 AND saleprice*cutoff <=400;

使用OR模拟IN

举例:查询分类编号不等于2的货品信息

SELECT id,productname,dir_id FROM product

WHERE dir_id =3 OR dir_id =4;

8.order by

使用ORDER BY子句将记录排序

ASC:升序,缺省

DESC:降序

SELECT ... FROM ... WHERE ... ORDER BY...

举例:查询货品信息并按照成本从高到底排序:

SELECT * FROM product ORDER BY costprice DESC;

SELECT * FROM product ORDER BY costprice;

日期的排序:ASC:远-近DESC:近-远

举例:查询M系列的鼠标并按照批发价降序排序

SELECT id,productname,saleprice*cutoff FROM product

WHERE productname LIKE '%M%'

ORDER BY saleprice*cutoff DESC;

举例:在这里可以使用别名么?

SELECT id,productname,saleprice*cutoff disprice FROM product

WHERE productname LIKE '%M%'

ORDER BY disprice DESC;

结论:ORDER BY字句中可以使用select的别名,执行顺序:最后执行排序

多列排序

SELECT id,productname,dir_id,saleprice FROM product

ORDER BY dir_id DESC,saleprice ASC;

不能使用中文的别名排序

9.多表查询

SELECT * FROM product,productdir WHERE product.dir_id = productdir.id;

使用表连接从多个表中查询数据

SELECTtable1.column, table2.column

FROMtable1, table2

WHEREtable1.column1 = table2.column2;

在WHERE子句中写入连接条件

当多个表中有重名列时,必须在列的名字前加上表名作为前缀。

使用表的别名

使用表的别名简化了查询

提高了查询的性能

SELECT p.id,p.productname,d.dirname

FROM product p,productdir d

WHERE p.dir_id=  d.id;

查询三张表连接

SELECT * FROM product p,productdir d,productstock s

WHERE p.id=s.product_id AND p.dir_id = d.id

10.其他

五.INSERT语句

语法:INSERT  INTO  table[(column[,column...])]

VALUES(value[,value...])

①insert语句将values中给定的值插入到表中的各个字段中,每次使用insert语句只能插入一行数据(在MYSQL下不一定)。

INSERT  INTO  productdir(dirname)

VALUES ('无线键盘'),('机械键盘');

慎用

②在insert语句中,table后面的方括号内是要插入数据的字段列表,字段列表包含了所有需要在插入时插入值的字段名称,在插入时不需要值的字段可以不出现在字段列表中。

③values后面是值的列表,也就是要插入到表中的各个字段的值。如果前面列出了字段列表,那么列表必须与字段列表一一对应,包括了个数,数据类型,位置的对应,如果忽略了字段列表,那么列表必须与表中字段一一对应(创建表时字段的顺序)。

④如果有些字段在插入的时候不能确定初始值,则需要插入空值表示。

在字段中插入空值有两种方式,一种是在需要空值的地方使用null关键字代替;

另一种是通过列出不完全的字段列表实现,在字段列表中没有出现的字段,在插入记录后自动被赋予空值。

1,自增

INSERT  INTO  productdir

VALUES (null,'abc1',null)

自增生成下一个值的策略:该表中出现过的最大的值+1

2,默认值

INSERT  INTO  productdir

VALUES (null,'abc1',null);

INSERT  INTO  productdir(dirname)

VALUES ('abc2');

⑤字符串类型的字段值必须用单引号括起来,例如:’GOOD DAY’

六.UPDATE语句

语法:UPDATE table

SET column = value[,column=value]...

[WHERE condition]

1、在update语句中,where子句是可选的部分,如果使用了where子句,则修改的数据是符合where条件的所有记录;如果省略了where子句,则全表的数据都会被修改。

2、set子句后面是对表中一个或者多个字段的修改,如果修改多个字段的值,使用逗号将多个字段分开。

七.DELETE语句

语法:DELETE FROM table

[WHERE condition]

八.NOT的使用

BETWEEN..AND..:

举例::NOT (price BETWEEN 200 AND 300)

举例::price NOT BETWEEN 200 AND 300

IN..:NOT dir_id IN (2,3) 2: dir_id NOT IN(2,3)

LIKE

IS NULL:IS NOT NULL

九.主键和外键

主键:是一个非空且唯一的列。

外键:A表的某一列数据参照B表的某一列数据。

十.MySQL的数据库存储引擎

1.InnoDB

优点:支持事务和外键;

缺点:存取速度相对较慢。

2.MyISAM

优点:读取、存储速度很快;

缺点:不支持事务,不支持外键。

知识点滴:

元数据:用来描述数据结构的数据叫元数据。

MySQL的注释:#注释内容

字段名、表名等Windows系统对其大小写不敏感,但是linux对其大小写敏感。

SQL关键字一般我们需要大写。

在mysql中连接字符串一般用CONCAT(str1,str2)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值