数据库基础知识

来源:互联网 发布:hough变换检测圆算法 编辑:程序博客网 时间:2024/05/19 21:02

数据库的基础知识

1.数据库(Database,DB)

按照数据结构来组织、存储和管理数据的仓库,其本身可看作电子化的文件柜,用户可以对文件中的数据进行增加、删除、修改、查找等操作

2.数据库管理系统(DBMS)

数据库数据库管理系统    关系型数据库:MySQL、oracle(oracale),MSSQL、Access、excel,(mysofeware)DB2(IBM);SQLLite(轻型数据库/嵌入式)    非关系型数据库(NO-SQL):nongoDB、Hbase、Cassandra.......    SQL:结构化查询语言数据库应用程序

3.数据库服务器(应用程序)

硬件---》安装操作系统(OS:LInux,Windows)---》安装数据库管理系统

4.常用术语

表记录:行字段/属性:列

5.Mysql的安装和配置

目录结构    bin---可执行文件    lib---库文件    data---日志文件和数据库    Smple DataBase---样本数据库    share---共享文件    include---头文件    my.ini(配置文件):        Mysql正常安装,my.ini存放在windows目录下        内容:            [client];port:3306 ---》客户端的端口            [Mysql]default-character-set-gbk:默认字符集(字符编码)            端口、文件路径、数据路径、默认字符集、数据库存储引擎、最大连接数(max-contections-512)            [Mysql] default-storage-engin-MyISAM:数据库存储引擎                MyISAM                 INNOBD安装:官网下载,安装     默认端口:3306   用户名:root;密码:自定义

6.SQL(Structurd Query Language):结构化查询语言

关系型数据库语言一种数据库查询语言和程序设计语言增删改查

7.sql语言组成

数据定义语言(DDL):数据库数据操作语言(DML):表操作数据查询语言(DQL):表查询数据控制语言(DCL):事务、存储过程等

8.Windows下启动Mysql服务:

验证是否启动:telnet -an---3306端口是否是LISTENING使用相关命令登录:dos命令---mysql -h hostname  -u useername -p登录成功出现myslq>登录失败如何解决  相关命令:help \h  帮助;     \s:查看数据库信息;        show database:查看所有数据库;    user test:或者\u   #切换数据库

9.数据类型

整数类型5种:TINYINT(1个字节)、SMALLINT(2)、MEDIUMINT(3)、INT(4)、BIGINT(8)浮点数类型和定点数类型:FLOAT(4个字节)、DOUBLE(4)、DECIMAL(M,D)(M+2)(精确,几乎没有误差):高精度/定点数据类型日期与时间类型:    YEAR(1)、---YYYY    DATE(4)---YYYY-MM-DD        current_date/now()---获取当前系统日期    TIME(3)---        ---HH:MM:SS        current_time/now()---输入当前系统时间    (最优)DATETIME(8)(到9999年)、        ---YYYY-MM-DD HH:MM:SS        NOW---获取当前系统时间和日期    TIMESTAMP(时间戳1970年-2038年)        CURRENT_TIMESTAMP/NULL/无任何输入  ---->  x系统会输入当前系统时间        ----同DATATIME字符串与二进制类型    char(最大长度)---固定长度字符串:不管存入几位都占最大长度    varchar()---可变长度:存几位占几位,可扩展,但位数只显示到最大长度    binany---固定长度二进制数据---图片/文本(数据长度不足,数据后面用\0补齐)    varbinany---可变长度二进制数据---图片/文本    text类型(大文本数据)---文章内容、评论        tinytext        text        mediumtext        longext    BLOB(二进制类型)(二进制大数据)---图片/PDF文档等        tinyblob        blob        mediumblob        longblob    ENUM(枚举类型)(只能存储一个枚举字符串值)----ENUM(’值1‘,’值2‘,’值3‘。。。’值n‘):只能取一个(注意:Mysql中存入的是枚举列举中的顺序编号,而不是列表中的值)    SET---字符串对象,可以有零或多个值---与ENUM相同    BIT(M)类型(二进制类型)---数据长度小于M,左边用0补齐

10.数据表的基本操作(CRUD)

1.创建    2.创建数据表:create 表名(字段名1 类型,字段名2 类型,字段名3 类型)2.查看数据表    1.使用show create table 表名---查看具体某一个表    2.使用show tables;----查看所有表    3.末尾加\G(G必须大写);---使显示美观    4.DESCRIBE/desc 表名        NULL--该列是否可以存储NULL值        Key----该列是否已经编制索引        Default---是否有默认值        Extra---获取给定列附加信息(备注)3.删除---drop table 表名;4.修改    修改表名称---alter table 旧表名 rename (to) 新表名    添加字段名(数据无损)---alter table 表名 add 字段名 数据类型(first/after);    修改字段名(无损)---alter table 表名 change 旧字段名 新字段名 数据类型;(数据类型必须与原数据类型相同)    修改字段属性(数据类型)(数据有问题)---alter table 表名 notify 字段名 字段属性;    修改字段排列顺序()无损)        1。字段位于表开头---alter table 表名 modify 字段名 字段属性 first;        2。字段位于表末尾---alter table 表名 modify 字段名 字段属性 after;        3.交换---1。字段位于表开头---alter table 表名 notify 字段名 字段属性 after 字段名;    删除字段名称(有损)---alter table 表名 drop 字段名;    注意:备份后再进行操作

5.表的约束

  • 创建目的:针对字段进行限制,保证数据的正确性和唯一性
  • 约束条件:PRIMARY KEY,FOREING KEY,NOT NULL,UNIQUE,DEFAULT。
  • 5.1主键约束(PRIMARY KEY)例如:身份证—它可以唯一表示表中的记录
    • 1.单字段主键 格式:字段名 数据类型 PRIMARY KEY
    • 2.多字段主键(组合主键)格式:字段名 数据类型 PRIMARY KEY(字段名1,字段名2,字段名3……字段名n)
    • 注意:一个表中主键只有一个,且满足了非空NOT NULL,不重复UNIQUE
    • 5,2非空约束 格式:字段名 数据类型 NOT NULL(一个表中可以定义多个非空约束)
    • 5.3唯一约束 格式:字段名 数据类型 UNIQUE 验证是否可以为空?可以
    • 默认约束 格式:字段名 数据类型 DEFAULT 默认值—默认为0
    • 自动增加(AUTO_INCREMENT):字段名 字段类型 AUTO_INCREMENT—一般配合主键使用—约束条件:整数类型—跳数1,可以自定义

6.索引(列值排序后的结构)

  • 作用:提高表中数据查询速度
  • 概念
    普通索引
    唯一性索引
    全文索引(数据量大)
    单列索引
    多列索引
    空间索引
  • 2.创建方式的语法
    • 1.创建表的时候创建:
      create table 表名
      (字段名 数据类型[完整性约束条件]
      字段名 数据类型[完整性约束条件]
      .
      .
      .
      字段名 数据类型
      [[uinique|fulltaxt|spatial] index|key
      [别名] (字段名1[(长度)] [ac|desc]]
    • asc升序
    • 2.使用CREATE INDEX语句在已存在的表上创建索引
      CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名 (字段名 [(长度)] [ASC|DESC]);
    • 3.使用ALTER TABLE语句在已存在的表上穿件索引(修改)
      ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX
      索引名 (字段名 [(长度)] [ASC|DESC])
  • 3.删除索引
    • 方法一:
      ALTER TABLE 表名 DROP INDEX 索引名(必须是空表,先删除一下表内容delete from 表名)
    • 方法二:
      DROP INDEX 索引名 on 表名----查看:show create table 表名

7.表记录操作

  • 1.添加数据(记录)
    • 格式一:insert into 表名[(字段名1,字段名2,。。。)] values(值1,值2,。。。)
    • 注意:字段名可以省略不写,但value值必须表中都写;如果需要添加某个特定的值,在前面表名后写上相应的字段名
    • 格式二:insert into 表名 set 字段名1=值1[,字段名2=值2,。。。字段名n=值n] 例:insert into t1 id=1,name=‘qwe’;
  • 2.记录删除
    • delete from 表名 删除所有记录
    • delete from 表名 where 字段名1=值1 and|or 字段名n=n值 删除一或几条
  • 记录查询
    • select * from 表名
作业:练习约束知识点:
  • 创建一个数据库book—设计一个学生信息表(定义约束,创建2个索引,添加20条以上记录)

    • dos命令中打开数据库bin目录:
      *1.登录:
      D:\phpStudy\MySQL\bin>mysql -uroot -proot
      *2.创建数据库:
      mysql>create database book;`
    • 3.查看数据库: mysq>show databases;
    • 4.使用数据库: use book;
    • 5.创建表(约束) mysql> create table student;
    • id int(10) primary key auto_increment,
    • name varchar(20) not null,
    • age int(6) unique,
    • score float default 60,
    • grade int foreing);
    • 6.创建索引:mysql> create index stu_id on student (id asc);
    • mysql> create fulltext index index_name on student(name);
    • 7.查看已创建的表:mysql> show create table student\G;
    • 8.添加记录:mysql> insert into student values(1,'aaa',18,61,1)
    • mysql> desc student;查看表
    • mysql> insert into student(id) values(3);
    • mysql> insert into student(id,name,age,score) values(5,'ddd',24,78);
    • mysql> insert into student set id=11,name='kkk',age=42;score=66;
    • mysql> insert into student(id,grade) values(18,207);
  • 9.查看生成的表:mysql> select * from student;

  • 结果:
    `+—-+——+——+——-+——-+
    | id | name | age | score | grade |
    +—-+——+——+——-+——-+
    | 1 | aaa | 18 | 61 | 1 |
    | 3 | | NULL | 60 | NULL |
    | 2 | bbb | NULL | 60 | NULL |
    | 4 | ccc | 22 | 60 | NULL |
    | 5 | ddd | 24 | 78 | NULL |
    | 6 | eee | 17 | 90 | 201 |
    | 7 | fff | 12 | 56 | 202 |
    | 8 | | NULL | 60 | NULL |
    | 9 | fff | NULL | 60 | NULL |
    | 10 | ggg | 27 | 60 | NULL |
    | 11 | kkk | 42 | 60 | NULL |
    | 12 | kkk | 26 | 66 | NULL |
    | 13 | lll | 40 | 99 | 203 |
    | 14 | | NULL | 60 | 206 |
    | 15 | | 45 | 60 | NULL |
    | 67 | | NULL | 88 | NULL |
    | 17 | mmm | NULL | 60 | NULL |
    | 18 | | NULL | 60 | 207 |
    | 19 | nnn | 99 | 100 | 210 |
    | 20 | | 120 | 60 | NULL |
    | 21 | | 300 | 60 | NULL |
    +—-+——+——+——-+——-+
    21 rows in set (0.00 sec)“
原创粉丝点击