MySQL
来源:互联网 发布:c语言中putchar(10) 编辑:程序博客网 时间:2024/06/09 23:55
第1章 mysql
1.1 数据库概念
存储数据的仓库
1.2 数据库管理系统
1.3 数据表和java类的对应关系
数据库表-àJAVA类
数据库表字段-àjava属性
数据库表中每一条数据-à对象
1.4 常见的数据库
mysql:sun/oracle,开始免费,被收购后就收费了
oracle:oracle公司的,收费的
db2:ibm,收费的
sqlserver:微软的,收费的
syBase:已经退出历史舞台
SQLite:小型数据库,一般用在移动端.
1.5 mysql启动服务
在控制台输入:net start mysql
一般自启动,不需要去管他
1.6 登录mysql
l 明文:mysql –u用户名–p密码
l 密文:mysql –u 用户名 –p回车 输入密码
1.7 常用的数据库命令
查看所有数据库:show databases;
创建数据库:create database数据库名;
create database 数据库名 character set字符集;
删除数据库:drop database 数据库名;
使用数据库:use 数据库名;
创建数据库表:
create table 表名(
字段名 类型(长度)[约束],
字段名 类型(长度)[约束],
字段名 类型(长度)[约束]
);
产看数据库表:
show tables;
查看数据库表详情
desc 表名;
删除表:
drop table 表名;
修改表中的列
添加列:alter table 表名 add 列数据类型 [约束];
修改列:alter table 表名 modify 列 数据类型 [约束];
改变列名和类型约束:alter table表名 change旧列 新列 数据类型 [约束];
删除列:alter table 表名 drop 列;
改变表名:
rename table 旧表名 to 新表名
修改字符集
alter table 表名 character set 字符集
1.8 SQL语句分类
DDL:数据库定义语言,操作数据库,或者数据表,不包括表中的数据
DML:数据库操作语言,对表中的数据进行增加,删除,修改。
DCL:数据库控制语言,用来创建用户或者设置权限等。
DQL:数据库查询语言,对数据库表中的数据进行查询
1.9 SQL的数据类型
int 整数
double 浮点数
varchar 字符串
date 日期,只有年月日,没有时分秒
datetime 既有年月日,又有时分秒
1.10 数据库表数据操作
插入语句:
insert into 表名 (字段1,字段2….) values (值1,值2…);
insert into 表名 values (值1,值2…);
insert into 表名 (字段2,字段3) values (值2,值3); 字段1一般为主键,主键在插入的时候会自动增长
insert into 表名 (字段1,字段2…) values (值1,值2…), (值1,值2…), (值1,值2…);
更新语句:
update 表名 set字段=值,字段=值; 更新所有数据
update 表名 set字段=值,字段=值 where条件; 更新满足条件的数据
删除语句:
delete from 表名 [where 条件]; 逐条删除,不会重置自增长记录
truncate table 表名; 摧毁表,然后重新建一个原来的表。会重置自增长记录
1.11 解决控制台乱码问题
控制台编码是GBK而mysql是utf8,就出现了乱码问题,
解决办法:修改临时编码 set names ‘gbk’;
1.12 查询语句
1. 查询所有
select * from 表名
2. 查询指定字段
select 字段1,字段2… from表名 [where 条件]
3. 别名查询
select 字段 [as] 别名 from 表名 [where 条件]; 字段别名
select 字段1… from 表名 [as] 别名; 表别名
4. 去重查询
select distinct 字段 from 表名;
5. 计算查询
select 字段 (做运算) from表名;
6. 查询条件:
逻辑与: and
逻辑或: or
逻辑非: not
等于:=
不等于:!= <>
大于:>
小于:<
包含:in 用法 in(值1,值2…)
在区间范围内:between and 用法 between值1 and 值2 包含值1和值2
模糊查询:like 必须结合通配符来使用
通配符:% 任意个字符
‘%张’ 以张结尾
‘张%’ 以张开头
‘%张%’ 包含张
_ 一个字符
‘___’ 长度为三的
判断是否为空:IS NOT NULL 不是空
IS NULL 是空
7. 排序
order by 字段 [asc] 升序
order by 字段 desc 降序
例如:select * from product order by price desc, category_id desc; //对商品表的价格进行降序排列,如果商品价格出现相同,就以分类ID进行降序排序
8. 聚合函数
count(字段):求有效的记录行数,忽略null值
sum(字段):求和,对于不能求和的字段,结果是0
avg(字段):求平均值
max(字段):求最大值
min(字段):求最小值
9. 分组查询
group by 分组的字段 [having 条件]
注意:having和where作用是一样的,只不过,where不能放到分组后面,只能放到分组前面
where和having区别:where是放到分组前面,并且是在分组前进行查询过滤
having是放到分组的后面,是在分组后进行查询
1.13 约束
如何创建约束
1. 在创建表时,字段声明位置的后面指定约束
2. 在创建表时,在约束区添加约束
[CONSTRAINT 约束名称] 约束 (字段列表)
3. 创建表以后修改表结构,添加约束
atler table 表名 add [CONSTRAINT 约束名称] 约束 (字段列表);
删除:
alter table 表名 drop primary key;
常见的约束:
主键:primary key
自动增长:auto_increment
非空约束:NOT NULL
唯一约束:UNIQUE
外键约束:FOREIGN KEY
声明外键:
alter table 从表 add [CONSTRAINT 外键名称] foreign key(从表的外键字段名) reference主表 (主表的主键)
逻辑外键和物理外键
1.14 多表查询
交叉查询:select * from tableA,tableB.
内连接:
隐式内连接:select * from tableA,tableB where 条件;
显式内连接:select * from tableA inner join tableB on连接条件 where 条件..
外连接:
左外连接:select * from tableA left outer join table on条件 …
右外连接:select * from tableA right outer join table on条件 …
内连接和外连接的区别:
内连接只查询条件成立的关联数据
外连接先查询出左边或者右边的所有数据,然后再查询另一张表的关联数据,如果关联条件不成立,显示null
子查询:
每一个查询语句,可以嵌套多个查询语句。
查询得到的结果可以当做表,也可以当做条件。
优点:比较灵活。
缺点:有点消耗内存
函数:
LENGTH(字段):求长度
TRANCATE(字段,保留几位小数):保留小数
limit m,n 查询一部分
m:从第几个开始。 从0计算
n:查询个数
- Mysql
- MySql
- MYSQL
- MySQL
- mysql
- mysql
- mysql
- mysql
- Mysql
- Mysql
- mysql
- MySQL
- mysql
- Mysql
- mysql
- mysql
- mysql
- mySQL
- 第六章 React props
- Java内部类_成员内部类_静态
- LeetCode刷题(C++)——Integer to Roman(Medium)
- 医院建立客户服务中心的必然性
- yii gridview 关联查询
- MySQL
- 聊一聊自定义标签
- SpringMVC jsp前台获取参数的方式 EL表达式
- 离散对数学习:baby_step_giant_step与ex_baby_step_giant_step算法
- css重置
- redis常用命令
- bootstrap 模态框抖动问题解决
- Javascript定时器调用有形参的方法
- C语言学习历程——编程练习2——10