什么是mysql? database 数据仓库

    DBNS 数据库管理系统   数据库通过这个创立和操作系统    SQL治理数据库语音

数据库管理系统。数据库是关系型
应用内核线程齐全多线程,能够轻松应用多个CPU
每个表最多反对64个索引。每个索引能够蕴含1到16列或局部列。

数据库贮存数据的特点:1须要将数据放在表里,在把表放在库里。

        2 示意有个性的        3必须有返回值,sql语句

my.ni批改配置的中央
mysql启动 : net start mysql net stop mysql
怎么看库: show databases;
怎么看表;show tables;
show tables from 库民;看库外面的表
查看版本 select version(); mysql -V
insert 表名(id,name) into value(15,"dsad");
查看表构造: desc 表名
正文:-- 空格 或者是# 多行正文 / /
数据库中这个示意这是个列名,不是关键字 格式化F12

起别名 select 100*98 as 后果;
1 select name as 性,select age as 年龄 from 表名;
as起别名。去重重名。如果别名有特殊符号,如out #put,就加上"out # put".
2 去重 select distinct age as 年龄 from 表名;

不能有两个去重的货色,只能有一个列名

3 + 的作用 查问员和性连接成一个字段,并显示为姓名。
+号会把字符型转化成数值,胜利就做加法运算。失败就变0.只有一方为null,后果就是null。
comcat两头有逗号隔开
拼接表名的写法: select concat(name,age) as 我多大了 from user;
留神字段中有一方为null,和任意字段后果都是null。有null和不为null,怎么办?
select concat(name,ifnull(age,0)as 我多大了 from user;
还有一个isnull,如果是0就是显示为1
字符型必须用单引号如a.
4 含糊查问 %多个字符 _一个字符
select name from user where name like%a;
select name from user where name like a___i_;
查名字第一个为a,第五个为i的员工名
如果查问外面有下滑线的_,进行本义
select name from user where name likea/_;
第二位数就是_这个。应用转义字符 escape 单引号

5 between and
select age from user where age between 20 and 30;
这个是蕴含20和30的,程序不能换。
6 应用in,判断某字段的值,是否合乎某一字段。列表的值必须对立
select age from user where age in(18,22,26)
7 查问名字为空的或者没有名字的员工年龄.is not null
select age from user where name is null;
8 <>就是等于的意思,能够代替7里的is
select name from where age <> 10;找年纪不为10岁的名字
9 留神如果问的是有哪些编号,记得要去重!!distinct
10排序查问 解决limit 就是这个在最初面
select * from user order by age desc;从高到低排序,降序
select name,age order by age asc;从低到高排序,升序。默认
查问id>10的名字,要求按年龄大小排序
SELECT name,id,age FROM USER WHERE id>10 ORDER BY age; 如果查问工信息和年薪,按年薪高下进行排序。年薪不在表格里

把年薪不存在的用别名示意
select , salary12(1+ifnull(commission,0)) as 年薪 from employess order by 年薪;
按姓名的长度进行排序
select length(name) 名字长度
,name,id ,age from user order by 名字长度。
排序的话,会遇到两个一样的数值,怎么按规定排序,不规定即是默认。间接在前面加
select length(name)as 名字长度,id,name,age from user order
by 名字长度,id;名字长度一样按升序排序
11数据库的一个汉字占3个字节,一个字母一个字节
length就是获取字节长度为几

12 substr截取 索引从1开始
select substr('阿珍视上了啊强',2) 牛啊; 后果:珍视上了啊强
select substr('阿珍视上了啊强',2,3
) 牛啊; 后果:珍

13 instr 呈现索引的第一次的地位,找不到就为0;
SELECT INSTR('阿珍视上了阿强','爱上了') ;
显示为3
14 trim去除空格,只能去除前后,不能去除两头
SELECT TRIM('aa' FROM 'aaa阿森aaaaa') 这个只能去除aa,不是去除a。
15 lpad 左填充
select lpad('我牛批无敌',8,'$');显示 我牛批无敌$$$

16 rpad 左边填充
17 replace 替换
select replace('我无敌牛批','无敌牛批','菜鸡真菜');
我菜鸡真菜
18 round 四舍五入
select round(2.369,2)小数点后取几位,2.36
19 工夫函数 str_to_date -这个能够变/区别就是会加上0

y肯定要大写!! 第二个前面的%可本人去定义。

如果日期格局不是惯例的模式,要找到特定的入职工夫

20date formact 用年月日的写法
select date_formact('1998-4-3','%Y年%m月%d日')
21 case 多重设定
select 显示的货色 case 工资 when 30 then 工资*1.1
when 40 then 1.2 end from 表名

如果是等于,能够把salary提取case的前面 就是2000then A

22分组函数
sum
select sum(age) from user
select avg(age) from user
select min(age) from user
select max(age) from user
select count(age) from user
SELECT SUM(age),AVG(age),MIN(age),MAX(age),COUNT(age) FROM user
能够保留小数,round
SELECT SUM(age),ROUND(AVG(age),2),MIN(age),MAX(age),COUNT(age) FROM user
sum avg 解决数值型
min max cound 能够任何类型
全副疏忽null值
都distinct搭配,
count能够统计行数


myisam count速度最快
innodb count*和count(1)差不多 个别不必count加字段
因为查问进去基本上是一行,所有留神不能再查问一排,对应表格的格局
最大入职工夫和最小入职工夫的相差天数

23 分组查问


合成进去写,在合下来,看原有表外面有没有

有就放在where那里

分组查问能够分为两类: 次要依据数据,一个是数据表里曾经有的,一个是通过本人的函数发明进去的
分组前: 放在group by 后面 where前面
以及分组后: 在having 前面

多表查问的时候,起了别名,查问的字段就不能用表名了
加查问条件用and,奖金不为0.