目录
零、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 本身可以算是一门简单的语言,但我们也不断用智慧和 ...
随机推荐
- .NET Framework 4.7 安装
我们打开.NET Framework下载界面: https://www.microsoft.com/net/download/framework 这时你会发现,我们能下载的.NET Framework ...
- openssl命令行-证书认证
命令1: openssl genrsa -out root.key 1024 产生一个root.key的私钥 命令2: openssl req -key root.key -new -out ro ...
- IE和其他浏览器用JS新窗口打开的问题
Chrome中 window.open(pageURL,name,parameters) pageURL 为子窗口路径 name 为子窗口句柄 parameters 为窗口参数(各参数用逗号分隔) 例 ...
- ue4构建光照失败问题与解决
不知从哪天开始,我的ue4.13就突然无法成功构建光照了, 症状为:虽然swarm连接到了100%,然而之后就卡住一动不动,一看看log是连接tcp什么agent什么失败的. 虽然把所有物体都设置成非 ...
- 对GPIO_Init(GPIOx,&GPIO_InitStructure)的理解
今天学习stm32流水灯程序的时候,看到了"GPIO_Init(GPIOB, &GPIO_InitStructure)"这个函数,参数1"GPIOB"很 ...
- 使用Java语言开发微信公众平台(五)——获取access_token
在前四期的文章中,我们分别学习了"环境搭建与开发接入"."文本消息的接收与响应"."被关注回复与关键词回复"."图文消息的发送与响 ...
- C语言学习第七章
今天开始学习指针,指针在C语言中具有很重要的地位,按照老师所说,学C学不好指针跟没学一样,可见指针在C语言中的重要地位.废话不多说,首先我们先要知道什么是指针. 指针:指针是一个变量,它存储另一个对象 ...
- 深入浅出学习HTTP协议
之前学习javaWeb只是大致了解了一下,今天重点介绍下http请求,当是复习吧! 一.http基础概念 1.什么是http协议? HTTP是Hyper Text Transfer Protocol( ...
- [Git]07 如何在提交过程中忽略某些文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表.通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等.我们可以创建一个名为 .gitignor ...
- ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
Oracle 设置默认数据库 如果我们的服务器上或者电脑上安装了多个数据库,当我们使用sqlplus时如果为指定数据库时登录到的是哪一个数据库呢?今天遇到了一个老问题: ORA-01034: ORAC ...