MySQL知识_day03

数据库(DataBase)知识学习

一、数据库和数据库管理系统:

1、数据库:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
2、数据库管理系统:数据库管理系统(database management system简称dbms),是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库
  3、常用的关系型数据库:
 3.1:MySQL:
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
   3.2:oracle:
oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
   3.3:sql server:
         sql server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开的,并于1988年推出了第一个OS/2版本。  
  3.4:Access
Microsoft Office Access是微软把数据库引擎的图形用户界面软件开发工具结合在一起的一个数据库管理系统。
二、简单SQL语句
     1、创建数据库:
CREAT DATABASE  database_name;
例如:创建名字为"mydatabase"的数据库,语句如下:
CREAT  DATABASE  mydatabase;
2、删除数据库:
DROP DATABASE database_name;
例如:删除名字为"mydatabase"的数据库,语句如下:
DROP DATABASE mydatabase;
3、创建表:
CREAT TABLE table_name(字段名1 类型 , 字段名2,类型);
例如:创建一个表名为"user"的表.语句如下:
CREAT TABLE user(
id int IS NOT NULL,
username varchar(15),
primary key(id)
);
注: “IS NOT NULL” 设置id 非空,primary key(id)设置id为主键。
4、删除表:
DROP TABLE table_name;
例如:删除表名为“user”的表:
DROP TABLE user;
5、插入语句:
5.1:INSERT  INTO 表名 VALUES (字段对应值1,字段对应值2,....);
注:这种写法是向表中所有字段都插入值,注意插入值的顺序、类型要和字段的位置顺序、类型一一对应。
5.2:INSERT  INTO 表名(字段名1,字段名2,......)VALUES(字段对应值1,字段对应值2,....);
注::这种写法是向表中指定字段插入值,注意插入值的顺序、类型要和字段的顺序、类型一一对应。
 
例如:
MySQL知识_day03_第1张图片
图表名为user的表中 有三个字段 分别是 id 、userName  passWord,其中设置id为主键。
现在我们用一种方式向user表中插入值:
INSERT INTO user VALUES(1,'小王','a123456');
现在我们用第二种方式插入值
INSERT INTO user(id,userName.passWord)VALUES(2,'豆腐','d000000');
注意插入的值的顺序、类型一定要和字段的顺序、类型一一对应,并且字段之间,插入的值之间用逗号隔开。
6、删除语句
语法:
delete  from 表名 where 条件;
 例如:
MySQL知识_day03_第2张图片
   上面的表名为user表中有三条记录,现在我们删除姓名为豆豆的记录,语句如下:
delete from user where userName='豆豆';
这样就可以删除成功了。
7、更新语句
语法:
update  表名 set 字段名=更新的值 where 条件;
例如:我们将上面user表中第一条记录中的密码改成222222,语句如下:
update user set passWord='222222'where id=1;
 我们将user表中第三条记录中的豆豆改为大雄,id改成4,语句如下:
update userset id=4,userName='大雄'where userName='豆豆';
注意:前面给的是更新后的值,更新多个字段值要用逗号隔开。
8、查询语句:
8.1:查询表中所有字段值;
语法:
select *from 表名;
例如我们要查询user表中所有信息,语句如下;
select *from user;
8.2:给指定条件查询:
语法:
select *from 表名 where 条件;
例如我们要查询user表中id<4的字段值,语句如下:
select *from user where id<4;
8.3:查询指定字段值
语法:
select 字段名 from 表名;
例如我们要查询user表中userName字段的值,语句如下:
selec userName from user;
 注:*  是代表所有字段,这里只是简单查询,复杂点的查询我们在后面介绍

9、别名:
关键字AS
语法
select 字段名 1AS 别名,字段名2 AS 别名......from 表名 ;
例如:
MySQL知识_day03_第3张图片

我们将上图user表中查询userName的别名改为用户名,,如下图:
MySQL知识_day03_第4张图片
注:此时查询的视图中 userName就变成了用户名,这里改变的只是查询视图中userName的名字,实际表中的userName是没有改变的。
10、distinct:

              select distinct *from user

              查询user表中的所有字段的值都一样只显示一条记录

              select distinct password from user

              查询user表中的password字段值相同的只显示一条记录

              select distinct username,passwordfrom user;

              查询user表中username和password字段值都相同的只显示一条记录。

10、条件

       10.1: is null 和is not null

       null是一种状态,不是里面的字符串为空。

通配符:

10.2,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%) 示。

比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

10.3,_ :表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;

10.4,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);

如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
将找出“老1”、“老2”、……、“老9”;

10.5,[^] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、…

 

10.6:逻辑复合条件关键字

       and:

       or:

注意:where后的条件中出现的字段必须是表中的字段

10.7:排序

ORDER BY

asc desc 当对多个字段排序时,只作用前面的一个字段。

order by :排序字段可以查询字段的别名,先查后排序,where条件中不能用查询字段的别名。

SELECT *FROM emp ORDER BY deptno ASC,sal DESC;

对emp 表 中两个字段排序,先对deptno的值进行升序排列,在先对deptno字段的值排序好的基础上再对sal字段的值进行降序排列

11、模糊查询:

关键字LIKE

例如查询user表中userName字段值最后一个字符是‘东’的,语句如下:

select *from user from userName LIKE ‘%东’;

例如查询user表中userName字段值中包含'东'的,语句如下:

select *from user from userName LIKE ‘%东%’

;注:"%"表示零个或者多个字符.我这里只介绍了模糊查询中的一种通配符的使用,具体的看上面的通配符使用。


12、常用的函数:

1、lower(字段或者字符串):把字段或字符串转换为小写。

2、upper(字段或字符串):把字段转换为大写.

3、concat(字段或字符串):连接两个字段或者字符串。

4、length(字段或字符串);得到字段或者字符串的长度。

5、substr(字段或者字符串,start,length):截取字符串, 第二个参数是开始截取的位置,mysql中从1开始,第三个参数是截取的长度。

6、分组函数:计算的结果是一个查询的,不是某一行的

avg(字段):计算出查询结果中该字段的平均数。

例如我要查询emp中工资(sal)高于平均工资的工资信息

selecsal from emp where sal>(select avg(sal) from emp) ;

注:这里用到了子查询,select avg(sal) from emp先查询出emp表中sal的平均工资,条件比较查询。

max(字段):计算出查询结果中该字段的最大值。

min(字段):计算出查询结果中该字段的最小值。

sum(字段):计算出查询结果中该字段的和。

count(字段):计算出查询结果中该字段的条数。

注:分组函数不能用在where条件中,只能用在select后。


今天就先写到这了,后面会慢慢补充mysql的知识!!!



你可能感兴趣的:(MySQL)