数据库

一、数据库是什么

存储管理数据的仓库。

软件类型:Mysql(开源)、Oracle、db2、SQL Server

数据库:库-数据库软件中的一个仓库,库中存放表;

              表-二维表,包括列和记录

              列-字段、表头、标题

数据库有什么用:存储数据-量大、安全、完整、共享

                            管理数据-通过分析、组合产生新的有效的数据

需要掌握的:DDL-数据定义语言 create/alter/drop/show

                     DML-数据操作语言 insert/delete/update

                     DCL-数据控制语言 安全性

                     DQL-数据查询语言 select

二、数据库安装、启动

Mysql、SQL server直接百度就好,记下账号密码;

Linux下安装Oracle,一般看运气,不行多试几次;

启动:windows中 启动服务-net start mysql

                                            net stop mysql

                                            右键我的电脑 管理(SQL server同理)

     登陆数据库   DOS窗口输入 mysql -uroot -proot(账户root 密码root) 访问他人数据库 mysql -ip -p -uroot -p

      退出 ctrl + c / quit / exit                       

三、数据库的使用

SHOW DATABASES;查看所有数据库
CREATE DATABASE xiaoqiang CHARACTER SET utf8;创建数据库
USE xiaoqiang;使用该数据库
DROP DATABASE test;删除名称为test的数据库
CREATE shuaige TABLE shuaige ( 创建表
    sno INT PRIMARY KEY AUTO_INCREMENT,
    sname VARCHAR(20) NOT NULL,
    sage INT,
FOREIGN KEY(sage) REFERENCES meinv(sage), ssex ENUM('male','female') );

  

DDL增删改查:库 -创建数据库 create database 库名;(库名不要使用数字开头;使用默认编码格式utf8)  

                                                 create database 库名 character set gbk; 创建一个gbk格式的数据库

                               查看数据库 show databases;

                               查看数据库的编码格式 show create database 库名;

                                查看正在使用的数据库 select database();  

                            使用数据库 use 库名;

                             删除数据库 drop database 库名;(慎用)

                             修改数据库编码格式 alter database 库名 charater set utf8;

    表- 数据类型: int 整型 、double小数(长度1,长度2)-1为字段数据总长度,2为小数部分长度、char固定长度字符串“adf”、varchar 可变长度字符串、text字符串、time时间、date日期、datetime日期时间、enum枚举("","","")

         创建表 create table 表名(

                    字段名字 字段类型(长度),

                    字段名字 字段类型(长度),

。。。。。

) 

     修改表- 改表名 rename table 原名 to 新名;

                 改字段 alter table sstu change 原字段名 新字段名 新字段类型(长度);

  注意:数据库的字符集,表使用数据库的字符集,列默认使用表的字符集

     查表- 库中表多少 show tables;

              表中字段类型 desc 表名;

              查询表的创建的sql语句 show create table 表名;

    列- 添加新字段 alter table 表名 add 新字段名 字段类型(长度);

          删除 alter table 表名 drop 字段名;

DML-表操作 新增-insert into 表名(待赋值字段列表)values(赋值列表)  例如:insert into shuaige(sid,sname)values(1,"张三")

                             批量插入insert into shuaige(sname,sage)values('李四',22),('张三',33) ;

                             注意:1.列名和列值类型个数 顺序一一对应 2.注意数据长度以及是否有必须赋值的字段,非空字段而且没有默认值

                                        3.插入空值 输入null 4.插入时间日期 使用字符串 “19981212” “12:12:12” 

                     删除-delete from shuaige where sname="李四";

                             delete from shuaige where sname="张三" or sname="李四";

                             delete from shuaige where sname="张三" and sname="李四"; 

                           -truncate table 表名;

                         (delete删除的表中记录是一行一行的删除,结果会有影响的行数;truncate删除表中的记录先直接把表drop掉在创建一个新表)

                   修改-update 表名 set 字段=值....字段=值 where 条件

 四、约束

1.主键 primary key   特点 唯一 非空 ,每个表中应有一个主键

2.非空 not null  该字段必须添加内容

3.自增 auto_increment 特点 给主键加 ,列是整数列 ,删除的序号不会再次出现,编号只能变大 不能变小 ,从1开始 步长为1;

4.外键 foreign key  特点 当一个表中的某一列数据来源于另一个表中的某一列时,引用数据的一般都不是主键,被引用的是主键,至少两个表,外键的列的数据类型和长度和引用的列一致

5.默认 default 不添加数据的情况下使用默认值

6.唯一 unique 不能使用重复的数据,可以是Null

 五.单表查询

查询语法-select 查询字段列表

                from 来源

                表名 数据

                where 数据筛选

                条件 用于筛选源数据

                group by 对筛选后的数据分组

                字段

                having 分组后的筛选

                order by 对查询结果进行排序  字段 升序asc默认,字段 降序desc

                limit n,m 分页查询

               执行逻辑 from-where-group-having-select-order by-limit 

基本查询-select 字段列表 from tablename;

条件查询-= <>  <= >= !=/<> and且 or或 not非 is null  is not null  between 数 and 数(区间) in(值列表)

模糊查询- 查询姓李的人 李%

                查哈***奇的人 哈%奇

                姓名第二个字为士的人  _士%

              -like

字段查询的控制:字段的计算 任何东西和null相加 结果都是null

                            记录的去重 distinct 去除两条或两条以上的记录完全相同

                            别名

排序-order by 字段 升序asc/降序desc

分页-limit n,m 限制查询的记录数目  n为起始的行数 m代表显示多少行  起始行从0开始 0是第一行

聚合函数-聚合函数用在查询后面

               max() 计算指定列的最大值

               min() 计算指定列的最小值

               sum() 计算指定列的和 数值正常计算,非数值当作0使用

               avg() 计算指定列的平均数 数值正常计算,非数值当作0使用

              count() 统计指定列中所有不为null的记录的行数

分组 group by having

        having 用于分组后筛选 可以使用聚合函数

        where 用于分组前的筛选 不可以使用聚合函数  

六、多表查询

1.合并结果集

各个表的列数和字段类型 长度 必须相同;把多个查询的结果合并到一起

去重 union ;不去重 union all

2.连接查询

先把多个表的数据合并到一起,再进行查询;默认连接时表数据会产生笛卡尔积;会产生大量的无效数据;使用主外键关系去除无效数据

inner join内连接- select * from 表1 inner join 表2 on  表1.X=表2.X

特点:查询出的结果必须满足主外键的筛选条件

outer join外连接-特点 查询出的结果不必满足主外键的筛选条件

                           左外 left outer join

                           右外 right outer join

3.嵌套查询/子查询

一个select 语句中包含另一个完整的select语句

特点:出现在where 后作为条件的一部分;作为一个新的表来存在

自然连接- 自动寻找主外键关系 去除无效数据

                natural join

                natural left join     natural right join 

4.高级对象(后期继续整理)

存储过程-一组为了完成一个特定的功能的sql语言的集合

posted @ 2018-07-14 16:38  迷迷糊糊的礼物  阅读(163)  评论(0)    收藏  举报