目录
零、MySQL安装与配置
一、基本概念
二、基本语法
三、常用指令
四、四种SQL语句
零、MySQL安装与配置
http://www.cnblogs.com/hikarusun/archive/2012/04/26/2471039.html
http://jingyan.baidu.com/article/597035521d5de28fc00740e6.html
http://database.51cto.com/art/201304/387439.htm
http://yanln.iteye.com/blog/2193842
端口:3306
账户:root
WindowsServiceName:MySQL56
可视化工具:Navicat for MySQL【功能非常强大】
启动MySQL服务:右击我的电脑-管理-服务和应用程序-服务-MySQL57,启动即可;如果没有启动,可能出现错误:cann't connect to MySQL Server on localhost
官方文档:一般安装MySQL时会有官方文档【http://dev.mysql.com/doc/有下载】
一、基本概念
1、MySQL是关系型数据库,由一个或多个表格组成。表格:表头、行、列、键(具有唯一性)、值
2、MySQL语句执行有两种方法:
(1)控制台下执行单条语句。
(2)通过SQL脚本完成对数据库的操作,该脚本由一条或多条MySQL语句(SQL语句+扩展语句)组成,保存时脚本后缀名为.sql。
3、MySQL是基于客户端-服务器的数据库。服务端存放管理数据,直接与数据文件打交道;客户端与用户打交道,获取、操作数据都是通过连接服务端完成的。服务器软件为MySQL DBMS;客户端可以是MySQL提供的工具,脚本语言、web应用开发语言、程序设计语言等。
二、基本语法
1、标识符:命名一些对象,如数据库、表、列、变量等。Windows下标识符大小写不敏感,Linux下敏感。
2、关键字:如create、drop、select等。标识符不能与关键字重名。
3、函数:如字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数等。
4、数据类型【以下类型并不全面,随着版本更新也不能保证完全准确】
1)数字类型
A、整数:tinyint、smallint、mediumint、int、bigint,分别有1、2、3、4、8字节。可以指定位数,如int(4),注意,4指位数,不是字节数。
B、浮点数:float、double、real、decimal。如double(20,4),20指定最大位数,4指定小数点后精度。
2)日期和时间:date、time、datetime、timestamp、year【关于日期和时间,更多见日期时间类型详解】
3)字符串类型(文本和字符串后面的修饰表示的都是字符数,不是字节数)
A、字符串:char、varchar。注意char和varchar后面都可以跟0-255的修饰。对于char,这个值是实际大小,比这个长要截短,比这个短要用空格补足。对于varchar,这个值是大小的最大值,比这个值大要截短,比这个值小不会填充。varchar的好处:不知道字段确定长度时,可以节省空间;便于搜索比较。一个汉字占的字节数与编码有关:GBK占2字节,UTF-8占3字节。定长字符串的好处:MySQL处理定长字符串的快很多;不允许对变长列进行索引(存疑)。
B、文本:tinytext、text、mediumtext、longtext。字符范围:255、65535、2^24-1、2^32-1。
C、二进制(可存储图片等):tinyblob、blob、mediumblob、longblob。字节范围:255、65535、2^24-1、2^32-1。
5、MySQL语句中,所有空格被忽略,因此跨行无所谓。
三、常用指令
1、登陆与退出(登陆指令的前提是已将mysql所在的目录加入PATH或bin,或在mysql所在的目录中)
mysql -u kismet -p=》会提示输入密码
mysql -u kismet -password *****
mysql -u kismet -h hostname -p/password
mysql -u ... -h ... -p/password ... -D databasename
mysql -D …… -u kismet -p < test.sql(登录时执行脚本)
quit
http服务器:/../../httpd -k start/stop/restart
2、创建、查看与删除一个数据库
create database 数据库名 [其他选项];
show databases;【其中的informa_schema和mysql是自带的数据库】
drop database 数据库名;
3、选择所要操作的数据库
登录时-D;
use 数据库名;(可以不加分号)
4、创建、查看与删除表
(1)create table 表名称(列声明);如:
create table students ( id int unsigned not null auto_increment primary key,
.........,
tel char(11) null default "-");
(2)列声明:名称+类型(可能有unsigned)+(null/not null)+(auto_increment)+(primary key)+(default+……)
null/not null:是否可以为空(默认可以为空)
auto_increment:适用于整数列(插入为NULL,值为最大+1);只能有一个,而且必须被索引;使用auto_increment列,可以指定插入值,只要它尚未被使用过,后面的插入增量基于该指定的值;last_insert_id()函数可以获得最近插入的auto_increment值(个人猜测在触发器中很有用武之地)
primary key:该列为主键,索引列,值唯一,列唯一
default:指定默认值;只支持常量,不支持函数;对于null列,如果不指定则默认为null
(3)其他部分
if not exists:如果该表存在,则会报错;为避免报错,可以改为:create if not exists table students ……
engine:可以在最后(括号之后)加上engine=innodb/myisam……指定存储引擎
(4)show tables;describe 表名【等价于:show columns from 表名】
(5)drop table 表名;
5、向表中插入数据【血泪教训:insert语句一定要指定插入值与列的对应关系;否则数据库一旦扩展或调整顺序,程序就崩溃了!】
插入完整的行:如果某些列可以由MySQL自动生成而不需要手动添加,可以将它们置为null,MySQL会自己处理,这样的例子包括 自增的主键、timestamp类型等;这种方式最好不要使用,因为一旦表结构发生变化(如顺序变化、添加列),插入语句将失败。
插入行的一部分:指定列名,可以只插入部分数据(其他条件是该列允许null或提供了默认值,否则会报错),或者不按顺序插入
插入多行:单条insert插入多条数据比多个insert效率要高
插入检索出的数据:不要求列名匹配;按照顺序匹配
插入不重复的数据:测试发现,重复与否的判断标准是primary key、unique index,普通的key可以重复
补充:插入操作相对查询来说可能比较耗时(尤其是有很多索引需要更新时)(update和delete同理),有时为了保证检索的效率,可以降低插入的优先级。
insert [into] `user` VALUES(null,'asdfadsf',null,30)#插入完整的行
insert [into] `user`(name,age) values('hello',45)#插入行的一部分
insert `user`(name,age) values('hello',45),('world',400)#插入多行
insert `user`(name,age) select name,age from tmp#插入检索出的数据
insert ignore into ……
insert low_priority into#低优先级插入
6、查询表中数据:见四
7、更新表中数据
可以更新多列,用逗号隔开;可以根据表中旧值更新新值(旧值和新值不一定是同一列);新值可以使用子查询获得;使用ingore关键字,当更新出现错误时可以继续更新;新值可以为NULL
update user set name='zhou',age=11 where id=10;#可以有多列,用逗号隔开
update user set age=age+1 where id=1;#根据表中旧值更新新值
update user set age=id+1 where id=10;#旧值与新值不一定是同一列
update user set name=(select name from teacher where id=10) where id=10#新值可以使用子查询获得
update ignore user ……#使用ignore,当更新出现错误时可以继续更新
update user set name=null where ……#新值可以为null
8、删除表中的数据
delete from 表名称 where 删除条件;
delete from 表名称;//清空表数据,不能使用delete * fromo 表名称;
如果要删除整个表,尽量不要使用delete,速度较慢,因为它会逐行删除数据;使用truncate table完成相同工作,但速度更快(实际上删除整个表并重新创建一个表),如truncate table 'user'
【对于update和delete,没有办法撤销;因此在执行之前,一定使用select验证下where子句的条件是否争取,否则后果不堪设想】
9、修改表本身:创建表时应该足够谨慎,修改表尽量避免
(1)添加列
alter table 表名 add 列名 列数据类型(可以加其他属性) [after 插入位置];
(2)修改列
alter table 表名 change 列名 列新名称 列数据类型(可以加其他属性);
(3)删除列
alter table 表名 drop 列名称;
(4)重命名表
alter table 表名 rename 新表名;或
rename table 表名 to 新表名;
(5)其他:增加外键等
四、四种SQL语句
1、DDL:Data Definition Language
(1)包括:CREATE、ALTER、DROP、TRUNCATE、COMMENT、RENAME
(2)不需要commit,因此也无法回滚。
2、DML:Data Manipulation Language
包括:SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAIN PLAN、LOCK TABLE
3、DCL:Data Control Language
包括:GRANT、REVOKE
4、TCL:Transaction Control Language
包括:SAVEPOINT、ROLLBACK、SET TRANSACTION
- fastclick 源码注解及一些基础知识点
在移动端,网页上的点击穿透问题导致了非常糟糕的用户体验.那么该如何解决这个问题呢? 问题产生的原因 移动端浏览器的点击事件存在300ms的延迟执行,这个延迟是由于移动端需要通过在这个时间段用户是否两次 ...
- .NET基础知识点
.NET基础知识点 l .Net平台 .Net FrameWork框架 l .Net FrameWork框架提供了一个稳定的运行环境,:来保障我们.Net平台正常的运转 l 两种交 ...
- JavaScript 开发者经常忽略或误用的七个基础知识点(转)
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript 开发者经常忽略或误用的七个基础知识点
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript开发者常忽略或误用的七个基础知识点
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript语言基础知识点图示(转)
一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运算符 4.JavaScript 数组 5.Ja ...
- JavaScript 语言基础知识点总结
网上找到的一份JavaScript 语言基础知识点总结,还不错,挺全面的. (来自:http://t.cn/zjbXMmi @刘巍峰 分享 )
- c语言学习之基础知识点介绍(三):scanf函数
本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...
- c语言学习之基础知识点介绍(二):格式化控制符和变量的补充
上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...
- (转)JavaScript 开发者经常忽略或误用的七个基础知识点
英文原文:7 JavaScript Basics Many Developers Aren't Using (Properly) JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和 ...
随机推荐
- 【R】正态检验与R语言
正态检验与R语言 1.Kolmogorov–Smirnov test 统计学里, Kolmogorov–Smirnov 检验(亦称:K–S 检验)是用来检验数据是否符合某种分布的一种非参数检验,通过比 ...
- Elasticsearch实现类似 like '?%' 搜索
在做搜索的时候,下拉联想词的搜索肯定是最常见的一个场景,用户在输入的时候,要自动补全词干,说得简单点,就是以...开头搜索,如果是数据库,一句SQL就很容易实现,但在elasticsearch如何实现 ...
- meta 整理
< meta > 元素 概要 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 we ...
- Linux--shell脚本之文本处理工具
文本处理工具--grep.sed.awk Bash Shell提供了功能强大的文件处理工具:sed(流编辑器stream editor)和awk,都可使用正则表达式进行模式匹配. 而grep又有助于理 ...
- LinkCode 下一个排列、上一个排列
http://www.lintcode.com/zh-cn/problem/next-permutation-ii/# 原题 给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列 ...
- 视差滚动特效图片滑块-Sequence.js
效果演示 插件下载
- codeforces 757F Team Rocket Rises Again
链接:http://codeforces.com/problemset/problem/757/F 正解:灭绝树. mdzz倍增lca的根节点深度必须是1..我因为这个错误调了好久. 我们考虑先求最短 ...
- [进程管理]Linux进程状态解析之T、Z、X
Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态. 向进程发送一个SIGSTOP信号,它就会因响应该信号而进入 ...
- [转]ObjectARX二次开发vs编译器版本ARX版本对应说明
- Thinkphp与CI的区别
深入学习一门新技术的最好方法就是看官方文档. ThinkPHP5.0文档: http://www.kancloud.cn/manual/thinkphp5/118003 官方的说辞是: 主要特性 : ...