您的位置:首页 > 数据库 > MySQL

mysql数据库的基本用法

2016-06-14 15:39 246 查看
1.mysql中的基本结构

数据空间(数据文件夹) : database

表(数据文件) : table

在数据库中数据空间和表均不可以重名

2.进入mysql

mysql -u root -p 回车

输入密码

3.显示数据空间(显示数据文件夹)

show databases;

4.选择数据空间

use database名称;

5.显示数据文件

show tables;

6.创建数据空间

create database 名称;

7.创建表

create table 名称(列名1 类型1,列名2 类型2,…列名N 类型N);

8.查看表的结构

desc 表名;

9.删除表

drop table 名称;

10.删除数据空间

drop database 名称;

11.插入数据

(1).insert into 表名 values(列值1,列值2,…列值N);

必须与表内数据类型对其

(2).insert into 表名(列名1,列名2,…列名N) values (列值1,列值2,…列值N);

12.删除表中的数据

delete from 表名; 清空表内所有数据

13.条件删除语句

delete from 表名 where 列名 = 列值;

14.更改数据

update 表名 set 列名 = 列值; 修改表内所有数据

15.条件修改语句

update 表名 set 列名 = 列值 where 列名x = 列值x;

16.查询数据

select 列名1,列名2,…列名N from 表名;

练习用查询语句:select * from 表名;

17.条件查询语句

select 列名1,列名2,…列名N from 表名 where 列名X = 列值X;

18.常用比较运算符 :

< >= <= = <>(mysql中可用!=)

and(mysql中可用&&) or(mysql中可用||)

19.特殊比较运算符

is is not 用于判断是否为NULL

列名 between 区间的开始 and 区间的结束

用于判断该列是否在区间内 返回一个[]的区间

in (值1,值2,…值N) 用于判断是否在该括号的集合内

一般不推荐使用,因为在简单的数据表结构中

特别的浪费效率,因为遍历次数过多

注:所有的比较运算符都在where语句后使用

20.常用的算数运算符

+ - * / %

21.查询出每个员工的编号,姓名和年薪(不算奖金,15月工资起算)

select empno,ename,salary*15 from emp;

22.查询出每个员工的编号,姓名和最大月工资

select empno,ename,salary + ifnull(bonus,0) from emp;

23.数据库中NULL有四种特性 :

1.凡是与NULL值做运算的结果 都为NULL

2.NULL值 不会与普通的比较运算符运算 判断列值是否为NULL

通过 is 判断等于空 is not判断不等于空

3.被组函数默认忽略 不会参与函数计算

4.在mysql中默认比所有的值都小,oracle中默认比所有值都大

24.普通函数

ifnull(列名,new值) 将该列中的所有NULL值转换为 new值

注:oracle下没有ifnull 但是有使用方法完全一致的 nvl(列名,new值)

lower(列名) 将该列中的值转换为小写

upper(列名) 将该列中的值转换为大写

注:在mysql下条件查询时,会默认将所有值转换为lower

但在oracle下不会被转换,所以oracle下必须手动添加lower或upper

25.别名机制

可以在任意列名或者表名重新定义一个别名 用于方便使用

as 新名字

注:as大部分时间略写

26.查询出每个员工的编号,姓名,基本工资,最大月薪,最大年薪

select e.empno no,e.ename name,e.salary sal,

e.salary+ifnull(e.bonus,0) month_sal,

(e.salary + ifnull(e.bonus,0))*15 year_sal from emp e;

27.查询出工资在5000到10000之间的员工的编号,姓名和工资

select empno,ename,salary from emp

where salary between 5000 and 10000;

28.查询出工资是5000,8000,15000的员工的编号,姓名和工资

select empno,ename,salary from emp

where salary in (5000,8000,15000);

29.组函数 :

直接与普通列一起查询 会出现数据显示有误的情况

如果组函数和普通列一起被查询,则必须分组

如果只有组函数的查询,则不需要分组

count(列名) : 求该列非NULL值的个数

max(列名) : 求该列最大值

min(列名) : 求该列最小值

sum(列名) : 求该列总和

avg(列名) : 求该列平均值

group by 列名 :

被分组的列,一般都是有重复数据的列

组函数和普通列一起被查询时,一般都直接按照该普通列分组

查询出公司有多少个员工

select count(empno) count_emp from emp;

查询出每个部门的员工个数

select count(empno) count_emp,deptno from emp group by deptno;

查询出每个职位的员工个数

select count(empno) count_emp,job from emp group by job;

查询出公司的最高工资、最低工资、公司每个月工资的总和和平均工资

select max(salary) max_sal,min(salary) min_sal,

sum(salary) sum_sal,avg(salary) avg_sal from emp;

查询出公司的每个月实际平均工资

select avg(salary+ifnull(bonus,0)) avg_sal from emp;

查询每个部门的最高工资和最低工资

select max(salary) max_sal,min(salary) min_sal,deptno from emp

group by deptno;

having字句 用于在分组后的判断条件

如果在没有分组的情况下使用,会默认按照第一列分组

极大的占用系统内存,所以只有在分组后需要的情况下使用

分组查询之后 默认语法不可以使用where语句

select avg(salary) avg_sal,deptno from emp

group by deptno having avg_sal > 5000;

查询公司的所有员工的编号,名称和工资 按照工资从小到大的顺序排序

select empno,ename,salary from emp order by salary;

注:order by 列名 排序后默认按照从小到大 关键字 asc

逆序 排序后添加desc

distinct 去重

写在select之后 列名之前

limit

可以选定显示哪部分的查询结果

在limit后面添加行数和显示的个数

注:limit关键字在低版本的mysql中有的不支持,少用

模糊查询 like

需要两个通配符配合使用

_ 每一个_都代表一个字符 直到匹配到类似的内容

% 放在字符前 用于表示以该字符为结尾

放在字符后 用于表示以该字符为开始

字符两边都添加 用于表示显示全部相关内容

复制一个表

create table 表名1 select * from 表名2 完全复制一个表结构和其内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库