澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:MySQL创建数据表,MySQL学习

2019-12-01 作者:数据库网络   |   浏览(150)

基本概念:

  • 数据库DB(database):
    • 多少的库房,数据的集聚,是数码的黄金时代种布局化的积攒
  • 数据库管理类别DBMS(database management system卡塔尔国:
    • 拘周全据库的生龙活虎套软件
    • 比如Oracle、MySQL、SQL server、DB2
    • 在于应用程序和操作系统之间
  • 数据库应用程序:
    • 运用数据库应用程序与DBMS举办通讯,访谈和管理数据库中的数据
  • 数据库服务器:
    • 计算机 数据库管理类别
    • 叁个数据库服务器能够管理多个数据库,一个数据库下满含多少个表
  • SQL语言
    • 有备无患:Structured Query Language,构造化查询语言
    • 由IBM在70年份开辟出来,80年份被鲜明为关系型数据库语言的行业内部
    • 重大包蕴,对数据的定义、操作、查询、调控,四大类操作
  • 广阔的数据库成品
    • Oracle公司的Oracle
    • 微软集团的SQL Server
    • IBM公司的DB2
    • 10gen公司的MongoDB:
    • Oracle公司的MySQL,早期为瑞典王国的MySQL AB公司开支
  • 数据库引擎:
    • 用于存储、管理、爱护数量的主导服务
    • 参见:mysql 数据库引擎
    • MySQL主要有MyISAM和InnoDB两种:参见:MySQL存款和储蓄引擎MyISAM与InnoDB的主要差异相比较

*  创建数据表
 *
 *      
 *      风姿罗曼蒂克、什么是数据表
 *
 *          
 *
 *      二、成立数据表的SQL语句模型
 *
 *          DDL
 *
 *          CREATE TABLE [IF NOT EXISTS] 表名称(
 *            字段名1 列类型 [属性] [索引]
 *            字段名2 列类型 [属性] [索引]
 *            ...
 *            字段名n 列类型 [属性] [索引]
 *          ) [表类型] [表字符集];
 *
 *          表名称和字段名 必要大家和谐定义名称
 *
 *          users
 *          articles
 *
 *          SQL是不区分抑扬顿挫写的, 可是表正是一个文本名, Windows不区分朗朗上口写,Linux区分大小写
 *          1. 必然要有含义(爱沙尼亚语或保加福州语组合和七个单词的缩写)
 *          2.谈得来定的称谓最棒都小写
 *          3. SQL 语句都大写
 *
 *        
 *   
 *
 *      三、数据值和列类型
 *        
 *        细分都以按空间大小来分其余
 *
 *        能够存下就可以
 *         
 *          1、数值型
 *              整型(整数)
 *                一点都不大的整型     1字节    -128--127      0-- 255(无符号)            TINYINT
 *                非常的小的整型       2字节    -32768--32767  0---65535                    SMALLINT
 *                中等大小的整型   3字节                   0---16777215                 MEDIUMINT
 *                标准的整数型     4字节                   -2147483648--- 2147483647    INT
 *                大整数型         8字节                                      BIGINT            
 *              浮点型(小数)
 *                  float(M,D)            4字节
 *                  double(M,D)           8字节
 *                  定点数
 *                  decimal(M, D)        M 2字节
 *              
 *        2、字符型
 *            “mysql” 'mysql' 
 *             char(m卡塔尔(英语:State of Qatar)              255  固定长度
 *             varchar(m卡塔尔国           255  可变长度
 *
 *             char(4)           varchar(4)
 *             ''       4           ''       1字节
 *             'ab'     4           'ab'     3字节
 *             'abcd'   4           'abcd'   5字节
 *             'abcdefg'4           'abcdefg'5字节
 *
 *             text  文本数据  (小说)  2   16- 1
 *                 
 *                 MEDIUMTEXT
 *                 LONGTEXT
 *             blob  二进制数据 (相片)
 *                 MEDIUMBLOB
 *                 LONGBLOB  
 *            
 *            ENUM  枚举  1或2字节
 *
 *            ENUM("one", "two", "three", "four"卡塔尔(英语:State of Qatar)  ---  65535, 三回只可以有叁个值
 *
 *            SET   群集  1,2,3,4,8字节    --- 64       一遍能够用多个汇聚中的值,中间使用”,“分开
 *            
  *            
 *        3、日期型
 *        
 *            DATE          YYYY-MM-DD
 *            TIME          hh:mm:ss
 *            DATETIME      YYYY-MM-DD hh:mm:ss
 *            TIMESTAMP     YYYYMMDDhhmmss  
 *
 *            YEAR          YYYY
 *
 *            创制表时最棒不用接受那么些中的时间格式(PHP中时间戳 一九七零-1-1 0:0:0)是一整数
 *            
 *            用整数保存时间  time(卡塔尔(قطر‎;
 *            
 *            int
 *
 *      四、数据字段属性
 *          1. unsigned 能够让空间扩大生龙活虎倍  -128-127   0-255
 *
 *             只好用在数值型字段
 *
 *          2. zerofill
 *
 *             只好用在数值型字段, 前导0
 *
 *             该字段自动应用UNSIGNED
 *
 *           3. AUTO_INCREMENT
 *             只可以是整数, 数据每扩大一条就能自动增1, 字段的值是不充许重复
 *
 *             NULL 0 留空
 *
 *             每一个表都最棒有三个ID字段,设置为机关增涨, auto_increment
 *
 *          4. NULL 和 NOT NULL
 *
 *              暗许是空
 *
 *              NULL 值
 *
 *              未来将那几个表的数目转为PHP程序的数码时, 整数列有NULL  转成0吗  字符串NULL PHP ''  0.00
 *
 *          建议: 在开创表时每一种字段都不要插入NULL
 *
 *        
 *        not null
 *        
 *        5 default
 *
        CREATE TABLE users(
            id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(30) NOT NULL DEFAULT '',
            height DOUBLE(10,2) NOT NULL DEFAULT 0.00,
            age INT NOT NULL DEFAULT 0,
            sex CHAR(4) NOT NULL DEFAULT '男'
            
            
            );
     
 *        
 *
 *
 *
 *
 *
 *      五、创设索引
 *
 *          1. 主键索引
 *              首要效率是显著数据库表里一条特定数据记录的职位
 *
 *              最佳为每一张数据表定义二个主键
 *
 *              四个表只好钦命二个主键
 *
 *              主键的值不可能为空
 *
 *     
 *          2. 独一索引
 *              都可防止范创立重复的值
 *          
 *              种种一表都得以有四个唯一索引
 *
 *              unique
 *
 *
 *
 *          3. 常规索引
 *
 *              最重大的技术
 *
 *              升高数据库的习性
 *
 *              11111111111
 *              22222222222
 *              3333333333333
 *              44444444444444
 *              55555555555
 *              .。。。
 *              101010100101011
 *
 *              索引顺序  5层  软件  PHP   《细说PHP》  书店
 *
 *            能够进步查找的快慢, 减慢数据列上插入,删除, 改过
 *
 *            和表相同是单独的数额对象
 *
 *            可以独立选用
 *
 *            也可在创制表时成立
 *            
 *            index key 是同义词
 *
 *            多列都能够,
 *
 *
 *          4. 全文索引
 *
 *              fulltext类型索引, MyISAM 表类型应用, 只有在varchar char text文本字符串上行使
 *
 *              也能够多少个数据列使用
 *
 *            create table books(
 *                id int,
 *                bookname varchar(30),
 *                price double,
 *                detail text not null,
 *                fulltext(detail, bookname),
 *                index ind(price),
 *                primay key(id));
 *
 *             select * from books where bookname like '%php%';
 *
 *             select bookname, price from books where MATCH(detail) AGAINST('php');
 *
 *            select match(detail) against('php') from books;
 *
 *
 *
 *
 *            );
 *
 *      六、数据表类型及仓库储存地方
 *
 *          MySQL和许多数据库分化, MySQL有二个存款和储蓄引擎概念。
 *
 *          MySQL能够针对分化的仓库储存引擎需要可以选拔最优的存款和储蓄引擎
 *
 *          引擎 数据表类型
 *
 *          我们只学12中的MyISAM 和 InnoDB三个
 *
 *        create table () type InnoDB;
 *        create table () engine InnoDB;
 *
 *        MyISAM 表类型是默许的
 *
 *        选拔MyISAM依然选取InnoDB
 *
 *        注意: 在叁个MySQL库中得以(创造表时)内定差异表类型
 *
 *        MyISAM 表类型
 *
 *            OPTIMIZE TABLE 表名
 *
 *            重申便捷读取操作
 *
 *            也许有弱点:有一对功力不帮忙
 *
 *        InnoDB 表类型
 *
 *            支一些MyISAM所不支技功效
 *
 *            也会有劣势:占用空间大
 *
 *        功能        MyISAM               InnoDB
 *
 *        事务管理        不辅助                 支持
 *        数据行锁定      不帮衬               扶助
 *        外键约束        不协助               扶植
 *        表空间吞噬    相对小               绝对大 最大2倍
 *        全文索引        帮忙                 不支持
 *
 *        
 *
 *
 *        
 *      七、MySQL默许字符集
 *      ACSII
 *      ISO-8859-1/latin1
 *      gb2312-80  不推荐使用
 *      gb13000    不引入应用
 *      GBK        可以用
 *      GB18030    数据扶助还比较少见
 *
 *      UTF -32
 *      USC -2
 *      UTF-16
 *      UTF-8 1--4  刚强推荐
 *
 *      GBK 2字节 UTF8 3字节
 *
 *      name varchar(12)  6个汉字  GBK
 *      name varchar(12)  4个汉字  UTF-8
 *
 *    MySQL服务器, 数据库, 数据表, 字段
 *
 *
 *    数据库中的UTF-8   utf8
 *
 *     MySQL的字符集包罗
 *
 *         
 *         字符集: 是用来定义MySQL存款和储蓄字符串的措施   36
 *
 *         查对准则:是对法则是概念了比较字符串的方法 70
 *    
 *        大器晚成对多的关联: 1 个字集能够对应几个查对法则
 *
 *
 *
 *     顾客端与服务器交互作用时
 *
 *     character_set_client
 *     character_set_connection
 *     character_set_results
 *
 *     set names 字符集  同一时间校订上述多少个的值
 *
 *
 *
 *      八、修改表
 *          Alter table

day03_mySQL_总结。

  • 数据库简单介绍
  • 关系型数据库
  • MySQL安装和行使
  • SQL语言

SQL语言

  • 数据定义语言:DDL(Data Definition Language卡塔尔(英语:State of Qatar)
    • 最主要进行对数据库、表的概念,举例CREATE、ALTE、LANDDROP等操作
  • 数码操作语言:DML(Data Manipulation Language卡塔尔(قطر‎
    • 向数据库中丰硕、删除、修正数据,例如INSERT、UPDATE、DELETE等操作
  • 数量查询语言:DQL(Data Query Language卡塔尔(قطر‎
    • 从数据库中询问数据,首假若SELECT操作
    • 用得最多的操作
  • 数量调节语言:DCL(Data Control Language卡塔尔(قطر‎
    • 用于调整客户对数据库的会见权限,比如GRANT、REVOKE、COMMIT、ROLLBACK等操作
  • 有三个正经的SQL语言(时下风靡版本是SQL:2015),在各家DBMS上通用,但逐风度翩翩DBMS又对行业内部的SQL进行了扩展,学习的时候要介怀

1.创建数据库

数据库概述

黄金年代、数据库简单介绍

MySQL安装、开首使用的注意事项

  • 本子的下载:
    • 下载地址:Download MySQL Community Server:http://dev.mysql.com/downloads/mysql/
    • 有msi(唯有个三十几个人的,六十八个人的对讲机也装那些)和Zip(叁12位和陆拾一人)两种,都是能够的
    • 下载的时候,注意左下角『No thanks, just start my download.』不用注册登入也能下载
  • 设置方式:
    • 杰出安装Typical:只包蕴服务器、命令行客商端、命令行使用程序
    • 定制安装Custom:
    • 完全安装Complete:各样零零件全体装置
  • 配置:
    • 包罗详细安排和标准配置
    • 详见布署:
    • 服务器类型:会潜移暗化到对内部存款和储蓄器、磁盘、进程等的决定
      • 开垦者类型:适用于开垦者,内部存款和储蓄器占用少
      • 服务器类型:特地用提供劳务
      • 专项使用MySQL服务器:该机器特地用来作为MySQL的服务器,能源开拓最大
    • 数据库用处:
      • 多效果与利益数据库:同期接收InnoDB和MyISAM引擎
      • 事务管理数据库:同偶尔间接选举拔InnoDB和MyISAM引擎,但InnoDB能分配到越多的财富
      • 非事务处理数据库:只是用MyISAM引擎
    • 最大并发连接数
      • 决策帮衬(Decision Support卡塔尔国:没有必要大批量的面世连接
      • 联机事务管理(Online Transaction Processing):必要大批量的面世连接,最大500
      • 人为设置(马努al Setting卡塔尔:暗中认可连接数15
    • 暗中认可端口3306
    • 字符集:
      • 正式字符集(Standard Character Set卡塔尔国:帮衬西欧语言
      • 帮助多语言(Best Support For Multilingualism):UTF-8字符集
      • 人工选拔(Manual Selected Default Character Set/Collection卡塔尔(قطر‎:自个儿筛选,GBK;GB2312;UTF-8
  • 安插文件:
    • my.ini:正在利用的构造文件,一定会被读取
    • 别的:my-huge/large/medium/small/template/innodb-heavy-4G.ini等或者会被读取到
  • 缺少根成分
    • 删除:C:Users用户名AppDataRoamingOracleMySQL Notifier下的布署文件

澳门新萄京官方网站 1

概念

(生龙活虎)数据库的腾飞

  • 文件系统:磁盘文件存储数据
  • 率先代数据库:网状模型、档案的次序模型
  • 第二代数据库:关系型数据库、构造化查询语言
  • 新一代数据库:“对象—关系”型数据库

数据库的基本操作

# 命令行下登录到数据库:开始菜单中找到“MySQL 5.7 Command Line Client” 打开
# 输入root用户的密码,即可登录
# 在MySQL workbench中操作更加方便
# MySQL Workbench中建立连接,输入connection name; connection method; hostname port; username password等,下次直接点击这个连接就能连上数据库
# 在建立好的连接上面点击右键,“Copy JDBC Connection String to Clipboard”,可以用在将来的jdbc编程中
# 点击该连接,连接上数据库
SHOW DATABSASES;                           # 查看有哪些数据库。系统默认有information_scheme;mysql;performance_scheme;sys四个;另有sakila和world两个示例库
CREATE DATABASE newDB;                     # 创建一个数据库,名叫newDB
SHOW CREATE DATABASE newDB;                # 查看数据库newDB的信息,可以看到是Character Set UTF-8
ALTER DATABASE newDB DEFAULT CHARACTER SET gbk COLLATE gbk_bin;   # 将newDB的默认字符集改为gbk
DROP DATABASE newDB;                       # 删除newDB这个数据库

2.体现数据库

数据库 (DataBase : DB )

数据库是是固守数据布局来协会、存款和储蓄和管制数据的客栈。—->存储和治本数据的仓库.

(二)文件管理种类的劣势

  • 编写制定应用程序不低价
  • 数据冗余不可幸免
  • 应用程序信任性
  • 不扶持对文本的面世采访
  • 数码间联系弱
  • 不便按客户视图表示数据
  • 无安全调控作而成效

MySQL的数据类型

  • 平头项目:
    • TINYINT:1个字节;0~28澳门新萄京官方网站:MySQL创建数据表,MySQL学习笔记。-1;-27~27-1;
    • SMALLINT:2个字节;0~216-1;-215~215-1;
    • MEDIUMINT:3个字节;0~224-1;-223~223-1;
    • INT:4个字节;0~232-1;-231~231-1;
    • BIGINT:8个字节;0~264-1;-263~263-1;
  • 浮点数与定点数
    • FLOAT:4个字节;
    • DOUBLE:8个子ie;
    • DECopacL(M,D卡塔尔;M 2个字节;M表示总参谋长度,D表示小数点后的长短
  • 日期与时光
    • YEAR:
      • 1个字节;1901~2155;YYYY;0000
      • 多少人字符串或数字:'二零一四'和二零一五皆可;
      • 两位字符串:'16'表示2014;'69'表示2069;'70'表示一九六七;'99'表示1996;'00'表示二〇〇四
      • 两位数字:1代表二零零零;69代表2069;70代表一九六七;99意味着一九九六;0表示0000
    • DATE:
      • 4个字节;1000-01-01~9999-12-03;YYYY-MM-DD;0000-00-00
      • 完全字符串'二零一六-12-16'和'贰零壹伍1216'都意味二零一六年一月10日
      • 年简写字符串:'16-12-16'和'161216'都意味二零一四年十四月十29日
      • 年简写数字:161216和12-12-16,都意味二零一六年十五月十13日
      • 函数与常量:NOW(卡塔尔和CUGL450RENT_DATE都表示最近系统日期
    • TIME:
      • 3个字节;-838:59:59~838:59:59;HH:MM:SS;00-00-00
      • 'D HH:MM:SS':D表示天数,能够是[0,34];比如'3 12:24:36'表示84:24:36
      • 'HHMMSS'或者HHMMSS:295416表示29:54:16
      • 常量与函数:CURAV4RENT_TIME和NOW(卡塔尔(英语:State of Qatar)表示前段时间系统时间
    • DATETIME:8个字节;1000-01-01 00:00:00~9999-12-31 23:59:59;YYYY-MM-DD HH:MM:SS;0~0
    • TIMESTAMP:
      • 4个字节;1970-01-01 00:00:01~2038-01-19 03:14:07;YYYY-MM-DD HH:MM:SS;0~0
      • 与DATETIME相近,只是取值范围更加小
      • CURRENT_TIMESTAMP和NULL和无输入,都意味着近来系统时间
    • 豆蔻年华经插入的多寡违法,那么会把零值插入
  • 字符串与二进制
    • CHAR:
      • 固化长度字符串:CHAPAJERO(4卡塔尔国表示最大可存储4个字节,而且一向占用4个字节
    • VARCHAR
      • 可变长度字符串:VARCHACR-V(4卡塔尔(英语:State of Qatar)表示最大可存款和储蓄4个字节,实际据有实际的字节数 1,实际最大可占用5个字节
    • BINARY
      • 固化长度二进制数据;实际尺寸相差时,用补齐
    • VARBINARY
      • 可变长度二进制数据;
    • BLOB
      • 数据量相当大的二进制数据,大小与下部的TEXT相同
      • 根据二进制编码实行比较和排序;
      • TINYBLOB:
      • BLOB:
      • MEDIUMBLOB:
      • LONGBLOB:
    • TEXT
      • 意味着大文本数据,如随笔评价和剧情等
      • 依据文本形式打开相比和排序
      • TINYTEXT:[0,255]个字节;0.25K
      • TEXT:[0,65535]个字节;64K
      • MEDIUMTEXT:[0,16777215]个字节;16M
      • LONGTEXT:[0,4294967295]个字节;4096M
    • ENUM
      • 枚举类型;定义三个枚举类型:ENUM('枚举值1','枚举值2','枚举值3','枚举值4','枚举值5'卡塔尔国
      • 存入数据库的骨子里是其风姿浪漫枚举值的号子,并非值作者
    • SET
      • 与ENUM相通,表示的是字符串对象;SET('值1','值2','值3','值4','值5'卡塔尔
      • 存入数据库的也是其编号,实际不是字符串本人
    • BIT
      • 代表二进制数据;定义BIT(M卡塔尔(英语:State of Qatar),M表示值的位数,[1,64]
      • 只要长度小于M,那么左边用0补齐

澳门新萄京官方网站 2

数据库管理系统(Database Management System:DBMS)

是刻意用来管理数据库的Computer体系软件。数据库管理种类可以为数据库提供数据的定义、创建、维护、查询和总计等操作功效,并完成对数据完整性、安全性举行支配的效劳。

我们平日说的数据库,正是指的 DBMS : 数据库服务器

(三)数据库管理种类的独到之处

  • 交互作用关联的数量的聚众
  • 相当少的数码冗余
  • 次第与数量交互作用独立
  • 保障数据的新余、可相信
  • 最大限度地保险数据的科学
  • 数码足以并发使用并能同期确定保障生龙活虎致性

约束

  • 封锁:约束就是二个原则,表示被封锁的数目应当满足节制标准
  • 何以有限制:因为为了世袭的各样总括和操作,数据库中的数据不可能是无规律的,要顺应一定的法规
  • 广差不离束:
    • 主键节制:P奔驰G级IMAGL450Y KEY
    • 外键约束:FOREIGN KEY
    • 非空约束:NOT NULL
    • 唯大器晚成性节制:UNIQUE
    • 私下认可值节制:DEFAULT
  • 主键限制P大切诺基IMALANDY KEY
    • 用主键限定的列的多少年足球以唯意气风发的表示这一条记下(那生机勃勃行数据卡塔尔(英语:State of Qatar)
    • 主键限定的数目不能够重新,无法为空,每张表只好有叁个主键约束
    • 是不是可接纳,得看现实的数据库
    • 单字段主键:
      • 主键约束在一个字段上,那几个字段的值唯生龙活虎标志一条记下
    • 多字段主键:
      • 主键约束在多少个字段上,这些字的的值拼接起来唯朝气蓬勃标记一条记下
  • 外键约束FOREIGN KEY
  • 非空限定
    • 非空约束的字段的值不能够为空,必需填写
  • 唯后生可畏节制UNIQUE
    • 唯朝气蓬勃约束的字读的值无法重新
  • 默许节制DEFAULT
    • 默许节制的字段,若无加塞儿数据,那么会自动插入私下认可值

3.利用数据库

db 技艺进步

档次数据库和网状数据库能力等第: 使用指针来表示数据里面包车型大巴联系

关全面据库才能等第: 杰出的里程碑阶段。代表 DBMS:Oracle、DB2、MySQL、SQL Server、SyBase 等。

后关全面据库技艺等级: 关系型数据仓库储存在数据模型,质量,拓宽伸缩性的劣点,现身了:

ORubiconDBMS:面向对象数据库手艺。 NoSQL :布局化数据库技能。

乘势大数指标穿梭发展,非关系型的数据库现在成了多个最棒热点的新领域,非关周详据库成品的提升非常急速,优质的 NoSQL 数据库.

广大的 NoSQL 数据库分为四大类

键值存款和储蓄数据库:Oracle BDB,Redis,BeansDB 列式储数数据库:HBase,Cassandra,Riak 文档型数据库:MongoDB,CouchDB 图形数据库:Neo4J,InfoGrid,Infinite Graph

(四)数据库管理种类的基本概念

表的基本操作

USE newDB;                                 # 进入newDB数据库,后续的操作都在这个数据库中

CREATE TABLE teacher(                      # 创建一个名为teacher的表
    tea_id TINYINT PRIMARY KEY,            # 教师编码,主键约束,唯一且非空
    tea_ID_num CHAR(18),                   # 身份证号
    tea_name VARCHAR(10),                  # 姓名
    tea_gender ENUM('男','女'),             # 性别
    tea_birth DATE                         # 出生日期
);

SHOW TABLES;                               # 查看这个数据库下的表

SHOW CREATE TABLE teacher;                 # 查看teacher这个表

DESCRIBE teacher;                          # 查看teacher这个表的字段信息

DESC teacher;                              # DESCRIBE的简写

ALTER TABLE teacher RENAME TO tea;         # 修改表名:teacher--->tea

DESC tea;

ALTER TABLE tea CHANGE tea_gender tea_sex ENUM('男','女');     # 修改字段名:tea_gender--->tea_sex,数据类型为ENUM('男','女'),注意数据类型不可省略,即使一样也不可省略

ALTER TABLE tea MODIFY tea_sex ENUM('男','女','其他');         # 修改数据类型:tea_sex的新数据类型为ENUM('男','女','其他')

ALTER TABLE tea DROP tea_birth;                              # 删除字段:删除tea_birth字段

ALTER TABLE tea ADD tea_birth DATE NOT NULL FIRST;           # 添加字段:添加tea_birth字段,非空,位置为first,就是第一个字段,(也可以是是AFTER 字段名),

ALTER TABLE tea MODIFY tea_birth DATE AFTER tea_sex;         # 修改字段位置:修改tea表下的tea_birth字段的位置为tea_sex之后

DROP TABLE tea;                                              # 删除数据表。特别小心,表跟表之间往往存在关联

CREATE TABLE teacher(                                        # 新建一张表
    tea_id TINYINT PRIMARY KEY AUTO_INCREMENT,  # tea_id字段为主键,且自增(AUTO_INCREMENT,适合于任何整数类型),即每添加一条记录,这个字段的值就增加1
    tea_ID_num CHAR(18),
    tea_name VARCHAR(10),
    tea_gender ENUM('男','女','其他'),
    tea_birth DATE
);

CREATE TABLE teacher(
    tea_id TINYINT,
    tea_ID_num CHAR(18),
    tea_name VARCHAR(10),
    tea_gender ENUM('男','女','其他'),
    tea_birth DATE,
    PRIMARY KEY(tea_id,tea_ID_num)                # 设置多字段主键
);

澳门新萄京官方网站 3

周围数据库解析

数据库系统 所属公司 特点
Oracle Oracle 运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域。
DB2 IBM 速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域。
SQL Server MS 全面,效率高,界面友好,操作容易,但是不跨平台。适用于于中小型企业领域。
MySQL AB -> SUN -> Oracle 开源,体积小,速度快。适用于于中小型企业领域。
(风流浪漫)术语定义
  • 数据库:数据的集中,它以一定的集体方式存于存款和储蓄媒介物上
  • DBMS(数据库管理体系):管理数据库的系统软件,它达成数据库系统的种种作用,是数据库系统的基本
  • DBA(数据库助理馆员):肩负数据库的宏图、设计、协和、维护和管理等工作
  • 应用程序:指以数据库为底工的应用程序

增加、更新、删除数据

CREATE TABLE teacher(                        # 创建个teacher表
    tea_id TINYINT,
    tea_ID_num CHAR(18),
    tea_name VARCHAR(10),
    tea_gender ENUM('男','女','其他'),
    tea_birth DATE,
    PRIMARY KEY(tea_id)                       # tea_id为主键
);

INSERT INTO teacher(tea_id,tea_ID_num,tea_birth,tea_name,tea_gender)
            values(1,'102315198102215425','1981-02-21','王洪','女');  # 添加一条记录,值的顺序跟字段名的顺序匹配,字段名的顺序跟表里面的字段顺序无关

INSERT INTO teacher VALUES(2,'102315198503136216','李刚','男','1985-03-13');  # 添加一条记录:省略字段名,值的顺序跟表中字段的顺序一致

INSERT INTO teacher(tea_id,tea_name,tea_gender)
            VALUES (3,'张华','男');                       # 添加一条记录,只给部分字段添加,被忽略的字段,不能有非空约束或者得有默认值

INSERT INTO teacher VALUES(4,'102315197601213162','王和','女','1976-01-21'),
                          (5,'102315198205168435','阿Q','男','1982-05-16');
                          # 一次添加两条记录,省略了字段名

INSERT INTO teacher 
        SET tea_id=6,                   # 字段=值的形式
            tea_name='李飞',
            tea_gender='男';

SELECT * FROM teacher;                  # 查询teacher中的所有的记录

UPDATE teacher                          # 更新一条信息
    SET tea_ID_num='102315197001207511',tea_birth='19700120' 
    WHERE tea_id=3;                     # 特别注意,不能少了WHREE字句

UPDATE teacher
    SET tea_gender=null                 # 删除一条记录某个字段的值,可将其UPDATE为null
    WHERE tea_id=1;

DELETE FROM teacher WHERE tea_id=1;     # 删除符合特定条件的记录:使用DELETE的时候,对条件的限定千万不能少,否则可能会删除整张表的记录

UPDATE teacher
    SET tea_gender='其他';              # 没有限定条件,会导致tea_teacher的值全部改为'其他'

DELETE FROM teacher;                    # 删除teacher表的所有记录

TRUNCATE TABLE teacher;                 # 清空teacher表

4.查看景况

SQL

构造化查询语言 (Structured Query Language卡塔尔国。是关系型数据库标准语言。

(二)DBMS的基本作用
  • 数量定义
  • 多少管理:增、删、改、查
  • 数量安全
  • 数据备份

DELETE与TRUNCATE的区别

  • 双面都能将全部表的数量总体剔除
  • DELETE是DML语句;TRUNCATE是DDL语句
  • DELETE前面平日要跟WHERE字句来约束要刨除的记录,TRUNCATE则无法跟WHERE字句,而是删除整张表的笔录
  • 对于有AUTO_INCREMENT节制的字段,DELETE后,从原本的笔录的值起头自增;TRUNCATE则重复从1从头

澳门新萄京官方网站 4

特点

简短,灵活,作用强盛。

(三)数据库系统的布局
  • 单机布局
  • 特大型主机/终端结构
  • 主从式布局(C/S卡塔尔国
  • 布满式布局

简易的单表查询

SELECT tea_name,tea_gender FROM teacher;                 # 查询2个字段

SELECT tea_id,
       tea_ID_num,
       tea_birth,
       tea_name,
       tea_gender FROM teacher;                          # 查询5个字段,结果按照这个顺序排列

SELECT * FROM teacher;                                   # 用通配符查询所有字段。注意效率较低

SELECT * FROM teacher WHERE tea_id>3;                    # 单条件查询所有字段

SELECT * FROM teacher WHERE tea_id BETWEEN 2 AND 6;      # BETWEEN X AND Y。[X,Y]且X<Y

SELECT * FROM teacher WHERE tea_id NOT BETWEEN 2 AND 5;  # 对BETWEEN AND 取反

SELECT * FROM teacher WHERE tea_id IN (1,3,4);           # IN查询,相等匹配多个值

SELECT * FROM teacher WHERE tea_id_num IS NULL;          # 匹配NULL

SELECT * FROM teacher WHERE tea_id_num IS NOT NULL;      # 匹配NOT NULL

SELECT DISTINCT tea_gender FROM teacher;                 # 查询结果去重

SELECT DISTINCT tea_name,tea_gender FROM teacher;        # DISTINCT可用于多个字段

SELECT * FROM teacher WHERE tea_name LIKE '王_';         # LIKE模煳匹配,下划线匹配单个字符,不包括空字符串,用转义

SELECT * FROM teacher WHERE tea_ID_num LIKE '102315197%';  # %匹配若干个字符,包括空字符串,用转义

SELECT * FROM teacher WHERE tea_id>2 AND tea_id<6;       # AND连接多个条件,交集

SELECT * FROM teacher WHERE tea_id>3 OR tea_birth>'1982-01-01';  # OR连接两个条件,并集

SELECT * FROM teacher WHERE tea_name LIKE '李_' AND tea_gender='男';

SELECT * FROM teacher WHERE 
        tea_id<5 AND 
        tea_name LIKE '王_' AND 
        tea_birth>'1980-01-01';                          # AND连接3个条件

SELECT * FROM teacher WHERE 
        tea_name LIKE '李_' AND tea_birth>'1980-01-01'   # AND 与 OR联用,AND优先级高于OR
        OR 
        tea_name LIKE '王_' AND tea_birth<'1980-01-01';

5.创建表

分类

包含 6 个部分

二、关系型数据库

澳门新萄京官方网站 5

1. 多少查询语言(DQL)

其语句,也称为“数据检索语句”,用以从表中拿到多少,显明数据怎么样在应用程序给出。保留字 SELECT 是 DQL(也是兼具 SQL)用得最多的动词,其余 DQL 常用的保留字有 WHERE,O奥迪Q7DE福睿斯 BY,GROUP BY 和 HAVING。这么些 DQL 保留字常与此外类型的 SQL 语句一齐行使。

(后生可畏)基本概念

  • 涉及:关系就是二维表,表中的行、列次序并不首要
  • 行 (row卡塔尔(英语:State of Qatar):表中的每生龙活虎行,又称为一条记下
  • 列 (column卡塔尔(英语:State of Qatar):表中的每一列,又叫做属性、字段
  • 主键 (Primary key卡塔尔国:用于惟意气风发明确一个记下的字段
  • 域 (domain卡塔尔国:属性的取值范围

6.显示表

2. 数量操作语言(DML)

其语句包罗动词 INSERT,UPDATE 和 DELETE。它们各自用于加多,校正和删除表中的行。也称得上动作查询语言。

(二)主流关系型数据库

MySQL, MariaDB, PostgreSQL, Oracle, MSSQL, DB2

澳门新萄京官方网站 6

3. 事务管理语言(TPL)

它的话语能作保被 DML 语句影响的表的全数行及时得以更新。TPL 语句包括BEGIN TRANSACTION,COMMIT 和 ROLLBACK。

(三)事务: transaction

  • 概念:被看成全体对待的几何个操作
  • 事务的表征:ACID
    A:原子性,一个职业不可分割。
    当三个事情进行进程中冒出了暂停,下一回始发本事务时会施行回滚(rollback卡塔尔(英语:State of Qatar)操作恢复生机至作业实践前的意况;当二个作业完结后,会进行提交(commit卡塔尔国操作,从此不可能再苏醒至作业施行前之处
    C:风流洒脱致性,数据保持生机勃勃致
    I:隔开性,使用锁机制制止多顾客同一时候改正某数码,也许现身死锁
    D:长久性,提交后的退换是不足废除的,而还未有提交的数量是脏数据

7.展现表布局

4. 数目调节语言(DCL)

它的言辞通过 GRANT 或 REVOKE 获得认同,明确单个客商和客商组对数据库对象的拜谒。某个 库罗德DBMS 可用 GRANT 或 REVOKE 调整对表单个列的探望。

(四)实体—联系模型(E-冠道模型)

  • 实体(Entity卡塔尔国:客观存在并能够互相区分的客观事物或抽象事件

    • 在E-XC60图中用矩形框表示实体,把实体名写在框内
    • 质量:实体所独具的特色或品质
  • 联络(Relationship卡塔尔(قطر‎:数据里面包车型客车涉及集结,是客观存在的应用语义链

    • 实行业内部部的关系:指组成实体的各属性之间的关系。
    • 实业之间的联络:指分裂实体之间联络。
    • 实业之间的牵连用菱形框表示
  • 实体之间联系的品种:

    • 大器晚成对大器晚成联系 (1:1卡塔尔(قطر‎
    • 风度翩翩对多联系 (1:n卡塔尔国
    • 多对多联系 (m:n卡塔尔国

澳门新萄京官方网站 7

5. 数额定义语言(DDL)

其语句满含动词 CREATE 和 DROP。在数据库中开创新表或删除表(CREAT TABLE 或 DROP TABLE);为表参预索引等。DDL 包涵过多与人口据库目录中拿走多稀少关的保留字。它也是动作查询的豆蔻梢头部分。

(五)数据的三要素

  • 数据构造,蕴涵两类

    • 与数据类型、内容、性质有关的靶子
    • 与数码里面联系有关的靶子
  • 多少的操作

    • 数码提取:在数量集结中领取感兴趣的剧情(SELECT卡塔尔
    • 数量更新:更动数据库中的数据(INSERT、DELETE、UPDATE卡塔尔
  • 数量的封锁规范:是风度翩翩组完整性法则的集合

    • 实体(行)完整性 (Entity integrity)
    • 域(列)完整性 (Domain Integrity)
    • 参考完整性 (Referential Integrity卡塔尔(قطر‎

8.增多数额

6. 指南针调控语言(CCL)

它的口舌,像 DECLARE CUTucsonSO奥迪Q7,FETCH INTO 和 UPDATE WHERE CU揽胜极光RENT 用于对一个或多少个表单独行的操作。

(六)范式(NF)

  • 概念:设计关全面据库时,为设计出合理的关系型数据库而服从的行业内部必要
    各种范式呈递次规范,越高的范式数据库冗余越小

  • 时下有各种范式,设计关系型数据库时平常需满意至第三范式的供给

  • 1NF:无重复的列,每一列都以不可分割的中坚数据项,同一列中不可能有四个值,即实体中的某个属性不能够有三个值大概不能够有双重的品质。除去同类型的字段,正是无重复的列

  • 2NF:属性完全信任于主键,第二范式必得先满意第意气风发范式,要求表中的各种行必得能够被唯风流罗曼蒂克地有别于。平日为表加上八个列,以存款和储蓄各样实例的唯后生可畏标志PK。非PK的字段供授予任何PK有一向相关性

  • 3NF:属性不相信任于任何非主属性,满意第三范式必需先满意第二范式。第三范式必要多个数据库表中不分包已在任何表中满含的非主关键字新闻,非PK的字段间不能够有附属关系

  • 不时出于品质或此外出色供给的设想,必要积极违反范式

澳门新萄京官方网站 8

挥洒法则

在 MySQL 数据库中,SQL 语句大小写不灵活 SQL 语句可单行或多宋体写 在 SQL 语句中,关键字无法跨多行或缩写 为了增加可读性,日常主要字大写,别的小写 空格和缩进使程序易读

(七)SQL概念

9.查看数据

咱俩说 MySQL 是生龙活虎种关系型数据库。关周全据库最主要的定义就是表. 表具有定位的列数和专擅的行数,在数学上称作“关系”。

二维表是同类实体的各样质量的集结,种种实体对应于表中的一行,在事关中称之为元组,约等于日常的一条记下;

表中的列表示属性,称为 Field,相当于普通记录中的贰个数额项,也叫列、字段。

(1)基本概念:
  • SQL(Structure Query Language卡塔尔国:布局化查询语言

  • 运用编制程序接口
    ODBC:Open Database Connectivity
    JDBC:Java Data Base Connectivity

  • 目录:将表中的多少个或七个字段中的数据复制大器晚成份另存,而且此些要求按一定程序排序存款和储蓄

  • 涉嫌运算:
    接纳:筛选出切合条件的行
    阴影:筛选出须要的字段
    接二连三:表间字段的涉嫌

澳门新萄京官方网站 9

MySQL

(2)约束
  • 自律(constraint卡塔尔(قطر‎:表中的多少要根据的限量

  • 主键:一个或多少个字段的构成(复合主键),填入的数目必需能在本表中头一无二标记本行;必得提供数据,即NOT NULL,二个表只可以存在贰个

  • 惟黄金时代键:三个或三个字段的三结合,填入的数目必需能在本表中必定要经过的道路标志本行;允许为NULL,一个表可以存在八个

  • 外键:四个表中的某字段可填写的数量在于另二个表的主键或唯意气风发键已某个数据

  • 反省:字段值在自然范围内

 

启航和行使

(3)数据模型
  • 数据抽象
    • 物理层:决定数据的存款和储蓄格式,即宝马X3DBMS在磁盘上如何组织文件
    • 逻辑层:描述存款和储蓄什么数据,甚至数据间存在什么样的涉嫌
    • 视图层:描述DB中的部分数据,是伪造的表
  • 涉嫌模型的归类
    • 事关模型
    • 依据对象的涉及模型
    • 半结构化的关系模型:XML数据

拉开服务

开发数据库连接在此以前:一定要作保 MySQL 服务已经张开了.

翻开多个劳务

net start MySQL(window 服务名)

关门三个服务

net stop MySQL

翻开已经张开的劳动, 运转services.msc

三、MySQL安装和应用

连接库

(一)MySQL和MariaDB

  • MariaDB是MySQL的支行,软件应用与MySQL雷同
  • yum安装:CentOS 6 暗中认可安装MySQL,CentOS 7暗许安装MariaDB

方式1

跻身 MySQL, 在命令行中输入密码

(1)MariaDB的特性
  • 单进程,多线程
  • 插件式存款和储蓄引擎:
    • 仓库储存引擎有多样落实版本,效率和特色大概均略不一样,客商可依据要求灵活接受
    • 重视囤积引擎:MyISAM和InnoDB,当前大多施用的是InnoDB(扶植专门的学业成效)

方式2

在指令行中

mysql -u账户 -p密码 -h数据库服务器安装的主机 -P数据库端口

比如:

mysql -uroot -padmin -h127.0.0.1 -P3306

若总是的数据库服务器在本机上,何况端口是3306。则足以简写

mysql -uroot -padmin
(2)MariaDB的次第组成:C/S布局

Client:mysql, mysqldump, mysqladmin
Server:mysqld_safe, mysqld, mysqld_multi

操作库

创建库

CREATE DATABASE jdbcdemo;

查看库

SHOW DATABASES;

使用库

USE jdbcdemo;

删除库

DROP DATABASE jdbcdemo;
(3)服务器监听的三种socket地址
  • ip socket:监听在tcp的3306端口,帮助远程通讯
  • unix sock:监听在sock文件上(顾客机路线:/tmp/mysql.sock, 服务器路线:/var/lib/mysql/mysql.sock卡塔尔(قطر‎,仅帮衬本机通讯
    当本机通讯时(server: localhost, 127.0.0.1卡塔尔,自动使用unix sock

数据库引擎

MyISAM:具有较高的插入,查询速度,但不帮助工作,不援助外键。 InnoDB: 帮衬职业,扶植外键,帮忙行级锁定,品质很低。

持有的蒸内燃机

(二)MariaDB安装

MySQL 列常用场目

(1)安装方式
  • 源代码:编写翻译安装

  • 二进制格式的前后相继包:张开至特定路线,并由此简要陈设后就能够使用

  • 前后相继包微处理器管理的程序包
    品种官方生成yum货仓配置新闻的地点:https://downloads.mariadb.org/mariadb/repositories/

整数

MySQL 列类型 Java 数据类型
INT int/Integer
BIGINT long/Long

 

 

MySQL 以八个可选的显得上涨的幅度提示器的花样对 SQL 标准进行扩展,那样当从数据库检索二个值时,能够把这么些值加长到钦点的长度。
例如说,内定几个字段的品类为 INT(6卡塔尔(英语:State of Qatar),就足以确定保证所蕴涵数字少于 6 个的值从数据库中查寻找来时亦可活动地用空格填充。
亟需静心的是,使用贰个宽度提示器不会影响字段的尺寸和它能够积攒的值的界定。平常不要钦赐位宽。

(2)yum安装和安排MariaDB
  • 第1步,安装和开启服务
yum groupinstall mariadb mariadb-client
systemctl start mariadb
systemctl enable mariadb
  • 第2步,提升安全性

    • 安装并运转服务后,发现输入mysql命令后能够不需输入密码直接踏向系统
    • 执行select user();命令,发现以root@localhost登录

    澳门新萄京官方网站 10

    • 执行select user,host,password from mysql.user;指令,开采脚下的持有顾客都未曾安装密码,相同的时间允许无名登入数据库,存在一点都不小安全祸患

    澳门新萄京官方网站 11

    • 奉行脚本mysql_secure_installation修正数据库安全设置

      • 安装数据库管理员root口令
      • 幸免root远程登入
      • 去除anonymous客户帐号
      • 删除test数据库
    • 重复尝试登陆时,发现早就力不胜任佚名登录了,实践mysql -u root -p以root@localhost身份输入争取密码后打响登入

    澳门新萄京官方网站 12

  • 第3步,编辑配置文件/etc/my.cnf
vim /etc/my.cnf
skip-networking=1     //[mysqld]下添加选项,跳过反向解析过程加速启动

小数类型

FLOAT[(s,p)]:DOUBLE[(s,p)] :小数类型,可贮存实型和整型 ,精度 (p卡塔尔(قطر‎和节制 (s卡塔尔(英语:State of Qatar) , 举个例子:

money double(5,2卡塔尔(英语:State of Qatar): 整数和小数生机勃勃共占5为.当中型Mini数占2位.都相当不够标准。

一定数据类型: DEINSPIREL,高精度类型,金额货币优先筛选。

MySQL 列类型 Java 数据类型
FLOAT float/Float
DOUBLE double/Double
DECIMAL BigDecimal
(3)通用二进制格式安装玛丽亚DB
  • 第1步,创立客商并制订数据库数据的存放目录
    useradd -r -m -d /app/dbdata -s /sbin/nologin mysql

  • 第2步,打算二进制造进度序,供给必需解压到/usr/local目录下并取名叫mysql

tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
ln -sv mariadb-10.2.8-linux-x86_64/ mysql     //创建软链接便于切换版本
chown -R root:mysql  /usr/local/mysql/
  • 第3步,思考布置文件
    布局文件查找次序:后边覆盖前边的安顿文件
    /etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
mkdir /etc/mysql/
cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf     //复制模板文件
vim /etc/mysql/my.cnf         //[mysqld]下添加三个选项
datadir = /app/dbdata         //数据库数据存放目录
innodb_file_per_table= on     //innodb引擎下创建的每个表都是一个文件
skip_name_resolve= on         //禁止主机名解析
  • 第4步,创制数据库文件
cd /usr/local/mysql
./scripts/mysql_install_db --datadir=/app/dbdata --user=mysql
  • 第5步,考虑日志文件
//CentOS 7下的操作
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
setfacl -R -m  u:mysql:rwx /var/log/mariadb/mariadb.log

//CentOS 6下的操作
touch /var/log/mysqld.log
setfacl -R -m u:mysql:rwx /var/log/mysqld.log
  • 第6步,计划服务脚本,并运维服务
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start 
  • 第7步,创立情形变量
vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH

source /etc/profile.d/mysql.sh 
  • 第8步,安全最初化
    执行脚本:mysql_secure_installation

字符类型

char(size卡塔尔(قطر‎ : 定长字符,0 - 255 字节,size 指 N 个字符数,若插入字符数超越设定长度,会被截取并警示。 varchar(size卡塔尔 : 变长字符,0 - 255 字节,从 MySQL5 初阶扶持 655叁十四个字节,若插入字符数超越设定长度,会被截取并警报。

诚如存款和储蓄多量的字符串,譬喻文章的纯文本,能够选拔 TEXT 类别项目。

细心:在 MySQL 中,字符使用单引号引起来。 也就是 Java 中字符串 (String, StringBuilder / StringBuffer卡塔尔(قطر‎

(三)MariaDB的使用

时刻项目

日期和时间项目为 DATETIME、DATE、TIMESTAMP、TIME和YEA福特Explorer。

潜心:在 MySQL 中,日期时间值使用单引号引起来。 也正是 Java 中 Date,Calender。

(1)客商端工具
  • mysql:命令行交互作用式顾客端工具

  • mysql选项:
    -u:用户名,默认为root
    -h:服务器主机,默以为localhost
    -p:建议利用顾客密码,默感觉空密码

  • mysql客户账号由两某个构成:USERNAME@HOST
    HOST用于约束此客户可由此什么样远程主机连接mysql服务
    支撑接受通配符:

    • % 相称大肆长度的恣意字符,如:
      172.16.0.0/16172.16.%.%
    • _ 匹配任意单个字符

二进制类型

BINA奥迪Q7Y、VARBINAKoleosY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB:寄放图形、声音和印象,二进制对象,0

  • 4GB。
    付出中,我们经常存款和储蓄二进制文件保留路线。

BIT:大家平日存款和储蓄0或1,存款和储蓄是Java中的boolean/Boolean类型的值。

(2)常用命令
  • 运行mysql指令:私下认可空密码登陆
mysql>select user();     //查看当前用户
mysql>use mysql;         //选择进入名为mysql的数据库
mysql>SELECT user,host,password FROM user;
//从当前数据库名为user的表中查询每行中user,host,password列的数据
  • 延安伊始化
    /usr/local/mysql/bin/mysql_secure_installation

  • 报到系统:mysql -uroot -p
    -u 内定客商名 -p 钦赐输入密码(间接跟密码时与p之间无空格)

  • 顾客端命令:本地施行
    mysql> help:查询mysql客商端命令
    种种命令都完好无损情势和简写格式
    mysql> status 或s

  • 服务端命令:通过mysql左券发往服务器奉行并收复结果
    各种命令都不得不有收尾符号,私下认可为分号
    select version();

操作表

四、SQL语言

表的命名

若在建表中使用到了数据库的首要性字.譬如新建一张订单表: (order卡塔尔(英语:State of Qatar),不过「order」是数据库中的关键字(排序使用卡塔尔(英语:State of Qatar).那么尽管用t_order, 若必必要选取应用「order」这么些单词.这时使用反引号「`」括起来,`order`.

貌似,起表名字为:t_名字。

(豆蔻梢头)SQL语言简要介绍

表的封锁

非空约束:NOT NULL,不容许某列的原委为空。 设置列的暗许值:DEFAULT。 唯豆蔻梢头节制:UNIQUE,在该表中,该列的内容必须唯风流洒脱。 主键限定:PWranglerIMACRUISERY KEY, 非空且唯生龙活虎。 主键自拉长:AUTO_INCREMENT,从 1 开端,步长为 1。 外键约束:FOREIGN KEY,A 表中的外键列. A 表中的外键列的值必需参照于 B 表中的某一列 (B 表主键卡塔尔(قطر‎

(1)SQL语句构成

由珍视词(Keyword卡塔尔国组成子句(Clause卡塔尔国,多条子句组成一条语句

SELECT *           //SELECT子句,SELECT为关键词
FROM products      //FROM子句,FROM为关键词
WHERE price>400    //WHERE子句,WHERE为关键词

主键设计

单字段主键,单列作为主键,提出接受。
复合主键,使用多列当做主键,不提出。

主键分为二种:

道理当然是那样的主键:使用有职业含义的列作为主键(不推荐使用卡塔尔; 代理主键:使用未有事情含义的列作为主键(推荐使用卡塔尔(قطر‎;

(2)SQL语句分类
  • DDL: Data Defination Language 数据定义语言
    CREATE, DROP, ALTER
  • DML: Data Manipulation Language 数据操作语言
    INSERT, DELETE, UPDATE
  • DCL:Data Control Language 数据调控语言
    GRANT, REVOKE
  • DQL:Data Query Language 数据查询语言
    SELECT

操作

创建表

CREATE TABLE  t_student(
    id      INT(10),
    name    VARCHAR(10),
    email   VARCHAR(20),
    age     INT(10)
  );

查看表构造

DESC table_name;

查看表的详尽定义

SHOW CREATE TABLE table_name;

删除表

DROP TABLE table_name;
(3)SQL语言职业
  • 大小写:
    • 要害词不区分朗朗上口写(提议用小写)
    • 但字符串常量区分轻重缓急写
  • 跨行:
    • 可单行或多石籀文写,每条语句以";"结尾
    • 最首要词不能够跨多行或简写
    • 用空格和缩进来增进语句的可读性
    • 子句经常坐落于独立行,便于编辑,提升可读性
  • 注释:
    • SQL标准:
      /*注释内容*/ 多行注释
      -- 注释内容 单行注释,注意有空格
    • MySQL注释:
      #注释内容

操作数据 (DML卡塔尔(قطر‎

(4)数据库对象的命名准则
  • 总得以字母早先
  • 可回顾数字和多少个特殊字符(# _ $,不提议使用)
  • 不要选取MySQL的保留字
  • 同四个表下的靶子无法同名

布置语句

一遍插入操作只插入风度翩翩行

陈设完整数据记录

INSERT INTO 表名(列名1, 列名2, 列名3....) VALUES(值1, 值2, 值3....)

安顿数据记录风度翩翩部分

INSERT INTO 表名(列名1, 列名2, 列名3....) VALUES(值1, null, 值3....)

布置多条数据记录(MySQL特有)

INSERT INTO 表名(列名1, 列名2, 列名3....) VALUES(值1, 值2, 值3....),(值11, 值22, 值33....),(值111, 值222, 值333....)

插入查询结果(测量试验用)

INSERT INTO 表名(列名1, 列名2, 列名3....)  SELECT  列名1, 列名2, 列名3.... FROM  表名2
(5)数据库操作
  • 创造数据库:CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME';

  • 去除数据库:DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

  • 翻开支持具有字符集:SHOW CHARACTER SET;

  • 查阅扶持具备排序准绳:SHOW COLLATION;

  • 得到命令使用扶植:HELP KEYWORD;

  • 查阅数据库列表: SHOW DATABASES;

修正语句

UPDATE   表名
SET 要修改的列 1= 改后的值 1  [, 列2= 值2] …
[WHERE  condition];

万一简单了 where 子句,则全表的数目都会被涂改。注意 : 未有FROM

(二)SQL语言应用

删除语句

DELETE  FROM    表名
[WHERE  condition];

要是轻巧了 where 子句,则全表的数码都会被改变

清空表: 删除表的多寡DELETE 删减表: 将表回复到起来状态: TRUNCATE

(1)创立、删除表操作
  • 语法:

    • 创建表:CREATE TABLE [IF NOT EXISTS] 'tbl_name' (col1 type1 修饰符, col2 type2 修饰符, ...)
    • 删除表:DROP TABLE [IF EXISTS] tbl_name;
  • 修饰符

    • NULL:数据列可含蓄NULL值
    • NOT NULL:数据列分歧意包涵NULL值
    • DEFAULT:默认值
    • PRIMARY KEY:主键
    • UNIQUE KEY:唯一键
    • CHARACTERAV4 SET name:钦定三个字符集
    • AUTO_INCREMENT:自动依次增加,适用于整数类型
    • UNSIGNED:无符号,适用于数值类型
  • 其余与表相关的操作

    • 翻看全体的蒸汽轮机:SHOW ENGINES;
    • 查看表:SHOW TABLES [FROM db_name];
    • 查看表布局:DESC [db_name.]tbl_name;
    • 查看表创制命令:SHOW CREATE TABLE tbl_name;
    • 查看表状态:SHOW TABLE STATUS LIKE 'tbl_name'G G竖直呈现

查询数据 (DQL卡塔尔

(2)数据类型
  • mysql扶助的数据类型:

    • 数值类型
    • 日子/时间档案的次序
    • 字符串(字符)类型
  • 选用准确的数据类型对于得到高质量至关心器重要,三大规范:

    • 更加小的家常更加好,尽量采纳可科学存款和储蓄数据的十分小数据类型
    • 简短就好,不难数据类型的操作日常供给越来越少的CPU周期
    • 尽量防止NULL,包蕴为NULL的列,对MySQL更难优化
  • 整型

    • tinyint(m卡塔尔:1个字节范围
    • smallint(m卡塔尔(قطر‎:2个字节范围
    • mediumint(m卡塔尔(英语:State of Qatar):3个字节范围
    • int(m卡塔尔:4个字节范围
    • bigint(m卡塔尔国:8个字节范围
    • 加unsigned后缀代表正整数,取值范围:0至原范围最大值*2
    • m指select查询结果显示宽度,不影响其实取值
  • 浮点型,近似值

    • float(m,d卡塔尔国:单精度浮点型8位精度(4字节卡塔尔(قطر‎ m:总位数,d:小数位位数
    • double(m,d卡塔尔:双精度浮点型13位精度(8字节卡塔尔(قطر‎m:总位数,d:小数位位数
  • 定点型,精确值

    • decimal(m,d卡塔尔(英语:State of Qatar):m为总位数,d为小数位位数
    • 侵占空间大、计算消耗大,尽量只在标准总结时接纳
  • 字符串型

    • char(n卡塔尔(英语:State of Qatar)牢固长度,最多2伍17个字符
    • varchar(n卡塔尔(قطر‎可变长度,最多655三10个字符
    • tinytext可变长度,最多2五十一个字符
    • text可变长度,最多655叁拾伍个字符
    • mediumtext 可变长度,最多2的二十回方-1个字符
    • longtext可变长度,最多2的33次方-1个字符
    • BINAPAJEROY(M卡塔尔(英语:State of Qatar) 固定长度,可存二进制或字符,允许长度为0-M字节,
    • VARBINAEvoqueY(M卡塔尔 可变长度,可存二进制或字符,允许长度为0-M字节
    • 内建品种:ENUM枚举, SET集结
  • 二进制数据:BLOB

    • BLOB和text存款和储蓄情势分化,TEXT以文件方式存款和储蓄,日文存款和储蓄区分轻重缓急写,而Blob是以二进制格局存储,不分大小写
    • BLOB存款和储蓄的数量只可以完全读出
    • TEXT能够内定字符集,BLOB不用钦命字符集
  • 日期时间项目

    • date:日期'2008-12-2'
    • time:时间'12:25:36'
    • datetime:日期时间'二〇〇九-12-2 22:06:44'
    • timestamp:自动积存记录修改时间
      字段里的年月数额会随别的字段修正的时候自动刷新,那么些数据类型的字段能够寄存那条记下最终被涂改的时间
    • YEAR(2), YEAR(4):年份
  • 试验1:创造数据库hellodb并按下表设置构建第二个表student

列名 id name age gender
含义 学号 姓名 年龄 性别
类型 数值 字符串 数值 字符串
范围 0-200 不超过20个字符 0-100 1个字符
其他 主键 不允许为空 默认为"m"
create database hellodb;
use hellodb;
create table student (id tinyint unsigned primary key, name varchar(20) not null, age tinyint unsigned, gender char(1) default "m");
desc student;

澳门新萄京官方网站 13

  • 试验2:在hellodb数据库中开创表student1,字段设置与尝试1基本相近,唯风姿洒脱的差别是:id和name构成复合主键
use hellodb;
create table student1 (id tinyint unsigned, name varchar(20) not null, age tinyint unsigned, gender char(1) default "m", primary key(id, name));
desc student1;

澳门新萄京官方网站 14

相像查询

语法

SELECT  [列名1, 列名2, 列名3....]  FROM  表名  [WHERE   条件1   条件2   ....]

说明

SELECT 选用查询列表 FROM 提供数据源(表、视图或任何的数据源卡塔尔(英语:State of Qatar)

如果为「*」和创立表时的逐个意气风发致。能够自身调治顺序,在 select 前边加上要查询的列名。

提出查询的时候,最佳是将在查询的列展现出来,即便是查全部列

(3)改善表操作
  • 语法:
ALTER TABLE 'tbl_name'

ADD col_name data_type [FIRST|AFTER col_name]        //添加字段
CHANGE COLUMN old_col_name  new_col_name data_type   //修改字段名
MODIFY col_name data_type                            //修改字段属性
DROP COLUMN col_name                                 //删除字段
  • 实验3:对数据库hellodb的表student一遍做如下操作:

    • 在name字段后增添字段phone,类型为varchar(11卡塔尔国
      alter table student add phone varchar(11) after name;

    澳门新萄京官方网站 15

    • 改正phone字段的属性为int
      alter table student modify phone int;

    澳门新萄京官方网站 16

    • 将name字段定义为唯豆蔻梢头键
      alter table student add unique key(name);

    澳门新萄京官方网站 17

    • 构建age字段的目录
      alter table student add index(age);
      show indexes from student; 查看表student创设目录的字段

    澳门新萄京官方网站 18

    主键和唯黄金年代键都会活动创建目录,name字段的目录也得以看看

    • 删除phone字段
      alter table student drop phone;

    澳门新萄京官方网站 19

查询中运算和别称和 CONCAT

对 NUMBE普拉多 型数据能够选拔算数操作符成立表明式( - * /)
对 DATE 型数据能够利用部分算数操作符创设表明式 ( -)

(4)索引
  • 目录是独特数据构造,定义查找时作为查找条件的字段

    • 可取:提升查询速度
    • 缺欠:占用额外层空间间,影响插入速度
  • 成立索引:一定要有目录名称
    CREATE INDEX index_name ON tbl_name(index_col_name,...);

  • 删除索引:
    DROP INDEX index_name ON tbl_name;

  • 查看索引:
    SHOW INDEXES FROM [db_name.]tbl_name;

  • 试验4:索引的增加、查看、删除

    • 添加表studen字段gender的索引
      create index genderindex on student(gender);
    • 翻开表student的目录(竖列显示)
      show indexes from studentG;

    澳门新萄京官方网站 20

    • 删除表student字段gender的索引
      drop index genderindex on student;

运算符优先级

乘法和除法的先行级高于加法和减法 同级运算的生机勃勃一是从左到右 表明式中央银行使”括号”可粗鲁改造优先级的运算顺序

(5)DML语句:INSERT, UPDATE, DELETE
  • INSERT:插入行
    INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} (val1,...),(...),...

  • UPDATE:更新行
    UPDATE tbl_name SET col1=val1, col2=val2, ... [WHERE clause];

  • DELETE:删除行
    DELETE FROM tbl_name [WHERE clause];

  • TRUNCATE TABLE tbl_name:清空表

  • 实验5:SQL的DML语句应用

    • 澳门新萄京官方网站,测验1:依据下表的源委,对表student实行赋值
    id name age gender
    1 zhao 25 m
    2 qian 18 f
    3 sun 30 m
    4 li 27 m
    5 zhou 22 f
    insert into student (id, name, age, gender) values (1, 'zhao', 25, 'm');   //完整写法
    insert into student (name, id, gender, age) values ('qian', 2, 'f', 18);   //注意顺序   
    insert into student values (3, 'sun', 30, 'm');    //可以省略字段描述,但赋值按照字段默认顺序
    insert into student values (4, 'li', 27, 'm'), (5, 'zhou', 22, 'f');        //可以一次赋多个值
    

    澳门新萄京官方网站 21

    • 测量检验2:复制student表并取名称叫表student2,清空表中的内容
      create table student2 select * from student

      澳门新萄京官方网站 22

      当空表的字段设置与原表完全相似有的时候候,能够采纳insert语句复制表内容:
      insert into student2 select * from student;

      truncate table student2 truncate语句的功用比delete高,然则出于truncate不记录日志,删除后的音信不能苏醒

      澳门新萄京官方网站 23

    • 测量检验3:改善、删除表记录
      将zhao的年纪改为24
      update student set age=24 where id=1

    澳门新萄京官方网站 24

    将li的岁数改为29,性别改为f
    update student set age=29, gender='f' where name='li'

    澳门新萄京官方网站 25

    删除name为li的记录
    delete from student where name='li';

澳门新萄京官方网站 26

安装列名的别名

SELECT 列1   as  别名   FROM 表名  

中间:as 能够简轻易单

作用:

  1. 改造列的标题头;
  2. 用于表示总括结果的意思;
  3. 用作列的外号;
    4. 豆蔻梢头旦别称中动用特殊字符,可能是挟持大小写敏感,或有空格时,都需加单引号;
(6)DQL语句:SELECT
  • 语法:
    SELECT col1,col2,... FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];
    Limit m,n:跳过m个,要n个

  • 字段表示法:
    *:全部字段
    AS:字段别名,col1 AS alias1

  • WHERE 子句:条件描述格局

    • 操作符:
      • 关系:>, <, >=, <=, ==, !=
      • 范围:BETWEEN ... AND ...
      • 混淆相称 LIKE
        %:任意长度的任性字符
        _:大肆单个字符
      • 正则表明式形式匹配:RLIKE
      • 空,非空决断:IS NULL ,IS NOT NULL
      • 枚举:IN (val1,val2,…)
    • 条件逻辑操作:and,or,not
  • 实验6:SELECT语句的运用
    当下表student内容如下:

    id name age gender
    1 zhao 25 m
    2 qian 18 f
    3 sun 30 m
    4 li 27 m
    5 zhou 22 f
    6 wu 17 m
    7 zheng 29 NULL
    8 wang 33 NULL

    询问本表新闻,依次完成以下成效:

    • 询问本表中字段id, name,age的消息,显示时id字段显示“编号”,name字段呈现“姓名”,age字段展现“岁数”
      select id as 编号, name as 姓名, age as 年龄 from student;

    澳门新萄京官方网站 27

    • 查询本表不惑之年龄超越等于20何况小于等于30的笔录
      select * from student where age >= 20 and age <= 30;或者
      select * from student where age between 20 and 30;

    澳门新萄京官方网站 28

    澳门新萄京官方网站 29

    • 查询本表中姓名以'z'起头的笔录,输出时以年纪升序排序
      select * from student where name like 'z%' order by age;

    澳门新萄京官方网站 30

    • 查询本表中姓名不以'w'带头,並且不以'n'结尾的笔录
      select * from student where name rlike '^[^w].*[^n]$';

    澳门新萄京官方网站 31

    • 询问本表中性别音信为空的记录,输出时以编号降序排序
      select * from student where gender is null order by id desc;

    澳门新萄京官方网站 32

    • 询问本表中姓名称叫"qian", "li", "zhou"的记录
      select * from student where name in ('qian', 'li', 'zhou');

    澳门新萄京官方网站 33

CONCAT

为方便客商浏览查询的结果数据,不常供给安装呈现格式,可以采取 CONCAT 函数来一而再字符串。

SELECT productName, salePrice, CONCAT(productName, '商品的零售价为:',salePrice) FROM t_product;
(7)客商账号管理
  • 格式:'user'@'host'
    user:用户名
    host:允许客商通过什么主机远程连接mysqld服务,富含:
    IP、网络地址、主机名、通配符(%和_)

  • 创制客商:
    CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];

  • 翻看当前客商:
    SELECT user();

  • 查看顾客:
    SELECT user,host,password FROM user;

  • 去除客商:
    DROP USER 'username'@'host';

  • 改革口令:

    • 方法一:
      SET PASSWORD FOR 'user'@'host' = PASSWORD('password');
    • 方法二:
      mysqladmin -u root -pold_password password 'new_password'’

过滤查询

运用 WHERE 子句限制重返的笔录

SELECT       列的列表
FROM    表名
WHERE   条件;

WHERE 子句在 FROM 子句后

(8)授权
  • 给顾客授权:
    GRANT priv_type,... ON [object_type] db_name.tb_name TO 'user'@'host' [IDENTIFIED BY 'password'];

    • priv_type:ALL [INSERT, UPDATE, DELETE, SELECT...]
    • db_name.tb_name:
      *.*:全数库的全体表
      db_name.*:钦赐库的全部表
      db_name.tb_name:钦赐库的钦赐表
      db_name.routine_name:钦赐库的存放进程和函数
  • 查阅钦命顾客获得的授权:
    SHOW GRANTS FOR 'user'@'host';

  • 回笼授权:
    REVOKE priv_type, ... ON db_name.tb_name FROM 'user'@'host
    FLUSH PRIVILEGES:手动让MariaDB的劳务进度重读授权表

  • 实践7:客户账号管理、授权管理

    • 始建账号hellopeiyang@192.168.136.130并授权其能够查询和增加hellodb数据库中的全数表,密码为'hello'
      grant select, insert on hellodb.* to hellopeiyang@192.168.136.130 identified by 'hello';

    • 翻看账号hellopeiyang@192.168.136.130收获的授权
      show grants for hellopeiyang@192.168.136.130;

    • 回笼账号hellopeiyang@192.168.136.130在hellodb数据库的全数表的整整授权
      revoke all on hellodb.* from hellopeiyang@192.168.136.130;

    • 去除账号hellopeiyang@192.168.136.130
      drop user hellopeiyang@192.168.136.130;

select 和 where 的进行各类

1、先实践 FROM,先找到数据
2、再 WHERE, 筛选出切合条件的多寡
3、才执行 SELECT

由此不可能在 WHERE 中应用别称

运算符

运算符 含义
= 等于
> 大于
>= 大于或等于
< 小于
<= 小于或等于
!=(<>) 不等于
AND(&&) 如果组合的条件都是 TRUE, 返回 TRUE
OR(||) 如果组合的条件之一是 TRUE, 返回 TRUE
NOT(!) 如果下面的条件是 FALSE, 返回 TRUE`

BETWEEN

展现某生机勃勃值域范围的笔录,这一个操作符最广大的运用在数字类型数据的限定上,但对于字符类型数据和日期类型数据风姿罗曼蒂克致可用。

WHERE 列名 BETWEEN  最小值 AND 最大值:闭区间。

IN

认清列的值是还是不是在内定的聚合中。

WHERE 列名 IN (值1,值2....);

IS NULL

判断列的值是或不是为空。

WHERE  列名  IS NULL;

LIKE

实施通配查询,查询条件可含蓄文字字符或数字

通配符 含义
% 可表示零或多个字符
_ 可表示一个字符

SELECT id, productName
FROM product
WHERE productName LIKE '%罗技M9_';

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站:MySQL创建数据表,MySQL学习

关键词: