sql语句(mysql)
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)的更多相关文章
- 全国省市级联数据sql语句 mysql版
全国省市级联数据sql语句 mysql版 --省级 provincial create table provincial ( provincialID int, provincialName ), p ...
- JDBC进阶之PreparedStatement执行SQL语句(MySQL)
一.什么是PreparedStatement 参阅Java API文档,我们可以知道,PreparedStatement是Statement的子接口(如图所示),表示预编译的 SQ ...
- sql语句 MySQL
1.操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specifica ...
- 50个SQL语句(MySQL版) 建表 插入数据
本学期正在学习数据库,前段时间老师让我们做一下50个经典SQL语句,当时做的比较快,有一些也是百度的,自我感觉理解的不是很透彻. 所以从本篇随笔开始,我将进行50个经典SQL语句的复盘,加深理解. 答 ...
- php 执行大量sql语句 MySQL server has gone away
php 设置超时时间单位秒 set_time_limit(3600); php 设置内存限制ini_set('memory_limit', '1024M'); mysql服务端接收到的包的大小 ...
- mysql用户管理 常用sql语句 mysql数据库备份恢复
- 50个SQL语句(MySQL版) 问题十四
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...
- 50个SQL语句(MySQL版) 问题十三
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...
- 50个SQL语句(MySQL版) 问题十二
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...
- 50个SQL语句(MySQL版) 问题十一
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...
随机推荐
- JS中的call()方法的理解
fn.call(obj,arg1,arg2);这是call()方法的使用形式,apply()是差不多的.作用是用obj对象来替换fn中的this 举个栗子: function A(){ this.co ...
- kuangbin_ShortPath K (POJ 3159)
很简单的模板题 放在K那么后的位置的原因大概是 光看题意并不是很容易想到是用最短路解吧 奈何kuangbin分在了最短路专题 一发水过 #include <iostream> #inclu ...
- 论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理 ...
- C++面向对象要点
先说说面向对象思想的一个总体认识 对象通常会有行为,这些行为是靠信息支撑,这些信息包括外部信息和内部信息,对象行为会维护其中的一部分信息 因此对象可以看成是这样一种实体,它获取信息,然后决定自己的行为 ...
- rac 11g_生产库日志组损坏处理
原创作品,出自 "深蓝的blog" 博客,转载时请务必注明出处,否则有权追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/ar ...
- MySQL DBA的个人修养
做为一个MySQL DBA,必须具有以下的素质: 一, 身体素质 DBA必须接收和处理各种报警,不论是中午在吃饭或者凌晨三点已经进入深度睡眠.接到报警需要立即进入应急状态,找到电脑,联上网络,快速定位 ...
- Google perf tools for nginx
注意:本教程仅适用于Linux. 下面为大家介绍google-perftools的安装,并配置Nginx和MySQL支持google-perftools. 首先,介绍如何优化Nginx: 1,首先下载 ...
- combobox select .change onSelect事件触发
我现在要完成的功能是:有两个下拉框,当地一个下拉框选择了第一个选项时,第二个下拉框不可用,否则就可用. 用了jQuery easyUI提供的onSelect方法.如下:js文件:$('#select1 ...
- SharePoint List 查看器
using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.ComponentMo ...
- 设置EDIUS字幕时有哪些要注意的
我们在用EDIUS添加字幕,有时候可能会遇到以下麻烦.例如有的字体在EDIUS中找不到,诗歌的排版问题还有怎么给字幕加光效等等.今天小编主要来给大家解决这三个问题,让你们知道EDIUS字幕设置时应该注 ...