1. 什么是数据库
存储数据的仓库 2. 什么数据:
大家所知道的都是数据.比如:你同学的名字,年龄,性别等等 3. 数据库概念
1.数据库服务器
2.数据库管理系统
重点
3.库
4.表
5.记录
6.数据
参考画图 4.环境安装:安装好之后,记得设置环境变量,控制面板-系统-高级系统设置-环境变量-打开path-新建-C:\Program Files\MySQL\MySQL Server 8.0\bin
1.傻瓜式安装下载地址
https://dev.mysql.com/downloads/installer/
2. ZIP 包下载地址
https://dev.mysql.com/downloads/mysql/ 3.完全卸载mysql:http://www.cnblogs.com/wangfengming/articles/7879074.html 5.库操作:就是文件夹database,cmd命令行输入mysql -u root -p,再输入密码123进入mysql。
1.创建
CREATE DATABASE DB2 charset utf8;
2.删除
DROP DATABASE db2; 3.使用(进入)
use db1;
4.查看库
show databases ; -- 查看当前用户下所有的库名
select DATABASE(); -- 查看当前使用的
show CREATE DATABASE db1; -- 查看创建库的信息 6.表操作table SQL语句
1.创建表
create table info(
id int not null auto_increment PRIMARY key,--not null非空,必须写入数据。如果是null,可写可不写。
name VARCHAR(50) not null,
sex CHAR(2) NULL
)
2.查看表
select * from info; -- 查看表数据 ; select * from info where id = 1;--查看表数据第一行 DESC info; -- 查看表结构 show create table info; -- 查看表的创建信息 3.删除表
drop table info; 4.修改表:指的是修改表字段。
-- ALTER table info add age int not null ; -- 添加表字段 -- alter table info drop age; -- 删除表字段 -- alter table info modify name char(100) null ; -- 修改表字段属性:类型,长度,小数点,不是null,不可以修改表字段名。 -- alter table info CHANGE name names varchar(50) not null; -- 修改表字段名和表字段属性
移除主键时自动移除自增属性
alter table info modify id int null , drop PRIMARY key; 补充信息(很少使用)
alter table info add PRIMARY key(ID,names); -- 添加主键(ID的自动递增是没有的);添加了两个(或多个)主键称为联合主键,意思是ID一样的时候,names必须不一样;ID不一样的时候,names可以一样。 alter table info drop PRIMARY key ;-- 删除主键(包括联合主键) alter table info alter sex set default '男'; -- 设置默认值 alter table info alter sex drop default; -- 删除默认值 5.修改表名称
rename table info to info1; -- 修改表名 6.复制表
一、select :
1.只复制表数据和表结构:create table info1 select * from info; 主键自增/索引/触发器/外键 --> 不会被复制。
2.只复制第一行表数据:create table info1 select * from info where id = 1; 主键自增/索引/触发器/外键 --> 不会被复制。
3.只复制表结构:create table info1 select * from info where 1!=1; 数据/主键自增/索引/触发器/外键 --> 不会被复制。 二、like:
1.只复制表结构:create table info1 like info; 数据/触发器/外键 --> 不会被复制。主键自增被复制,数据不被复制。 7.数据类型
--四个类 数字 文本 集合 日期
http://www.cnblogs.com/a438842265/articles/8475929.html varchar 是可变字符串
char 是固定字符串 char (m)
char数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中m代表字符串的长度。 PS: 即使数据小于m长度,也会占用m长度,但是在查询时,查出的结果会自动删除尾部的空格 特点:定长,简单粗暴,浪费空间,存取速度快 varchar(m)
varchar 数据类型用于变长的字符串,可以包含最多达65535个字符(理论上可以,但是实际上在超出21845长度后,mysql会自动帮您转换数据类型为文本类型)。
其中m代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。 PS: varchar类型存储数据的真实内容,例如:如果'ab ',尾部的空格也会被存起来
强调:varchar类型会在真实数据前加1-2Bytes的前缀,该前缀用来表示真实数据的bytes字节数(1-2Bytes最大表示65535个数字,正好符合mysql对row的最大字节限制,即已经足够使用)
如果真实的数据<255bytes则需要1Bytes的前缀(1Bytes=8bit 2**8最大表示的数字为255)
如果真实的数据>255bytes则需要2Bytes的前缀(2Bytes=16bit 2**16最大表示的数字为65535)
特点:变长,精准,节省空间,存取速度慢 sql优化:创建表时,定长的类型往前放,变长的往后放
比如性别 比如地址或描述信息
PS:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。
因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡 text
text数据类型用于保存变长的大字符串,可以最多到65535 (2**16 ? 1)个字符。 8.数据操作
1.增
-- INSERT into info values(1,'韩涉','女'); -- INSERT into info(id,NAME) values(2,'韩涉'); -- INSERT into info(id,NAME) values(3,'韩涉'),(4,'韩涉'),(5,'韩涉'); -- INSERT into info(name,sex) select name,sex from info1 ;因为id 有主键自增,所以insert into info select * from info1报错。
--如果有两个表:info 和info1,可以把info1 的数据插入到info当中:insert into info(name,sex) select names,sex from info1; 2.删--- 一定要加条件
-- DELETE from info where id = '11'; -- 删除指定数据 -- delete from info; -- 删除整张表中所有的数据 TRUNCATE info; -- 清空整张表
3.改
语法:update 文件名 set update info set sex = '人妖', name = '韩小强' where id=12; 4.查---可以在运行结果里面修改数据,然后点√就可以保存(或者在修改数据之后按下enter,然后在数据右边空白处单击一下),接着双击表格打开,点刷新就可以看到修改之后的数据。
4.1 简单查询
select * from info; -- 查询所有 select name,SEX from info; -- 按指定字段查询 select name,SEX as'性别' from info; -- as 表示为字段起别名,只是运行结果是性别,原数据还是sex不变。, select salary+200 from info; -- 可以进行数据列运算,但是只是运算结果加了200,原数据是没有加的。 select distinct age,name FROM info; -- 去重复查询(必须全部一样才可以去重) 4.2 条件查询
1.运算符
select * FROM info WHERE age >20;
select * FROM info WHERE age <=20;
select * FROM info WHERE age <>20;
select * FROM info WHERE age !=20; 2.null 关键字
select * FROM info where age is null; 真的是空的 select * FROM info where age is not null; 真的不是空的 select * FROM info where age =''; -- 字符串为空。注意空字符跟null是不一样的。注意这里使用等号=而不是使用is。 3.逻辑运算符 and or
select * from info where age = 28 and salary =53000; select * from info where age = 23 or salary =2000; select * from info where not(age = 28 and salary =53000); ` 4.3 区间查询
select * from info where age BETWEEN 18 and 20; ps: between...and 前后包含所指定的值
等价于 select * from info where age >= 18 and age <= 20; 4.4集合查询
select * from info where id = 1 or id = 3 or id = 5; select * from info where id not in(1,3,5); ##关键字in 4.5 模糊查询---用在搜索上
select * from info where name like '%e%'; -- 包含指定参数
select * from info where name like '%e'; -- 以什么结尾
select * from info where name like 'e%'; -- 以什么开头
select * from info where name like '__e%'; -- _表示单个字符站位符
select * from info where name like '__'; 4.6 排序查询 ORDER BY
select * from info where age >30 ORDER BY salary desc; -- ASC正序 DESC倒序-写在最后 select * from info ORDER BY CONVERT(name USING gbk);-- 中文排序 --因为中文不支持排序所以要换成gbk 4.7单表查询
1.聚合函数:
聚合: 将分散的聚集到一起.
聚合函数: 对列进行操作,返回的结果是一个单一的值,除了 COUNT 以外,都会忽略空值
COUNT:统计指定列不为NULL的记录行数;
SUM:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
MAX:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
AVG:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
#格式:select 聚合函数(字段) from 表名;
#统计人员中最大年龄、最小年龄,平均年龄分别是多少
select max(age),min(age),avg(age) from person;
    select count(1) from person;--第1列元素数量
    select count(name) from person;--列名是name的元素数量 2.分组
select sum(salary),dept_id from person GROUP BY dept_id group by 以...为组,后面的条件只能是having,不能是where。
select sum(salary) as w ,dept_id from person GROUP BY dept_id HAVING w >20000 -- 查询每个部门的平均薪资 并且看看这个部门的员工都有谁?
select avg(salary),dept_id,GROUP_CONCAT(name) from person GROUP BY dept_id #查询平均薪资大于10000的部门, 并且看看这个部门的员工都有谁? select avg(salary),dept_id,GROUP_CONCAT(name) from person GROUP BY dept_id HAVING
avg(salary) >10000 3.分页
select * from person LIMIT 8,4
ps: limit (起始条数),(查询多少条数); 4.SQL 语句关键字的执行顺序 执行顺序: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY ->limit 4.8.多表联合查询:
只拿符合条件的数据,扔掉不符合的。类似数学中的交集。如果person的dept_id有一个是null,不等于dept.dept_id ,
那么null所在的整一行数据都不会在结果中显示出来。
select * from person , dept -- 笛卡尔乘积,导致两个表的数据相乘,多了很多无用的数据出来。
加条件解决:
select * from person , dept where person.dept_id = dept.dept_id
起小名简化一下代码:
select * from person p , dept d where p.dept_id = d.dept_id 4.9.多表连接查询:以一个表格为准,这个表格的数据全部显示出来,而别的表格只显示符合条件的数据。
1、 左连接查询:person的数据全部显示出来(包括null),dept不能跟person的null匹配的部分,也为null。 -- select * from person LEFT JOIN dept on person.dept_id = dept.dept_id;       三表查询:使用了两个left join
          select * from teachers left join teacher2class on teachers.id = teacher2class.teacher_id
            left join classes on teacher2class.class_id = classes.id 2、 右连接查询
-- select * from person RIGHT JOIN dept on person.dept_id = dept.dept_id; 3、 内连接查询:只显示符合条件的数据。交集。跟多表联合查询一样。
-- select * from person INNER JOIN dept on person.dept_id = dept.dept_id; 4、 全连接:并集。
select * from person LEFT JOIN dept on person.dept_id = dept.dept_id 注意这句话后面是没有分号的
UNION
select * from person RIGHT JOIN dept on person.dept_id = dept.dept_id; union all:不去重,左连接和右连接的结果分别罗列出来。
select * from person LEFT JOIN dept on person.dept_id = dept.did
UNION all
select * from person RIGHT JOIN dept on person.dept_id = dept.did

day54-mysql-库、表、数据操作的更多相关文章

  1. MySQL库表详细操作

    昨天我们初始了MySQL,今天我们先从库表方面详细说一下具体操作 一.库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 ...

  2. MySql 库/表级操作 及 数据类型

    数据库分类 关系型数据库(SQL):存储方式固定,安全 非关系型数据库(NoSQL):存储方式比较灵活,存储数据的效率比较高,不太安全 MySQL是一种关系型数据库管理系统(采用关系模型来组织管理数据 ...

  3. mysql 库表的操作

    MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf ...

  4. java 读取mysql库表数据

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  5. Mysql 库表操作初识

    Mysql 库表操作初识 终端登录mysql 这里只演示win下, cmd 终端. 至于怎么在win下, linux, mac安装, 感觉这是一个入门级的百度搜索问题, 安装都搞不定, 确实有点尴尬, ...

  6. MySQL 服务器变量 数据操作DML-视图

    原文:MySQL 服务器变量 数据操作DML-视图 SQL语言的组成部分 常见分类: DDL:数据定义语言 DCL:数据控制语言,如授权 DML:数据操作语言 其它分类: 完整性定义语言: DDL的一 ...

  7. 第二百七十八节,MySQL数据库-表内容操作

    MySQL数据库-表内容操作 1.表内容增加 insert into 表 (列名,列名...) values (值,值,值...); 添加表内容添加一条数据 insert into 表 (列名,列名. ...

  8. MySQL单表数据不超过500万:是经验数值,还是黄金铁律?

    今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...

  9. MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?

    本文阅读时间大约3分钟. 梁桂钊 | 作者 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢 ...

  10. mysql复制表数据或表结构到新表中

    MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制表结构到新表 C ...

随机推荐

  1. java百货中心供应链管理系统 源码

    开发环境: Windows操作系统开发工具:MyEclipse/Eclipse + JDK+ Tomcat + MySQL 数据库 百货中心供应链管理系统主要用于实现了企业管理数据统计等.本系统结构如 ...

  2. c# 数据库操作,多数据库操作、数据库操作异常报错等问题

    1.引入相关的命名空间 在C#中要操作数据库,一般情况需要引入两个命名空间,在三种连接模式中都要引入下面的命名空间: System.Data;描述与数据源连接的当前状态. // // 摘要: // 连 ...

  3. WEB一周总结(1)待补充

    1.网页设计作业--小组介绍 图片来自https://weibo.com/hxLMo?sudaref=www.baidu.com&display=0&retcode=6102 2.WE ...

  4. 使用Object类为实例定义方法和属性

    1.1 可以使用 Object 类直接定义个实例,并且为该对象赋属性和方法,例如: var person_1 = { nickName:"xiaowu", age:28, show ...

  5. POJ 1164:The Castle

    The Castle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6677   Accepted: 3767 Descri ...

  6. 线上环境 分析java问题 常见命令

    在生产上进程需要分析jvm运行情况,今天分享几个自己常用的命令,持续更新,欢迎补充 1.jps jstack -l {pid} > jstack.log #查看线程快照信息 2.jps jmap ...

  7. Go get unrecognized import path "gopkg.in/yaml.v2"

    安装gin: go get -u github.com/gin-gonic/gin 出现错误: package gopkg.in/yaml.v2: unrecognized import path & ...

  8. 微信小程序之组件常见的问题

    小程序自定义的组件: (1)组件的结构 自定义的组件和普通的页面定义没有什么区别,也包含了四个文件:xxx.wxml(组件的视图层),xxx.json,xxx.js,xxx.wxss 组件的xxx.w ...

  9. UML-UML工具与UML蓝图

    1.UML应用场景 1).UML作为草图 2).UML作为蓝图. UML生成java代码(前向工程) java代码生成UML(逆向工程) 2.如果绘制了UML草图,如何在编码后更新该图形? 逆向工程, ...

  10. Thread--使用condition实现顺序执行

    package condition; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Re ...