MySQL学习笔记(1/2)
数据库的学习要求:1.为项目设计表;2.使用SQL(Structure Query Language)语句(SQL编程)。其他的都可以使用工具完成。
SQL:
DDL:创建库、创建表
DML:对数据的操作,插入、删除、修改
DQL:数据查询语句
DCL:数据控制语句
1.连接数据库
现在环境变量配置,在cmd下连接服务器:mysql -h localhost -u root -p密码,mysql -h 连接地址 -u 服务器用户名 -p密码,连接地址可以是localhost(本机)、ip、域名(www....)。密码在这里最好不要输入,以免被盗,可以在输入密码之前先回车,在输入非明文的密码。
查看当前状态:\s;
查看配置变量:show variables;
查看配置变量里面的具体的某个值:show variables like ‘time’;也可以方向键翻;
2.创建数据库
查看本机的库:show databases;
创建库:create database (if not exist)库名字;括号里面可写可不写
删除库:drop database (if exist) 库名字;括号里面可写可不写
创建表:create table 库名字.user(id int,name char(30),age int ,sex char(3));
3.选择一个库作为默认的数据库
选择一个库作为默认的数据库:use 库名字;
这样进行表操作的时候就不需要前面那样库名字.user,而是可以之间写表名。
查看当前库里所有的表:show tables;
查看表结构:desc 表名;
删除表:drop (if exist) 表名;
创建表:create if not exist tablename;
4.增删改查
插入
插入:insert into tablename values(1,'zhangsan',10,'nan');
插入:insert into tablename values('2','lisi','13','nv');为避免出错可以都加引号,可以自动匹配;
可以部分插入,前面加字段,这样可以不考虑顺序:insert into tablename(id, name) values('1', 'zhangsan');
查看
select * from tablename;
修改
改一个值:update tablename set name='lili' where id='2';
改多个值:update tablename set name='lili' ,age= '21',sex='nan' where id='2' sex;
删除
删除:delete from tablename where id=2;
5.帮助的使用
按层次查找:
帮助可以提供的内容:?contents;
根据上述结果例如可以查询数据类型:?data types;
根据上述结果例如可以查询int:?int;
按关键字查找:
例如想要查找怎样使用show:?show;
例如想要查找怎样使用create:?create;
根据网易云课堂学习整理:http://study.163.com/course/courseMain.htm?courseId=247003
创建数据表
1.什么是数据表
行(记录)和列(字段)组成。
2.创建数据表的SQL语句模型
DDL
CREATE TABLE [IF NOT EXISTS]表名称(
字段名1 列类型 [属性] [索引],
字段名2 列类型 [属性] [索引],
...
字段名n 列类型 [属性] [索引]
)[表类型] [表字符集];
命名规范:
1)虽然SQL是不分大小写的,但是有些系统会区分(Linux),所以表名称和字段名等自定义的名称一般小写。
2)SQL语句都大写。
3.数据值和列类型
1)数值型
整型
1B TINYINT
2B SMALLINT
3B MEDIUMINT
4B INT
8B BIGINT
浮点型
FLOAT(M,D) 4B
DOUBLE(M,D) 8B
定点数
DECIMAL(M,D) M+2
M代表一共几位,D代表几位小数。浮点数不精确,他是一个近似值,不适用于对精度要求高的情况,这些情况可以用定点数。定点数就是小数位数固定的小数,例如保留两位的价格,小数点永远在倒数第二位。具体区别参考 http://www.cnblogs.com/cloudseawang/archive/2007/02/06/641652.html 讲的很详细。
2)字符型
"mysql"[双引号] 'mysql'[单引号] \[转义字符]
char(m) 最多255字节 固定长度
varchar(m) 最多255字节 可变长度
m代表位数。
varchar后面有一个空位‘0’。char和varchar有以下区别:
char(4) |
字节 |
varchar(4) | 字节 |
'' | 4 | '' | 1 |
‘ab’ | 4 | 'ab' | 3 |
'abcd' | 4 | 'abcd' | 5 |
'abcdefgh' | 4 | 'abcdefgh' | 5 |
text 文本数据 (文章) 2^16字节长度
MEDIUMTEXT
LONGTEXT
blob 二进制数据 (相片)
MEDIUMTEXT
LONGBLOB
ENUM 枚举 1或2字节
ENUM("one","two","three","four") --- 最多有65535个数,一次只能有一个值,例如单选
SET 集合 1,2,3,4,8字节 ---一次可以用多个集合中的值,中间使用“,”分开,例如多项选择
3)日期型
DATE | YYYY-MM-DD |
TIME | hh:mm:ss |
DATETIME | YYYY-MM-DD hh:mm:ss |
TIMESTAMP 时间邮戳 | YYYYMMDDhhmmss |
YEAR | YYYY |
而一般数据结构中有关于时间的数据结构,例如c++、php中有CTIME这个数字相较于上述类型更好。
4.数据字段属性
1)UNSINGED 可以让空间增加一倍,只能用在数值型字段
2)ZEROFILL 只能用在数值型字段,前导零,该属性自动应用UNSIGNED
3)AUTO_INCREMENT 只能是整数,数据每增加一条(包括留空 NULL 0)就会自动增1,字段的值是不允许重复的
每个表都最好有一个ID字段设置为AUTO_INCREMENT
4)NULL 和NOT NULL
因为每个语言中的NULL可能格式含义不太一样,所以为了可移植性,建议在创建表示每个字段都不要插入NULL,而使用NOT NULL
5)DEFAULT
例如:
CREATE TABLE users(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT '',
height DOUBLE(10,2) NOT NULL DEFAULT 0.00,
age INT NOT NULL DEFAULT 0,
sex CHAR(4) NOT NULL DEFAULT '男'
);
5.创建索引
1)主键索引
主要作用是确定数据库表中一条特定数据记录的位置
最好为每一张数据表定义一个主键
一个表只能指定一个主键,主键的值不能为空
2)唯一索引 UNIQUE
为了防止创建重复的值
每一个表可以有多个唯一索引
3)常规索引
- 最重要的技术
- 提升数据库的性能
- 索引顺序 5层 软件 PHP 《细说PHP》 书店
- 可以提高查找的速度,减慢数据列上插入,删除,修改
- 可以单独使用,也可以创建表示创建
- INDEX KEY 是同义词,多列都可以
4)全文检索
FULLTEXT 类型索引,MyISAM 表类型使用,只有在varchar char text 文本字符串上使用
可以多个数据列使用
6.数据表类型(存储引擎)及存储位置
MySQL可以针对不同的存储引擎需求选在最优的存储引擎,它是插件式的,查看存储引擎/表类型:
show engines;
查看配置文件中的表类型:show variables like 'table_type';
1)十二之二:数据表类型MyISAM和InnoDB。
MyISAM表类型:成熟稳定易于管理,表格锁定的机制,强调快速读取操作;有些功能不支持。
用它来进行操作过程中的碎片进行管理:OPTIMIZE TABLE 表名;
InnoDB表类型:操作提交回滚,等安全管理;空间占用量较大。
创建表时指定表类型:CREATE TABLE () TYPE InnoDB/CREATE TABLE () ENGINE InnoDB/
2)存储位置
MyISAM类型:.frm 定义结构;.MYD 存储数据;.MYI 保存索引。
InnoDB类型:.frm和.ibd。
7.MySQL默认字符集
显示校对字符集规则:show collation like 'utf8%';//显示utf-8校对规则。
显示字符集:show character set;
在配置文件中查看服务器中字符集:show variables like 'character_set_server';
在配置文件中查看服务器中校对规则:show variables like 'collation_server';
字符集:是用来定义MySQL存储字符串的方式;
校对规则:是对规则定义了比较字符串的方式;
utf8_unicode_ci:ci是大小写不明感的比较规则,cs是大小写敏感的比较规则,bin是二进制比较规则。
一对多的关系:一个字符集可以对应多个校对规则。
显示所有字符集校对规则:desc information_schema.character_sets;
ASCII
ISO-8895-1/latin1
汉字集:
gb2312-80,国标80年代,6700汉字;不推荐
gb13000,93年,27400字;不推荐
gbk,95年;可以用,2字节,数据库运算量比较大时 定长
gb18030,2000年;数据库支持比较少见
UTF-32
USC-2
UTF-16
UTF-8 Unicode字符集 1-4字节 强烈推荐 互联网 UNIX Linux 非定长
MySQL服务器,数据库,数据表,字段可以设置不同的字符集,每一个字符集缺省为上级字符集设置。
创建库时指定字符集:
CREATE DATABASE d1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
创建表时默认用库的字符集,也可以指定字符集:
CREATE TABLE T1(id int) ENGINE InnoDB DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
客户端与服务器交互时:
character_set_client
character_set_connection
character_set_results
通常情况下上述字符集和服务器字符集都保证一致就不会乱码;
同时修改上述三个参数的值:SET NAME 字符集;
更改库的字符集:ALTER DATABASE CHARACTER SET gbk;
更改表的字符集:ALTER TABLE t1 CHARACTER SET gbk;
备份库:mysqldump -u root -p --default-character-set=gbk -d d1> c:/111/111.sql //一定要记住没有;号
导入:<
8.修改表
Alter table
查看帮助:? ALTER TABLE;
例如:ALTER TABLE t1 ADD name VARCHAR(30) NOT NULL;
例如:ALTER TABLE t1 ADD age NUSIGNED NOT NULL DEFAULT '0';
总的来说可以通过使用帮助来使用ALTER TABLE。
MySQL学习笔记(1/2)的更多相关文章
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- Mysql学习笔记(一)数据类型
原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型 Mysql数据类型 含义(有符号) tinyint(m ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- MySQL学习笔记-锁相关话题
在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因. Mysql常用存储引擎的锁 ...
- MySQL学习笔记-事务相关话题
事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...
- MySQL学习笔记-数据库文件
数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...
- MySQL学习笔记-数据库内存
数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...
- MySQL学习笔记-数据库后台线程
数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...
随机推荐
- Sublime Text 3 3126 注册码 + 下载地址
Sublime Text 3 3126 下载地址 Windows版本 64位:https://download.sublimetext.com/Sublime%20Text%20Build%2031 ...
- ASP.NET MVC的运行机制--url的全局分析
全局 首先我们来看一副图片 首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http://HostName/ControllerNam ...
- php设置浏览器响应时间
ini_set('max_execution_time', '0'); ‘0’表示不受时间限制,一般默认30s;
- Oracle11g字符集AL32UTF8修改为ZHS16GBK详解【转】
------感谢作者,确实解决了问题.分享下,希望帮到更多人 此问题发生在数据库迁移过程中.源数据库:自己笔记本上win7 64位系统的oracle11g个人版,字符集ZHS16GBK :目标数据库, ...
- C#汉字转拼音帮助类
using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressi ...
- iOS获取本机IP地址
#import <ifaddrs.h> #import <arpa/inet.h> // Get IP Address - (NSString *)getIPAddress { ...
- gulp复制整个文件夹或文件到指定目录(包括拷贝单个文件)
整个目录: gulp.task('copy', function() { return gulp.src('src/**/*') .pipe(gulp.dest('dist')) }); gulp拷贝 ...
- 分析移动端APP的网络请求抓包
为了方便,本文以 iOS 系统来进行演示. 使用代理 移动操作系统中都有可以设定系统代理的设置,比如在 iOS 中可以通过 Settings->WLAN 看到很多 Networks,通过点击它们 ...
- Protocol Framework - SNMP Tutorial
30.4 Protocol Framework TCP/IP network management protocols2 divide the management problem into two ...
- 11月6日下午PHP分页查询(查询结果也显示为分页)
1.先把数据库里所有的数据分页显示在页面,并在显示数据的表格上方加上查询表单. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...