MySQL
- 数据库认知
- 数据库认知
- 数据库:存放数据的仓库,本质是一个文件系统,将数据以特定的格式存储在一张张表中。
- 特定:持久化存储
- 功能:增删改查
- 数据库认知
- 数据库管理系统
- 简称DBMS,是一款用来管理、维护、建立数据库的软件。
- 用户需要用数据库管理系统来完成数据库中存储在表中的数据
- 常用数据库管理系统:MySQL,MariaDB,SQLite,redis,mongoDB IBM DB2等
- MySQL的使用
- 在DOS里登录MySQL
- MySQL -uroot -p123456 (123456为数据库密码)
- mysql -v 查看当前mysql版本号
- 远程连接数据库
- mysql -uroot -h(对方主机ip) -P3306 -p123456(123456为对方密码)
- -u : 用户名
- -h:host,对方主机ip
- -P 端口,数据库端口为3306
- -p 要连接数据库的密码
- mysql -uroot -h(对方主机ip) -P3306 -p123456(123456为对方密码)
- SQL语句
- SQL语句的认知
- 使用Java与数据库交互,必须用到数据库独有语言sql,它是数据库的代码
- sql语句的分类
- 数据库定义语言(DDL),定义数据库对象
- 数据库操作语言(DML),对数据库中表的记录进行更新
- 数据控制语言(DCL),定义数据库的访问权限和安全级别以及创建用户
- 数据查询语言:(DQL),用来查询数据库中标的记录
- sql语句的语法规范
- 可单行,多行书写,以分号结尾
- 使用空格缩进增强代码的可读性
- 关键字不区分大小写(大小写不敏感),但自定义的标识符要严格区分
- /* */,多行注释; #和-- 单行注释
- SQL语句的认知
- 在DOS里登录MySQL
- SQLyog的使用
- 在询问里写数据库代码
- ctrl + 滚轮来调节字体大小
- 选中要执行的sql 语句,点击执行,快捷键F9.
- 数据定义语言:DDL
- 数据库操作:
- 显示所有数据库 :show databases;
- 创建数据库 :create database 数据库名 ;
- 右键刷新,显示最新数据库
- 查看当前使用数据库的版本号 :select version();
- 使用(切换)数据库 :use 数据库名 ;
- 查看当前数据库中所有的表 : show tables;
- 在当前数据库中查看其它数据库的表 : show tables from 其它数据库名称;
- 查看当前正在使用的数据库 : select database();
- 查看创建数据库的建表语句信息 : show create database 表名;
- 创建数据库时,指定数据库的编码集 : create database 数据库名 default charset 编码方式;
- 如果没有指定字符集,则会使用创建mysql服务时设置的默认编码集
- 删除数据库 :drop database 数据库名;
- 表操作
- 表的创建:create table 表名(
字段名1 字段类型1 约束1,
字段名2 字段类型1 约束2,
字段名3 字段类型3 约束3,
字段名n 字段类型n 约束n
- 最后一个字段数据不用加逗号
- sql中常用的数据类型
- 整数 : int
- 字符 : varchar(字符的长度)
- 小数 : double
- date : 日期
- 创建表之前先检查表是否存在,不存在再创建,并设置编码格式为gbk;
- create table if not exists 表名(
表内容
)default charset gbk;
- create table if not exists 表名(
- 查看表的结构,也就是表的字段: desc 表名;
- field 字段 表头的名称
- type 字段的类型
- 查看建表语句 :show create table 表名;
- 删除表 :drop table 表名;
- 在表中增加一个字段 :alter table 表名 add 字段 字段类型 字段约束;
- 修改现有字段的字段类型 :alter table 表名 modify 字段名称 新类型 新约束;
- 修改现有字段的字段名称 :alter table 表名 change 旧列名 新列名 新类型;
- 删除表中的一个字段 :alter table 表名 drop 字段名;
- 修改表的名称 :rename table 旧表名 to 新表名;
//数据库名称无法修改
- 修改表的默认编码集 :alter table 表名 charset 编码名称 ;
- 表的创建:create table 表名(
- DML : 数据操作语言,对数据库中的表进行操作
- 表数据的增加
- inset into 表名 (字段1,字段2,字段3,.... ) values(字段值1,字段值2,字段值3,.....);
- 注意事项 :
- 传值时,传入数值的顺序要和字段的顺序一致
- 传值时,传入的数值类型要和对应字段的数据类型一致
- 传值时,除了数值类型以外,其他类型都需要引号包括,单双引号都可以
- 传值时,给某一字段传入空值
- 直接不写该字段
- 给字段传入 null
- 注意事项 :
- inset into 表名 (字段1,字段2,字段3,.... ) values(字段值1,字段值2,字段值3,.....);
- 一次给数据库中传入多条数据:
- inset into 表名 (字段1,字段2,字段3,...)
value
? (字段值1,字段值2,字段值3,..),
? (字段值1,字段值2,字段值3,..),
? (字段值1,字段值2,字段值3,..);
- inset into 表名 (字段1,字段2,字段3,...)
- 表数据的删除
- 删除一条记录 :delete from 表名 where 限定条件;
- 删除多条记录:用 or 拼接在where后的限定条件;
- 逐条删除全部记录:
- delete from 表名;
- truncate table 表名;
- truncate:截断,删除
- ==delete 与 truncate 的区别==
- ==delete 删除数据时是逐条删除==
- ==truncate是直接删除整个表,相当于 drop table 表名; 然后新建一个新表==
- 数据量较大时,使用truncate效率较高.
- 表数据的修改
- update 表名 set 要修改的字段="修改后的字段值" 后一般增加限定条件 where
- 如果不加限定字段,会将整列结果设置为指定值
- 修改多条记录可用or链接
- update 表名 set 要修改的字段="修改后的字段值" 后一般增加限定条件 where
- 表数据的增加
- 【MySQL知识点整理】DQL:数据库查询语言,从数据的表中查找记录. Q querry 查询.
- select 字段1,字段2,字段3,.... from 表名 where 限定条件
- select * from 表名
- 查询表中所有数据
- 给查询字段起别名 as
- select 字段 AS 给该字段起的别名 from 表名
- 查询结果为源数据查询到的结果拼接而成,是临时的视图,并不是真实存在的.
- as可以省略,但是需要在字段和别名见加一个空格
- 去除重复数据 distinct
- select distinct 要去重的字段 from 表名;
- 对多个字段去重,去重时,去重的效果是多个字段拼接以后再去重.
- select distinct 要去重的字段1,要去重的字段2 from 表名;
- distinct 要写在所有字段的前面.
- if null 如果是空,用指定值替换.
- 在sql中,数值+数值可以正常运算.数值+字符串如果字符串可以转换为数值,则可以正常运算,如果不可以转换为数值,则为原来的数值.
- if null(字段,0); 如果字段为空,用0替换
- 拼接字符串 concat("字符串","字段")
- select concat("我的姓名是","sname") from 表名;
- 使用限定的逻辑表达 与 and, 或 or, 非 not ; 大于 > ,小于 < ,等于 =,不等于 <>;
- 和null比较的两种方法
- <=> null; 是null
- is null; 是null
- is not null ; 不是null
- and
- select * from emp where sal >10000 and sal < = 20000;
- select * from emp where sal ==between== 10000 and 20000 between包含10000和20000
- or
- select * from emp where eid =10 or eid = 20;
- select * from emp where eid in (10,20) ;
- not
- select * from emp where comm not null ;
- like,模糊查询,
- %任意个数 0-n;
- _一个;
- select * from 表名 like "张%"; 查找姓张的所有人
- select * from 表名 like "张_"查找出姓张名字为一个字的人
- select * from 表名 like "%一%"查找出名字中所有带有一的人
- select * from 表名
- 限定条件
- where
- where 某字段(列名)=该字段的值(列值),以该字段值为条件限定
- where
- select 字段1,字段2,字段3,.... from 表名 where 限定条件
- 在询问里写数据库代码