数据库介绍:简而言之是保存数据的仓库,它体现我们电脑中,就是一个文件系统。然后把数据都保存这些特殊的文件中,并且需要使用固定的语言(SQL语言)去操作文件中的数据。
1.1 数据库语法
1.1.1 创建数据库
1、create database 数据库名;
2、create database 数据库名 character set 编码表名 collate 排序规则;
如:create database test1 character set utf8 collate utf8_bin;
1.1.2 查询所有数据库
1、查询当前所有的数据库:show databases;
2、查看当前数据的创建方式:查看数据库的编码表 show create database 库名;
1.1.3 修改数据库编码集
语法:alter database 数据库名称 character set 字符集 [collate 比较规则];
例:alter database test1 character set utf8;
1.1.4 删除数据库
语法:drop database 数据库名;
1.1.5 切换数据库和查看正在使用的数据库
1、切换数据库--语法: use 数据库名;
2、查询当前正在使用的数据库--语法:select database();
1.2 数据表语法
1.2.1 创建数据表
语法:create table 表名(
列名 类型(长度),
列名 类型(长度)...
);
1.2.2 mysql的数据类型
1、字符串型:Varchar、Char(一般需要制定长度)
1、数值型:tinyint 、smallint、int、bigint、FLOAT、DOUBLE (一般不需要指定,使用默认的长度)
2、日期型:DATE、TIME、DATETIME、TIMESTAMP(timestamp插入数据会自动赋值当前时间,DataTime不会)
1.2.3 查看创建表结构
语法:desc 表名;
1.2.4表创建时约束条件
1、主键约束primary key:如增加主键:Alter table 表名 add primary key(列名);
(主键必须满足1.列必须要有值2.列的值不能重复3.能唯一标示一条数据)
2、唯一约束unique:
一张表唯一约束的列可以有多列,但是主键一般只会使用一列或者两列(联合主键)
3、非空约束not null:该字段的值不能为空
4、自增长auto_increment
如果表的主键是int 类型,这时可以在主键的后面添加 auto_increment ,这时表中这一列在添加数据的时候,会自动的增长
1.2.5数据表结构修改
1、增加列:alter table 表名 add 列名 类型(长度) 约束;
例:alter table test1 add name varchar(10) not null unique;
2、修改列类型、长度和约束:alter table 表名 modify 列名 类型(长度) 约束;
3、修改列名称:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
4、删除列:alter table 表名 drop 列名;
5、修改表名:rename table 旧表名 to 新表名;
6、修改表的字符集:alter table 表名 character set 编码集;
7、输出数据表:drop table 表名;
8、查看库中有多少张表:show tables;
9、查看表结构:desc 表名;
1.3数据表内容操作
1.3.1插入数据
语法:insert into 表名 (列名,列名......) values (值,值......);
1.3.2修改操作
语法:update 表名 set 列名=值,列名=值.... where条件语句;
注意:如果update语句没有加上where来筛选条件,那么会修改表中所有的值
1.3.3删除操作
语法:delete from 表名 where条件语句
注意:如果删除语句不加where条件语句,那么会删除表中所有的信息
删除表中的数据时没有加where 条件,会删除表中的所有数据,它与truncate 有什么区别?
1、delete可以回退、可以有条件的删除;
2、truncate无法回退、默认表内容都删除、删除比delete快
delete from table1和 drop table table1; 有什么区别?
delete from table1:把table1表中的所有数据全部删除,但是table1的表还存在。
drop table table1:把table1数据表从数据库中删除。
1.3.4 查询
1、查询表的所有数据,语法:select * from 表名;
2、查询表中指定的列,语法:select 列名,列名... from 表名;
3、按条件查询,语法:select 列名,列名..... from 表名 where 条件;
1.4运算符
1.4.1 相等= 不等 <> !=
select * from student s where s.score !=60;
select * from student s where s.score <>60;
2、区间(between 60 and 70) 注意前面那个数要比后面那个数要小
between 60 and 70 等于score>=60 and score<=70
3、in() 相当于or的关系合并;
4、 like '模糊查询pattern' 进行模糊查询 ,表达式有两个占位符 % 任意字符串
例 select * from student where name like '%陈%';
5、is null 判断该列值为空
6、and 逻辑与 or 逻辑或 not 逻辑非
1.4.2过滤重复数据
语法:select distinct 列名 from 表名 [where 条件];
1.4.3对查询的结果进行排序
语法:select * from 表名 order by 列名 asc|desc ;
order by 分组 asc是升序排列,desc是降序排列
1.4.4 别名
语法:select 列名 as 别名,列名 as 别名.... from 表名 where 条件;
注意:在使用别名的时候,as 关键字可以省略。
1.4.5 SQL中的聚合函数
1、count函数:
语法:select count(*)|count(列名) from 表名
注意: count在根据指定的列统计的时候,如果这一列中有null 不会被统计在其中。
2、sum函数:
语法:select sum(列名) from 表名;
注意事项:1、如果使用sum 多列进行求和的时候,如果某一列中的有null,这一列所在的行中的其他数据不会被加到总和;2、可以使用mysql 数据库提供的函数 ifnull(列名,值)
3、avg函数(平均数)
语法: select avg(列名) from 表名;
4、max(),min()函数
语法:select max(score),min(score) from student;
5、group by分组函数
语法:select … from … group by 列名,列名
1.4.6 select 语句的执行顺序:
标准SQL的解析顺序为:
(1)from 子句, 组装来自不同数据源的数据
(2)where子句, 基于指定的条件对记录进行筛选
(3)group by 子句, 将子句划分为多个分组
(4)使用聚合函数进行计算
(5)使用having子句筛选分组
(6)使用order by 对结果集进行排序
(7) select将最终结果显示出来。
上述未有select语句,为了准确的说明select语句所在的位置:
(1)from 子句
(2)where 子句
(3)group by 子句
(4)having 子句
(5)order by 子句
(6)select 子句
综上:select 6 from 1 where 2 group by 3 having 4 order by 5;