• mysql1


    1.数据库软件:
    MySQL SQL_Server Oracle Mariadb DB2 MongoDB
    2.MySQL特点
    1.关系型数据库
    1.关系型数据库的特点
    1.数据是以行和列的形式去存储的
    2.这一系列的行和列称为表
    3.表中的每一横行叫一条记录
    4.表中的每一竖列叫一个字段
    5.表和表之间的逻辑关联叫关系
    2.示例
    1.关系型数据库存储
    表1.学生信息表
    姓名 年龄 班级
    牛郎 25 aid1803
    织女 23 aid1801
    表2.班级信息表
    班级 班主任
    aid1803 陆大大
    aid1801 孙大大
    2.跨平台
    3.支持多种编程语言
    3.MySQL安装
    ubuntu安装MySQL
    1.安装服务端
    sudo apt-get install mysql-server
    2.安装客户端
    sudo apt-get install mysql-client

    MySQL目录
    sudo -i 以root身份登录系统
    cd /var/lib/mysql MySQL的默认目录,蓝色是当前所有库的文件夹
    cd 数据库名对应的文件夹 文件夹内存有表名对应的文件
    注意:
    1.所有的数据都是以文件的形式存放在硬盘上数据库目录下
    2.数据库目录: /var/lib/mysql

    4.启动和连接MySQL服务
    1.服务端启动
    1.查看MySQL服务状态
    sudo /etc/init.d/mysql status
    2.停止启动重启MySQL服务
    sudo /etc/init.d/mysql stopstart estart
    2.客户端连接
    1.命令格式
    mysql -h主机地址 -u用户名 -p密码
    本机登录 mysql -hlocalhost -uroot -p

    5.基本SQL命令
    1.SQL命令的使用规则
    1.每条命令必须以 ; 结尾
    2.SQL命令不区分字母大小写
    3.使用c 来终止命令的执行
    2.库的管理
    1.库的基本操作
    1.查看已有的库
    show databases;
    千万别删mysql自带的4个库
    information_schema
    mysql
    performance_schema
    sys
    2.创建库(方括号内可省略,意思是指定字符编码集,不指定就用默认latin1,不支持中文)
    create database 库名 [default charset=utf8];
    3.查看创建库的语句
    show create database 库名;
    4.查看当前所在库
    select database();
    5.切换库
    use 库名;
    6.查看库中已有表
    show tables;
    7.删除库
    drop database 库名;
    2.库名的命名规则
    1.可以使用数字字母\_,但不能使用纯数字
    2.库名区分字母大小写
    3.库名具有唯一性
    4.不能使用特殊字符和MySQL关键字
    3.表的管理
    1.表的基本操作
    1.创建表(指定字符集)
    create table 表名(
    字段名 数据类型,
    字段名 数据类型,
    ...(有几个字段就写几个)
    )[default charset=utf8];
    2.查看创建表的语句(字符集)
    show create table 表名;
    3.查看表结构
    desc 表名;
    4.删除表
    drop table 表名;
    4.表记录管理
    1.在表中插入记录
    1.insert into 表名 values(根据字段的值如:值1.1,值1.2,值1.3),(值2.1,值2.2,值2.3),...,(值n);
    2.insert into 表名(字段名列表) values(值1.1,值1.2),(值2.1,值2.2),...,(值n);
    2.查询表中的记录
    1. select * from 表名;
    2. select 字段名1,字段名2,...,字段名n from 表名;
    5.表字段的操作
    1.语法: alter table 表名 执行动作;
    1.添加字段:
    alter table 表名 add 字段名 数据类型 [first|after 字段名];
    默认添加到最后,可以用first添加到第一位,或者after 字段名 添加到某一字段后面
    2.删除字段:
    alter table 表名 drop 字段名;
    3.修改字段数据类型
    aleter table 表名 modify 字段名 新数据类型;
    注意:修改数据类型时会受到表中原有数据的限制
    4.修改字段名
    alter table 表名 change 旧名 新名 数据类型;
    5.修改表名
    alter table 表名 rename 新表名;

    6.where条件子句(配合查询修改删除记录操作)
    1.语法:
    查询:select * from 表名 where 条件;
    删除:delete from 表名 where 条件;(不带where 条件 将删除表内所有记录,一定要加)
    修改:update 表名 set 字段名1=值1,字段名2=值2,...where 条件;
    (如果不加where条件,将修改所有记录,一定要加)
    7.运算符操作
    1.数值比较&字符比较
    1.数值比较运算符:= | != | > | >= | < | <=
    2.字符比较运算符:= | !=
    2.逻辑比较
    1.运算符: and | or
    3.范围内比较
    1.运算符 between and | in | not in
    2.语法:
    between 值1 and 值2
    in(值1,值2,...,值n)
    not in(值1,值2,...值n)
    4.匹配空非空
    1.空:is null
    2.非空:is not null
    注意:1.null:空值,必须用is或者is not 去匹配
    2."":空字符串,用=或者!=去匹配
    5.模糊比较
    1.where 字段名 like 表达式;
    2.表达式:
    1. _:匹配单个字符
    2. %:匹配0到多个字符
    6.正则匹配查询
    1.where 字段名 regexp "正则表达式"
    2.正则表达式符号
    ^ : 以...开头
    $ : 以...结尾
    . : 匹配任意一个字符,5.xx版匹配的是字节
    [] : 包含...内容
    * : 匹配前面一个字符出现0或多次
    6.SQL查询
    1.总结语法(执行顺序)
    3.select ...聚合函数 from 表名
    1. where ...(筛选)
    2.group by ...(分组)
    4.having ...(筛选)
    5.order by...(排序)
    6.limit...(限制显示条数)
    2.order by
    1.作用:给查询的结果排序
    2.语法:
    order by 字段名 排序方式;
    3.排序方式
    1.asc(默认可不写):升序
    2.desc:降序
    3.limit(永远放在SQL语句的最后)
    1.作用:限制显示查询记录的个数
    2.用法:
    1.limit n 显示n条记录
    2.limit m,n 显示从第(m+1)条开始,显示n条记录
    4.聚合函数
    1.分类
    1.avg(字段名):求字段的平均值
    2.sum(字段名):求和
    3.max(字段名):求最大值
    4.min(字段名):求最小值
    5.count(字段名):统计该字段记录的个数
    1.统计两个字段: count(字段名1),count(字段名2)
    2.null不会被统计,空字符串""会统计
    可以通过聚合函数 as 自定名字 来重设显示的字段名
    5.group by(先分组,再聚合)
    1.作用:给查询的结果进行分组
    2.后面by哪个字段,前面就得select哪个字段,
    如果还需要select别的字段,就需要用聚合函数处理好别的字段,让这个字段的行数=by字段的行数
    6.having
    1.作用:对查询的结果进行进一步筛选
    2.注意
    1.having语句通常与group by语句联合使用,用来过滤由group by语句返回的记录集
    2.having语句弥补了where条件子句不能与聚合函数联合使用的不足,where操作的是表中实际存在的字段,having操作的是聚合函数生成的显示列
    7.distinct
    1.作用:不显示字段的重复值(去重)
    2.用法:见例19,例23
    3.注意:
    1.distinct处理的是distinct和from之间的所有字段,所有字段的值必须完全相同才可以去重
    2.distinct不能对任何字段做聚合处理
    8.查询表记录时可以做数学运算
    1.运算符:+ - * / %
    7.约束
    1.作用:为了保证数据的完整性,一致性,有效性,可以限制无效的数据插入到数据表中
    2.约束分类
    1.默认约束(default)
    1.作用:在插入记录时,如果不给该字段赋值,则使用默认值
    2.格式:
    字段名 数据类型 default 默认值
    2.非空约束
    1.作用:不允许该字段的值有null记录
    2.格式:
    字段名 数据类型 not null
    8.索引(完全记住)
    1.定义:对数据库中表的一列或者多列的值进行排序的一种结构
    2.索引的优点:可以加快数据的检索速度(MySQL中索引用Btree方式)
    3.索引的缺点:
    1.当对表中的数据进行增加,修改,删除的时候,索引需要动态维护,降低了数据的维护速度
    2.索引需要占用物理存储空间(数据库目录/var/lib/mysql)
    4.示例:
    1.运行insert_.py,这个程序添加一个indexdb库,并添加t1表格,内有2000000条数据
    2.查看变量列表,查看profiling状态是off
    show variables like "%pro%";
    3.设置profiling状态为on,即开启性能分析
    set profiling = 1;
    4.运行命令
    select name from t1 where name="lucy99999";
    5.查看性能分析
    show profiles; 上条命令耗时1.06045325
    6.在name字段添加索引
    create index name on t1(name);
    7.重新执行上面第4条命令
    8.查看性能分析
    show profiles; 上条命令耗时0.00461950
    9.关闭性能分析
    set profiling = 0;
    5.索引分类
    1.普通索引(index)
    1.使用规则
    1.一个表中可以有多个index字段
    2.字段的值可以有重复,也可以为null
    3.把经常做查询条件的字段设置为index字段
    4.index字段的key表示为:MUL
    2.创建索引
    1.创建表时创建index
    create table t1(正常创建表格语句,index(字段名1),index(字段名2));
    2.在已有表中添加索引字段
    create index 索引名 on 表名(字段名);
    3.查看普通索引
    1.desc 表名; 查看key标志为MUL
    2.show index from 表名;
    4.删除普通索引
    drop index 索引名 on 表名; #只能一个一个删
    2.唯一索引(unique)
    1.使用规格
    1.一个表中可以有多个unique字段
    2.unique字段的值不允许重复,可以为空值null
    3.unique的key标志是UNI
    2.创建(基本等同index创建)
    1.创建表时创建unique
    create table t1(正常创建表格语句,unique(字段名1),unique(字段名2));
    2.已有表中添加索引
    create unique index 索引名 on 表名(字段名);
    3.查看唯一索引
    同普通索引
    4.删除唯一索引
    同普通索引
    3.主键索引(primary key) && 自增长属性(auto_increment)
    1.使用规则
    1.一个表中只能由一个主键字段
    2.对应字段的值不允许重复 且 不能为空值null
    3.主键字段的key标志为PRI
    4.把表中能够唯一标识一条记录的字段设置为主键,通常把表中记录编号的字段设置为主键
    5.设置为主键的字段不需要维护赋值,因为有自增长属性.如果主键字段赋值,后面将会在这个值的基础上自增长
    2.创建主键字段(PRI)
    1.创建表时创建(一般创建表的时候必须给主键,一般都是给id)
    1.create table t1(字段名 数据类型 primary key auto_increment,正常语句...);
    2.create table t1(字段名 数据类型 auto_increment,正常语句...,primary key(字段名));
    最后括号后面可以接auto_increment = 100; #表示自增长从100开始
    2.在已有表中添加主键(一般创建表的时候已经给过主键了,这个操作一般不用)
    alter table 表名 add primary key(字段名); 添加完没有自增长属性,需要的话可以用modify添加自增长属性
    3.删除主键
    1.有自增长属性就必须先删除自增长属性(modify)
    alter table 表名 modify 字段名 数据类型;
    2.删除主键
    alter table 表名 drop primary key;
    4.外键索引
    1.定义:让当前表字段的值在另一个表的范围内选择
    2.语法格式
    create table t1(正常语句...,foreign key(本表参考字段名) references 被参考表名(被参考字段名)
    on delete 级联动作 on update 级联动作);
    3.级联动作
    1.cascade:数据级联更新
    当主表删除记录 或 更新被参考字段的值时,从表会级联更新
    2.restrict (默认)
    当主表删除或更新时,如果从表中有关联记录则不允许主表删除或更新
    3.set null
    当主表删除或更新记录时,从表中相关联记录的参考字段值自动设置为null
    4.no action(同restrict都是立即检查外键限制)
    4.删除外键
    alter table 表名 drop foreign key 外键名;
    1.外键名的查看
    show create table 表名; 查看CONSTRAINT的值
    5.已有表中添加外键 #会受到表中原有数据的限制
    alter table 表名 add foreign key(参考字段名)
    references 被参考表名(被参考字段名)
    on delete 级联动作
    on update 级联动作;
    6.外键使用规则
    1.两张表的被参考字段和参考字段数据要一致
    2.被参考字段必须是key的一种,通常是primary key

    6.名词介绍
    1.DB(database) 就是数据库
    2.DBMS(database management system) 数据库管理系统:管理数据库的软件:MySQLOracle等
    3.DBS(database system) 数据库系统 DBS = DB + DBMS + 数据库应用 + 用户
    7.数据类型(四大类)(计算机上的所有文件类型都支持数据库存储)
    1.数值类型(有符号signed 和 无符号unsigned)
    1.整型
    1. int 大整型(4字节)取值范围0~2**32-1
    2. tinyint 微小整型(1字节)
    1.有符号(默认signed) -128~127
    2.无符号(unsigned) 0-255 示例:age tinyint unsigned
    3. smallint 小整型(2字节)
    4. bigint 极大整型(8字节)
    2.浮点型
    1. float(4个字节,最多显示7个有效位,即总位数不能多于7)默认signed
    1.用法
    字段名 float(m,n) m:表示总位数 n:表示小数位数
    2.注意
    1.浮点型插入整数时会自动补全小数位数
    2.小数如果多于指定的位数,会对指定位的下一位进行四舍五入
    示例: float(5,2) insert 23.128 =>23.13
    2.double(8个字节,最多显示15个有效位),用法跟float一样
    3.decimal(m+2个字节,最多显示28个有效位)对精度要求高就用这个,最常用
    2.字符类型
    1.char(宽度) 定长类型 宽度指char字符数量
    1.宽度的取值范围:1-255
    2.定长不给定宽度默认为1
    2.varchar(宽度) 变长类型
    1.取值范围:1-65535
    2.注意:varchar没有默认宽度,必须给定一个宽度值
    3.char 和 varchar的特点
    1.char有可能浪费空间,varchar节省空间
    2.char性能较好,varchar性能相对较差
    3.枚举类型(字段值只能在列举的范围内选择)
    1.enum(...) 单选(最多有65535个不同值)
    字段名 enum(值1,值2,...,值n)
    2.set(...) 多选(最多有64个不同值)
    字段名 set(值1,值2,...,值n)
    注意:插入记录时 "值1,值2,值3"

    4.日期时间类型
    1.year:年 YYYY
    2.date:日期 YYYYMMDD
    3.time:时间 HHMMSS
    4.datetime:日期时间 YYYYMMDDHHMMSS
    5.timestamp:日期时间 YYYYMMDDHHMMSS
    注意:插入记录时,datatime不给值默认返回NULL,timestamp不给值默认返回系统当前时间

    示例:
    create table t(
    id int,
    name varchar(15),
    age tinyint unsigned,
    birth_year year,
    birthday date,
    class time,
    meeting datetime);

    insert into t values
    (1,"武松",40,1979,19790520,090000,20190505000000);

    字符类型的宽度和数值类型的宽度的区别
    1.数值类型的宽度仅仅为显示宽度,只用于select查询显示,和占用的存储空间大小无关,可用zerofill查看效果
    实例: id int(3) zerofill 显示==>001
    2.字符类型的宽度超过则无法存储


    客户端把数据存储到数据库服务器上的简单过程
    1.连接到数据库服务器
    mysql -uroot -p
    2.选择一个库
    show databases;
    use 库名;
    3.创建表或者修改表
    create...
    4.断开与数据库服务器的连接
    exit | quit | q
    更改库表的默认字符集
    1.方法
    通过更改MySQL服务的配置文件来实现
    2.步骤
    1.获取root权限
    sudo -i
    2.切换到配置文件所在路径(ubuntu)
    cd /etc/mysql/mysql.conf.d
    3.备份
    cp -p mysqld.cnf mysqld.cnf.bak(-p参数:连同原文件权限一起复制)
    4.用vi打开mysqld.cnf,在
    [mysqld]
    character_set_server = utf8 保存退出
    5.重启mysql服务
    /etc/init.d/mysql restart
    开启性能分析
    1.show variables like "%pro%";
    2.set profiling = 1;























  • 相关阅读:
    Map
    Enumeration输出
    iterator的基本用法
    Annotation整合工厂设计模式
    自定义Annotation
    Annotation
    动态代理设计模式
    静态代理设计模式
    自定义ClassLoader
    获取类的类对象的几种方式
  • 原文地址:https://www.cnblogs.com/huohu121/p/12300430.html
Copyright © 2020-2023  润新知