MySQL
1.数据库数据类型
int 整型
double 浮点型 如double(5,2)最多5位,其中有两位小数
char:固定长度字符串,如char(255),数据长度不足会用空格补足
varchar 可变长度字符串
固长比变长更节省空间
text(clob):字符串类型ccc

net stop mysql 停止MySQL服务
net start mysql 启动MySQL服务

sql语句
dcl data control language 数据控制语言,用来定义访问权限和安全级别
ddl data definition language 数据定义语言
用来定义数据库对象,库、表、列
dql data query language 数据查询语言 用来查询记录
dml data manipulation language 数据操作语言 用来定义数据库记录

dcl 对用户的创建 及授权
ddl 数据库或表的结构创建
dql 对表的记录查询
dml 对标的记录进行更新

DDL
show databases; 查看所有数据库
use 数据库名; 切换数据库
create database 数据库名; 创建数据库
create database if not exists 数据库名;如果不存在则创建
drop database 数据库名;删除数据库
drop database if exis 数据库名;删除数据库,如果存在
alter database 数据库名 charset set utf8 修改数据库编码

create table 表名(列名1 数据类型,列名2 数据类型,....);创建表
show table;查询所有表
desc 表名;查询表结构
drop table 表名;删除表
alter table 表名 add(列名,数据类型,....)添加列
alter table 表名 modify 列名 类型;修改列名和列类型
alter table table_name change old_column_name new_column_name;
修改列名
alert table 表名 drop 列名;删除列
alter table 表名 rename to 新表名;重命名表

DQL
select * from 表名;查询表中的所有数据
insert into table (列名1,列名2,...)values(值1,值2,...);
向表中插入数据

update 表名 set列名 = 列值 where 条件 = 条件值;修改列

条件查询运算符
<>不包含=;
or 或者
and 并且
not 非
in(),在括号中

DCL
create user 用户名@IP地址 identified by '密码'; 创建用户,
只能在指定的IP登陆
create user 用户名@'%' identified by '密码';
创建用户,不受IP限制

grant 权限1,...权限n on 数据库.* to 用户名@ip地址
给用户授权

revoke 权限1,...权限n on 数据库.* from 用户名@ip地址
移除用户权限

show grants for 用户名@ip地址; 查看用户权限
drop user 用户名@ip地址;删除用户

DQL

SELECT distinct 列名 from 表名;查询不重复的记录

任何东西和null相加 都为null
select sal +comm from emp;
因此我们加一个函数
select ifnull(列名,值用来替换null) from emp;mysql用ifnull
select sal+ifnull(comm,0) from emp;mysql用ifnull
select sal+nvl(comm,0)from emp;oracle 用nvl
将ename和job连起来
select concat(ename,job) from emp;
可以为查询结果添加别名
select concat(ename,job)as 别名 from emp;

模糊查询
select * from emp where ename like '张_' 查询姓张的名字两个字
select * from emp where ename like '___' 查询名字是三个字的
select * from emp where ename like '%刚' 查询名字有刚的
select * from emp where ename like '王%' 查询姓王的
select * from emp where ename like '%王%' 查询名字中含王的

排序
order by
select * from 表名 order by 列名 升序或者降序
select * from emp order by sal asc
asc 升序,desc降序

多列排序
select * from 表名 order by 列名 升序或者降序,
列名 升序或者降序,列名 升序或者降序....
select * from emp order by sal asc,com desc,empo asc;

聚合函数
select count(*) from emp;查询有效行数,一行全是null不计数
select count(列名) from emp;查询有效行数,值为null的不计数

select sum(sal) from emp;计算总和
select max(sal) from emp;计算最大值
select min(sal) from emp;计算最小值
select avg(sal) from emp;计算平均值

分组查询
group by
select 分组列,聚合函数 from 表名 group by 字段;
根据相应的字段分组,中间只能放分组列和聚合函数

hvaing
select 分组列,聚合函数 from 表名 where 条件 group by 分组列
having 分组后条件(用聚合函数做条件)

select deptno ,count(*) from emp where sal>10000 group by
deptno having count(*)>3;以部门分组 工资大于10000的人数大于3个的

关键字:
select
where
group by
having
order by
他们的执行顺序也是如此

mysql方言limit
select * from emp limit 0,5;从第一行开始 查5行

mysql的编码
show variables like 'char%';查看mysql数据库编码;
在my.ini配置文件中配置,可以一劳永逸的解决乱码问题。
将default-character-set = gbk设置一下

mysql备份与恢复
数据库-->sql语句
sql语句-->数据库

数据库导出sql脚本(备份数据库内容,不是数据库)
mysqldump -u用户名 -p密码 数据库名>c:/a.sql(路径)

恢复
mysql -u用户名 -p密码 数据库名<c:/a.sql(路径)
sho

约束
主键约束特点:
非空
唯一
被引用<外键可以引用主键>

创建主键:
一种:create table table_name (
colunm_name1 类型 primary key,
colunm_name2 类型 primary key,
...
);
二种:create table table_name (
colunm_name1 类型,
colunm_name2 类型,
primary key(colunm_name1)
);
三种:create table table_name (
colunm_name1 类型,
colunm_name2 类型,
);
alter table table_name add primary key(colunm_name1);

删除主键:
alter table table_name drop primary key;

主键自增长
create table table_name (
colunm_name1 类型 primary key auto_increment,
colunm_name2 类型 ,
...
);
实际开发中大不分使用uuid作为主键

非空约束
create table table_name (
colunm_name1 类型 primary key auto_increment,
colunm_name2 类型 not null,//非空约束
...
);
唯一约束
create table table_name (
colunm_name1 类型 primary key auto_increment,
colunm_name2 类型 unique,//唯一约束
...
);

外键约束特点
外键必须是另一个表的主键(外键必须是引用主键)
外键可以重复
外键可以为空
一张表中可以有多个外键

创建外键
一种:创建表的时候就创建外键
create table emp(
empno int primary key auto_increment,
ename varchar(50),
deptno int,
constraint fk_emp_dept foreign key(deptno)
references dept(deptno)//创建外键
);
二种:创建完表之后将某个字段设为外键
create table emp(
empno int primary key auto_increment,
ename varchar(50) not null,
deptno int
);
alter table emp add constraint fk_emp_depe foreign key
(deptno) references dept(deptno);

删除外键
alter table 表名 drop foreign key 外键名;

一对一中将主键设为外键
多对多需要关联表,将需要关联的表的主键设为外键

多表查询
一、合并结果集
表结构必须相同

select * from 表1
union all
select * from 表2 //将表1和表2的结果集合并

select * from 表1
union
select * from 表2 //将表1和表2的结果集合并,相同的只显示一条

注意union all和 union的区别

二、连接查询
内连接
mysql方言版:
select * from 表1,表2 where 表1.xx = 表2.xx;
标准版:
select * from 表1 inner join 表2 on 表1.xx = 表2.xx;
自然:
select * from 表1 natural join 表2 on 表1.xx = 表2.xx;
自然连接会自动找两张表中相同的列进行匹配,不需要加条件
外连接
外连接有一主一次,左外及左表为主,右外及右表为主
左外连接(包含左边的所有项)
select * from 表1 left outer join 表2 on 表1.xx = 表2.xx;

右外连接(包含右边的所有项)
select * from 表1 right outer join 表2 on 表1.xx = 表2.xx;
自然连接

笛卡尔积

子查询
:查询中有查询,看select的个数
1.出现的位置
where后作为条件存在
from后作为表存在(多行多列)
2.条件
单行单列
select * from 表1 别名1 where 列1 [=、>、<、>=、<=、!=] (select 列 from 表2 别名2 where 条件)
多行单列
select * from 表1 别名1 where 列1 [in、>all、>any] (select 列 from 表2 别名2 where 条件)
单行多列
select * from 表1 别名1 where (列1、列2) in (select 列1、列2 from 表2 别名2 where 条件)
多行多列
select * from 表1 别名1 , (select...)别名2 where 条件

sql语句(mysql)的更多相关文章

  1. 全国省市级联数据sql语句 mysql版

    全国省市级联数据sql语句 mysql版 --省级 provincial create table provincial ( provincialID int, provincialName ), p ...

  2. JDBC进阶之PreparedStatement执行SQL语句(MySQL)

    一.什么是PreparedStatement           参阅Java API文档,我们可以知道,PreparedStatement是Statement的子接口(如图所示),表示预编译的 SQ ...

  3. sql语句 MySQL

    1.操作数据库 (1)创建数据库 CREATE  DATABASE  [IF NOT EXISTS] db_name [create_specification [, create_specifica ...

  4. 50个SQL语句(MySQL版) 建表 插入数据

    本学期正在学习数据库,前段时间老师让我们做一下50个经典SQL语句,当时做的比较快,有一些也是百度的,自我感觉理解的不是很透彻. 所以从本篇随笔开始,我将进行50个经典SQL语句的复盘,加深理解. 答 ...

  5. php 执行大量sql语句 MySQL server has gone away

    php 设置超时时间单位秒 set_time_limit(3600);   php 设置内存限制ini_set('memory_limit', '1024M');   mysql服务端接收到的包的大小 ...

  6. mysql用户管理 常用sql语句 mysql数据库备份恢复

     

  7. 50个SQL语句(MySQL版) 问题十四

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  8. 50个SQL语句(MySQL版) 问题十三

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  9. 50个SQL语句(MySQL版) 问题十二

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  10. 50个SQL语句(MySQL版) 问题十一

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

随机推荐

  1. ctypes 模块

    ctypes赋予了python类似于C语言一样的底层操作能力,通过ctypes模块可以调用动态链接库中的导出函数.构建复杂的c数据类型. ctypes提供了三种不同的动态链接库加载方式:cdll(), ...

  2. 【NOIP2012】国王游戏

    这一次高精度完美地过辣好开心OvO,还get到了非常方便的高精度除小于10000的方法,这个是我自己脑出来的OvO 看来下午高精度傻逼得值qvq 原题: 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个 ...

  3. 【P1304】【P1305】选课与选课输出方案

    多叉树归 原题: 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<500)门的选修课程,每个学生可选课程的数量M是给定的.学生选修了这M门课并考核 ...

  4. Python实现ORM

    ORM即把数据库中的一个数据表给映射到代码里的一个类上,表的字段对应着类的属性.将增删改查等基本操作封装为类对应的方法,从而写出更干净和更富有层次性的代码. 以查询数据为例,原始的写法要Python代 ...

  5. Android TextView换行问题

    本文转载于:http://niufc.iteye.com/blog/1729792 ndroid的TextView在显示文字的时候有个问题就是一行还没显示满就跳到下一行,原因是: 1) TextVie ...

  6. java 计算器基于工厂模式和功能单一模式

    import java.util.Scanner; public class CaculationTest { public static void main(String[] args) { Sca ...

  7. jsp获取SessionID值

    <% HttpSession s = request.getSession(); s.setAttribute("name","test"); %> ...

  8. easyUI之window

    window组件是一个可拖动.浮动的面板,用于显示信息.内容可用 href或ajax获取. window是一个显示窗口,同时也可以显示layout的功能(也就是创建复合的组合窗口),如 <div ...

  9. 【转】Deprecated: Function ereg_replace() is deprecated的解决方法

    这个问题是因为你用的php版本过高. 在php5.3中,正则函数ereg_replace已经废弃,而dedecms还继续用.有两个方案可以解决以上问题: 1.把php版本换到v5.3下. 2.继续使用 ...

  10. ASP.NET 4.0的ClientIDMode属性

    时光流逝,我们心爱的ASP.NET也步入了4.0的时代,微软在ASP.NET 4.0中对很多特性做了修改.比如我将要讨论的控件ID机制就是其中之一. 在ASP.NET 4.0之前我们总是要为控件的Cl ...