主键:一列或一组列,其值能够唯一区分表中的每一行。

外键:外键为某个表中的一列,包含另一个表的主键值。

create table department (id int not null primary key,name char(20));

create table employeee (id int not null primary key,name char(20), department_id int, foreign key(department_id) references department(id));

mysql的dbms基于客户端-服务器模式,服务器部分负责所有数据访问和和处理,客户端与用户打交道。

show语句总结

show databases;

show tables;

show columns from 表名;

show status;

show grants;

show errors;

show warnings;

创建表

create table worker (id int not null primary key,name char(20) default 'worker');

插入insert

insert into worker (id,name) values (1,'jack');

distinct关键字

检索有不同值的列表

select distinct name from table_name;

limit关键字

限制返回的行的范围:

select name from tabe_name limit 5; (返回前5行)
select name from table_name limit 5,5; (行5开始的5行)

排序

order by desc(降序) asc(升序,默认就是升序)

不匹配检查

select name from person where age <> 20;
select name from person where age != 20;

空值检查、between、in

IS NULL

between xx and xx

in (xx,xx)

模糊查询

%通配符:..like 'ab%'  ..like '%ab' ..like 'a%b'

_通配符。与%的区别是_,_只能代表一个字符。

UNION(组合查询)

UNION的使用非常简单。所需要做的只是给出每条SELECT语句,在各语句之间放上关键字UNION。

正则表达式

sql查询也可以用正则表达式,例如

SELECT NAME FROM PRODUCTS WHERE NAME REGEXP '[[:DIGIT:]]{4}';

存储过程

存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可以将其视为批文件,虽然它们的作用不仅限于批处理。

创建存储过程

CREATE PRODUCEDURE productpricing()

BEGIN

  SELECT Avg(prod_price) AS priceaverage

  FROM products;

END; 
使用参数创建
CREATE PROCEDURE productpricing(
OUT p1 DECIMAL(8,2),
OUT ph DECIMAL(8,2),
OUT pa DECIMAL(8,2)
)
BEGIN
SELECT Min(prod_price)
INTO p1
FROM products;
SELECT Max(prod_price)
INTO ph
FROM products;
SELECT Avg(prod_price)
INTO pa
FROM products;
END;
执行存储过程
CALL productpricing(@pricelow,
@pricehigh,
@priceaverage);
删除存储过程
DROP PROCEDURE productpricing;

Windows 安装mysql(zip包)

1,zip包解压到要安装目录

2,配置环境变量,Path后加mysql路径\bin

3,修改配置文件,mysql目录下my-default.ini

basedir=D:\xx(mysql所在目录)

datadir=D:\xx\data (mysql所在目录\data)

4,以管理员身份运行cmd,运行cd命令到mysql的bin目录下,运行命令:mysqld -install

5,安装成功后net start mysql启动mysql服务

6,mysql -u root -p登录

2017.02.14补充:mysql 5.7版本后有一些改变,默认没有data文件夹,按照上述步骤安装之后net start mysql显示:

需要CMD在bin目录输入命令mysqld --initialize-insecure --user=mysql,随后net start mysql启动服务成功。

Centos 安装mysql(转载http://www.mamicode.com/info-detail-503994.html)

CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。

1. 下载mysql的repo源

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2. 安装mysql-community-release-el7-5.noarch.rpm包

$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。

3. 安装mysql

$ sudo yum install mysql-server

根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。

install mysql on ubuntu:

u just need to run three commands:

  sudo apt-get install mysql-server

  sudo apt-get install mysql-client

sudo apt-get install libmysqlclient-dev

mysql修改root(其他用户原理类似)密码

首先登录(新装mysql root是不需要密码的)

$ mysql -u root

登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:

$ sudo chown -R root:root /var/lib/mysql

然后,重启服务:

$ service mysqld restart

接下来登录重置密码:

$ mysql -u root
$ mysql > use mysql;
$ mysql > update user set password=password('') where user='root';
$ mysql > exit;

重启之后再登录mysql -u root -p

之后输入密码

2017.02.14补充:mysql 5.7以后修改密码需要update user set authentication_string = password('root'), password_expired = 'N', password_last_changed = now() where user = 'root';  因为user表里,password这个字段已经不在。

或者:

格式:mysqladmin -u用户名 -p旧密码 password 新密码 
例子:mysqladmin -uroot -p123456 password 123

mysql export and import:

windows:go to mysql's directory\bin

导出:

linux:

本以为linux下也是需要到mysql的bin目录下输入导出命令才行,实际操作发现直接输入命令即可。

导入:

linux:

mysql -u 用户名 -p  数据库名 < 数据库名.sql
mysql -u abc -p abc < abc.sql

windows:

mysql 关联查询:

http://www.cnblogs.com/rixiang/p/5492435.html

mysql全局设置中文字符:

set character_set_database=utf8;
set character_set_server=utf8;
set character_set_client=gbk;
set character_set_connection=gbk;

mysql设置表字符集:

ALTER TABLE User CONVERT TO CHARACTER SET utf8;

sql删除表中内容

delete from table_name where xx='xx'

sql清空一个表

delete from 表名;
truncate table 表名;

判断数据库或表是否存在

(1) 判断数据库存在, 则删除:

      drop database if exists db_name;
(2) 判断数据表存在, 则删除:

drop table if exists table_name;

注: db_name, table_name可用``(1键旁边那个键)号引起来, 也可不引起来.
 
(1) 如果单纯显示是否存在数据库, 则可用
     show databases like 'db_name';
(2) 单纯显示是否存在数据表, 则可用 
     show tables like 'table_name'; 
 
注: 这里db_name, table_name必须用''(单引号)引起来.
 
RTRIM()函数:
许多数据库保存填充为列宽的文本值,RTRIM函数可以去掉这些空格
 
聚集函数:
 
 
HAVING和WHERE区别:
WHERE在数据分组前过滤,HAVING在数据分组后过滤
 
 
使用sqlite通过日期字段,以月份统计查询:
 
 

sql 笔记(mysql)的更多相关文章

  1. MySQL学习笔记-MySQL体系结构总览

    MySQL体系结构总览 不管是用哪种数据库,了解数据库的体系结构都是极为重要的.MySQL体系结构主要由数据库和数据库实例构成. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件 ...

  2. go database/sql sql-driver/mysql 操作

    这里使用的是github.com/Go-SQL-Driver/MySQL, 所以需要下载一个github.com/Go-SQL-Driver/MySQL 引入 database/sql 和 githu ...

  3. SQL 笔记 By 华仔

    -------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...

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

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

  5. SQL Server | Mysql 对表的unique 的实现方式

    在ANSI SQL 标准中unique 有两种实现方式 1.是可以插入多个空值.也就是说多个null值看成是互不相同的. 2.是只可以插入一个空值,也主是说把所有的空值看也是相同的. 在SQL Ser ...

  6. SQL笔记 --- 数据库设计步骤(转)

    SQL笔记 --- 数据库设计步骤 目录 总体设计过程需求分析概念结构设计逻辑结构设计数据库物理设计数据库实施数据库运行和维护 总体设计过程 0 » 下一篇:vim 命令集 posted @ 2012 ...

  7. go web 第三天 学习笔记 --mysql

    CREATE TABLE `userinfo` ( `uid` INT() NOT NULL AUTO_INCREMENT, `username` VARCHAR() NULL DEFAULT NUL ...

  8. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...

  9. SQL优化 MySQL版 - B树索引详讲

    SQL优化 MySQL版  - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太 ...

随机推荐

  1. 【web maven】新建的项目 controller也有,从前台跳转后台 无法找到对应的controller

    碰上很 愣的问题: 使用maven搭建项目完成,项目页面写好,实体.Dao.Service.Controller都有了,但是指定Controller中的某个方法中一直不能从前台进入后台 原因: 没有w ...

  2. ssh 使用

    svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解 注意:本篇以后设涉及到的@后面 ...

  3. 【转】CentOS上部署PPTP和L2TP over IPSec简要笔记

    PPTP部署 安装 PPTP 需要 MPPE 和较高版本的 ppp ( > 2.4.3 ) 支持,不过 CentOS 5.0/RHEL 5 的 2.6.18 内核已经集成了 MPPE 和高版本的 ...

  4. Java RMI之HelloWorld篇

    Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...

  5. Jungle Roads[HDU1301]

    Jungle Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  6. linux菜鸟日记(5)

    iptables详细语法及配置: SNAT:源地址转换DNAT:目标地址转换PNAT:端口地址转换 ----------------------------------iptables规则链 路由以后 ...

  7. bzoj1103树状数组水题

    (卧槽,居然规定了修改的两点直接相连,亏我想半天) 非常水的题,用dfs序(而且不用重复,应该是直接规模为n的dfs序)+树状数组可以轻松水 收获:树状数组一遍A(没啥好骄傲的,那么简单的东西) #i ...

  8. AR初体验:宣传G20

    最近Pokemon Go太火,它基于LBS(Location Based Service)+AR(Augmented Reality)的一款游戏,这股风,一定会让国内的公司纷纷效仿,你懂的.不可否定的 ...

  9. Python开发工具PyCharm个性化设置(图解)

    Python开发工具PyCharm个性化设置,包括设置默认PyCharm解析器.设置缩进符为制表符.设置IDE皮肤主题等,大家参考使用吧. JetBrains PyCharm Pro 4.5.3 中文 ...

  10. linux下tomcat安装

    1.先安装jdk,我们这里用yum进行安装: yum -y install java-1.7.0-openjdk* 确定是否安装成功: java -version 如果显示jdk的版本信息,说明安装成 ...