数据库的学习要求: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)的更多相关文章

  1. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  2. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  3. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  4. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  5. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  6. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

  7. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

  8. MySQL学习笔记-数据库文件

    数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...

  9. MySQL学习笔记-数据库内存

    数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...

  10. MySQL学习笔记-数据库后台线程

    数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...

随机推荐

  1. Sublime Text 3 3126 注册码 + 下载地址

    Sublime Text 3 3126  下载地址 Windows版本 64位:https://download.sublimetext.com/Sublime%20Text%20Build%2031 ...

  2. ASP.NET MVC的运行机制--url的全局分析

    全局 首先我们来看一副图片       首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http://HostName/ControllerNam ...

  3. php设置浏览器响应时间

    ini_set('max_execution_time', '0'); ‘0’表示不受时间限制,一般默认30s;

  4. Oracle11g字符集AL32UTF8修改为ZHS16GBK详解【转】

    ------感谢作者,确实解决了问题.分享下,希望帮到更多人 此问题发生在数据库迁移过程中.源数据库:自己笔记本上win7 64位系统的oracle11g个人版,字符集ZHS16GBK :目标数据库, ...

  5. C#汉字转拼音帮助类

    using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressi ...

  6. iOS获取本机IP地址

    #import <ifaddrs.h> #import <arpa/inet.h> // Get IP Address - (NSString *)getIPAddress { ...

  7. gulp复制整个文件夹或文件到指定目录(包括拷贝单个文件)

    整个目录: gulp.task('copy', function() { return gulp.src('src/**/*') .pipe(gulp.dest('dist')) }); gulp拷贝 ...

  8. 分析移动端APP的网络请求抓包

    为了方便,本文以 iOS 系统来进行演示. 使用代理 移动操作系统中都有可以设定系统代理的设置,比如在 iOS 中可以通过 Settings->WLAN 看到很多 Networks,通过点击它们 ...

  9. Protocol Framework - SNMP Tutorial

    30.4 Protocol Framework TCP/IP network management protocols2 divide the management problem into two ...

  10. 11月6日下午PHP分页查询(查询结果也显示为分页)

    1.先把数据库里所有的数据分页显示在页面,并在显示数据的表格上方加上查询表单. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...