sql 笔记(mysql)
主键:一列或一组列,其值能够唯一区分表中的每一行。
外键:外键为某个表中的一列,包含另一个表的主键值。
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) 判断数据库存在, 则删除:
(2) 判断数据表存在, 则删除:
drop table if exists table_name;



sql 笔记(mysql)的更多相关文章
- MySQL学习笔记-MySQL体系结构总览
MySQL体系结构总览 不管是用哪种数据库,了解数据库的体系结构都是极为重要的.MySQL体系结构主要由数据库和数据库实例构成. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件 ...
- go database/sql sql-driver/mysql 操作
这里使用的是github.com/Go-SQL-Driver/MySQL, 所以需要下载一个github.com/Go-SQL-Driver/MySQL 引入 database/sql 和 githu ...
- SQL 笔记 By 华仔
-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...
- 全国省市级联数据sql语句 mysql版
全国省市级联数据sql语句 mysql版 --省级 provincial create table provincial ( provincialID int, provincialName ), p ...
- SQL Server | Mysql 对表的unique 的实现方式
在ANSI SQL 标准中unique 有两种实现方式 1.是可以插入多个空值.也就是说多个null值看成是互不相同的. 2.是只可以插入一个空值,也主是说把所有的空值看也是相同的. 在SQL Ser ...
- SQL笔记 --- 数据库设计步骤(转)
SQL笔记 --- 数据库设计步骤 目录 总体设计过程需求分析概念结构设计逻辑结构设计数据库物理设计数据库实施数据库运行和维护 总体设计过程 0 » 下一篇:vim 命令集 posted @ 2012 ...
- go web 第三天 学习笔记 --mysql
CREATE TABLE `userinfo` ( `uid` INT() NOT NULL AUTO_INCREMENT, `username` VARCHAR() NULL DEFAULT NUL ...
- 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...
- SQL优化 MySQL版 - B树索引详讲
SQL优化 MySQL版 - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太 ...
随机推荐
- 【iOS自定义键盘及键盘切换】详解
[iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...
- python学习 1基础
对象的等于只是对于值而言 函数定义没有变量提升 常用对象 list []: 列表, 排序省空间 tuple (): 元组,一旦初始化不可修改 dict {}: 字典,方便查询 set {}:集合, 值 ...
- PNG-8和PNG-24的抉择
今天我做了一个图,因为需要透明,所以我存为了PNG8格式,结果发现图片变了,图片变得四周都不光滑了,四周都变得有锯齿了,而且阴影也不见了,后来存为PNG24,这些问题就消失了.我去百度搜索了关于PNG ...
- CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)
CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate) 在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾 ...
- 为什么要用elasticsearch-理解加深中
首先的概念 基于Lucene 分布式实时文件存储 实时的分析搜索引擎 能达到实时搜索 优势的地方 1.横向可扩展性:只需要增加一台服务器,做一点儿配置,启动一下ES进程就可以并入集群: 2.分片机制提 ...
- css单位:em,rem解释
em:所有浏览器都符合:1em=16px;1.具有继承性2.em的根元素是body,当设置了根元素的大小时,大小是定义的数字乘以根元素定义的大小值 rem:1rem=16pxrem不具有继承性,其根元 ...
- ajax post提交form表单 报400错误 解决方法
昨天晚上做项目遇到了一个奇怪的问题,我用ajax提交一个form表单,后台Java方法用的是一个实体接,但是他根本不进方法体中,直接给我一个400的错误,一开始我以为是我路径的问题(尴尬),结果直接访 ...
- [转]Tesseract 3.02中文字库训练
下载chi_sim.traindata字库下载tesseract-ocr-setup-3.02.02.exe 下载地址:http://code.google.com/p/tesseract-ocr/d ...
- HTML基础篇之内嵌框架和表单
内嵌框架: <iframe src="http://www.baidu.com" name="d"></iframe> 网页会显示一个这 ...
- js 获取浏览器高度和宽度值(多浏览器)(转)
IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...