数据库的基本概念:mysql
一、数据库:DataBase,简称DBsql
二、什么是数据库:用于存储和管理数据的仓库数据库
三、数据库的特色:一、持久化存储数据的。数据库就是一个系统文件安全
二、方便存储和管理数据函数
三、使用了统一的方式操做数据库ui
四、常见的数据库软件:Oracle命令行
MySQLcode
SQL Server对象
DB2排序
五、MySQL经常使用命令行:一、启动mysql服务:net start mysql
二、关闭mysql服务:net stop mysql
三、登录mysql:mysql -uroot -p密码
mysql -hIP地址 -uroot -p链接目标的密码
四、退出mysql:exit
quit
SQL:结构化查询语言,定义了操做全部关系型数据库的规则,每一种数据库操做的方式存在不同的地方,称为方言
SQL通用语法:一、SQL语句能够单行或多行书写,以分号结尾
二、能够使用空格和缩进来加强语句的可读性
三、MYSQL数据库的SQL语句不区分大小写关键字建议使用大写
四、3种注释:单行注释:-- 注释内容 或者# 注释内容
多行注释:/* 注释内容 */
SQL分类:
一、DDL,数据定义语言,用来定义数据库对象:数据库,表,列等。
二、DML,数据操做语言,用来对数据库中的数据进行增删改
三、DQL,数据查询语言,用来查询数据库中表的记录
四、DCL,数据控制语言,用来定义数据库的访问权限和安全级别,及建立用户
DDL:
一、操做数据库:一、Create,建立
建立数据库:create database 数据库名称;
create database demo;
建立数据库,判断不存在,在建立:create database if not exists 数据库名称
create database if not exists demo;
建立数据库,并指定字符集:create database 数据库名称 character set 字符集名
create database demo char set utf8;
二、Retrieve,查询
查询全部数据库的名称:show databases
show databases;
查询某个数据库的字符集:show create database 数据库名称
show create database demo ;
三、Update:修改
修改数据库的字符集:alter database 数据库名称 character set 字符集名
alter database demo char set utf8;
四、Delete;删除
删除数据库:drop database 数据库名称
drop database demo;
判断数据库存在,存在再删除:drop database if exists 数据库名称
drop database if exists demo;
五、使用数据库
查询当前正在使用的数据库名称:select database()
select database() ;
使用数据库:use 数据库名称
use demo;
二、操做表
一、Create,建立
建立表:create table 表名(
列名1 数据类型1,
列名2 数据类型2,
...
列名n 数据类型n
)
create table account ( id int auto_increment, name varchar(20), money double, primary key (id) ) char set = utf8;
复制表:create table 表名 like 被复制的表
create table account1 like account;
数据库的数据类型:一、int 整数类型,例如 age int
二、double 小数类型,例如 score double(5,2)
三、date 日期,只包含年月日,yyyy-MM-dd
四、datetime 日期,包含年月日时分秒,yyyy-MM-dd HH:mm:ss
五、timestamp 时间戳类型,包含年月日时分秒,yyyy-MM-dd HH:mm:ss,不赋值或者赋值null,默认使用当前
时间
六、varchar,字符串 ,例如name varchar(20)
二、Retrieve,查询
查询某个数据库中全部的表名称:show tables
show tables;
查询表结构:desc 表名
desc account;
三、Update:修改
修改表名:alter table 表名 rename to 新的表名
alter table account rename to account1;
修改表的字符集:alter table 表名 character set 字符集名称
alter table account charset utf8;
添加一列:alter table 表名 add 列名 数据类型
alter table account add age int;
修改列名称:alter table 表名 change 列名 新列名 新数据类型
alter table account change id uid int;
alter table 表名 modify 列名 新数据类型
alter table account modify id int;
删除列:alter table 表名 drop 列名
alter table account drop id;
四、Delete;删除
删除表:drop table 表名
drop table account;
判断表是否存在,存在删除:drop table if exists 表名
drop table if exists account;
DML:
一、添加数据
insert into 表名(列名1,列名2,列名3...列名n) value (值1,值2,值3...值n)
insert into account (id,uid,money) value (1,46,1000),(2,45,1000),(3,46,2000);
注意:一、列名和值要一一对应
二、若是表后面没有列名,则默认给全部列添加值
三、除列数字类型,其余类型须要用引号(单双均可以)。
二、删除数据
delete from 表名 where 条件
delete from account where id = 1;
注意:一、若是不加条件,则删除表中全部记录
二、若是要删除全部记录
一、delete from 表名,不推荐使用,效率低
二、truncate table 表名 ,推荐使用,效率高
truncate table account;
三、修改数据
update 表名 set 列名1 =值1,列名2 = 值2,...where 条件
update account set id= 1 ,name ='读者', money=1000 where id =1 ;
注意:若是不加任何条件,则会将表中的全部记录所有修改
DQL:
查询表中的记录:select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组以后的条件
order by
排序
limit
分页限定
基础查询:一、多个字段的查询: select 字段名1,字段名2,字段名3....from 表名;
select name ,money from account;
二、查询全部字段名:select * from 表名
select * from account;
三、去除重复:select distinct 字段名1,字段名2 ....from 表名;
select distinct name , money from account;
四、计算列:select 字段名1,字段名2...ifnull(字段名1,默认值)+字段名2 from 表名
select ifnull(money, 1) from account;
通常能够使用四则运算,null参与运算,结果为null 全部须要ifnull进行判断
五、起别名:select 字段名1 as 别名 from 表名
as能够省略
select money m from account;
条件查询:where子句后面根条件
运算符:一、>,<,<=,>=,=,<>
二、between...and
三、IN(集合)
四、LIKE,占位符:_(单个字符),%(多个字符)
五、IS NULL
六、and 或 &&
七、or 或 ||
八、not 或 !
排序查询:order by子句后面
order by 排序字段1 排序方式1,排序字段2,排序方式2
排序方式:ASC 升序(默认)
DESC 降序
注意:若是有多个排序条件,则当前边的条件值同样时,才会判断第二条件
聚合函数:将一列数据做为一个总体,进行纵向计算
一、count:计算个数 ,select count (列名) from 表名
select count (money) from account;
二、max:计算最大值,select max(列名)from 表名
select max (money) from account;
三、min:计算最小值,select min(列名) from 表名
select min(money) from account;
四、sum:计算和, select sum(列名) from 表名
select sum(money) from account;
五、avg:计算平均值 , select avg (列名) from 表名
select avg(money) from account;
注意:聚合函数的计算会排除null值,能够使用ifnull替换
分组查询:group by 字段名称
select money ,id from account group by sex;
注意:一、分组以后查询的字段:分组字段、聚合函数
二、where和having区别:where在分组前限定,若是不知足条件,则不参与分组
having在分组以后限定,若是不知足结果,则不会被查询出来
where后不能够跟聚合函数,having能够进行聚合函数判断
select id,money from account where money > 1000 group by sex having count(id) >2;
分页查询:limit 开始的索引,每页查询的条数
select * from account limit 0,3;
开始索引=(当前页码-1)*每页的条数
注意:分页操做是一个“方言”
约束:对表中的数据进行限定, 保证数据的正确性、有效性和完整性
分类:一、主键约束, primary key,
主键的做用:非空且惟一,一张表只能有一个字段为主键,主键就是表中记录的惟一标识
在建立表时,添加主键约束
create table stu( id int primary key, name varchar(20) )
建立完表后,添加主键
alter table stu modify id int primary key;
删除主键
alter table stu drop primary key;
自动增加:若是某列是数值类型的,使用auto_increment 能够来完成值得自动增加,通常和主键同时使用
create table stu( id int primary key auto_increment, name varchar(20) );
添加自动增加
alter table stu modify id int auto_increment;
删除自动增加
alter table stu modify id int;
二、非空约束,not null
建立表时添加约束
create table stu( id int primary key auto_increment, name varchar(20) not null );
建立完表后添加非空约束
alter table stu modify name varchar(20) not null;
删除非空约束
alter table stu modify name varchar(20);
三、惟一约束,unique
建立表时,添加惟一约束
create table stu( id int primary key auto_increment, name varchar(20) not null unique );
注意:惟一约束的列值能够存在多个null
建立表后,添加惟一约束
alter table stu modify id int unique;
删除惟一约束
alter table stu drop index id;
四、外键约束,foreign key
概念:让表于表产生关系,从而保证数据的正确性
在建立表时,添加外键
create table 表名(
····
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
)
create table stu( id int primary key auto_increment, name varchar(20) not null unique, constraint FK_id foreign key (id) references account (uid) );
建立表后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表名称(主表列名称)
alter table stu add constraint FK_id foreign key(id) references account (uid);
删除外键
alter table 表名 drop foreign key 外键名称;
alter table stu drop foreign key FK_id;
级联操做:一、添加级联操做
alter table 表名 add constraint 外键名称 foreign key (外键字段名称)references 主表名称(主表列名称)on update cascade on delete cascade
alter table stu add constraint FK_id foreign key(id) references account (uid) on update cascade on delete cascade;
二、分类:级联更新:on update cascade
级联删除:on delete cascade