2五、MySQL数据库(一)

数据库的基本概念: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

相关文章
相关标签/搜索