这是我刚开始学习mysql时总结的笔记 可能比较潦草但还好比较容易理解,乱点就乱点吧
以后有什么新的东西都随时添加
mysql 的基础属性篇
SQL语言包含4个部分
数据定义语言(DDL)用于定义和管理对象,例如数据库、数据表
例如:CREATE、DROP、ALTER等语句
数据操作语言(DML)操作数据库对象所包含的数据。
例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)
数据查询语言(DQL)
例如:SELECT语句
数据控制语言(DCL)用于控制对数据库对象操作的权限
例如:GRANT、COMMIT、ROLLBACK等语句
在dos操作中 ;是结束命令 执行多个命令时用,
展示数据库 show databases;
切换数据库 ues dataone; (dataone是数据库名)
创建表和使用表的时候要进入数据库;
创建一个数据库并且在其中创建一个表的流程是:
create database newdata charset utf8;
use newdata;
create table newtable(
id int primary key not null auto_increment,
name char(20) not null default '',
sex enum('男','女'),
hobby set('唱歌','游泳','作死')
);
其中创建数据库的时候要设置字体编码 防止出现乱码 而且命名数据库名字的时候不能用纯数字 纯符号 和系统关键字 而且因为linux系统下区分大小写 因此数据库名最好小写 而且不能超过64位
desc newtable;
是查询表的结构,看他的每一个字头都是怎么设置的 就像刚才newtable表中的id name sex hobby 各自的储存数据的要求是什么
类型 大小 范围(有符号) 范围(无符号) 用途
tinyint 1字节 (-128,127) (0,255) 小整数值
smallint 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
常用的是 int tinyint smallint
设置合理的整形类型可以提高数据库的搜索效率,节省内存
decimal 这是浮点型的一个特点 举例:
create newtable(
money decimal(5,2)
);
创建一个表 里面的money最大是999.99 decimal里的参数是1 总共几位数,2 有几位小数 这个在计算钱的时候很常用
字符串类型的数据
CHAR 0-255字节 定长字符串
VARCHAR 0-<65535字节(1-2字节记录长度) 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LOGNGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据
重点是char varchar text
char(20) 固定占用20个字节 超出部分就截断 优点是搜索效率较高 缺点是占内存
varchar(20) 占用空间随着内容多少改变 但最多20字节 超出就截断 优缺点和char相反
通常用char而不用varchar是因为硬件水平提高可以牺牲一点内存在保持程序执行效率
text就是大文本数据的情况下使用了
char和int类型的区别
char(20) 就真的是指所输入内容不能超过20个字
int(3) 这个括号内的是配合前导零zerofill 使用的 当有了zerofill这个属性时 输入1 显示001 输入20显示020 但是输入的数超过999一样能显示 但就没有前导零这个影响了 输入1000就显示1000 他的上限还是根据本页48行的整数型来限制
zerofill 是前导零
unsigned 是取消负号
not null 禁止输入空数据
default 默认为0
举例:
create newtable(
id int(4) zerofill unsigned not null default 0,
name char(20) not null default ''
);
由于搜索对于null这个数据类型很不友好 想上面那样先设置不准为空再默认是空字符串就是规避null数据类型 这样搜寻显示就不是null而是真的什么都不显示了
enum 只能在其中选一个
set 在其中可以选多个 相当于多选题和单选题的区别
举例:
create newtable(
sex enum('男','女'),
hobby set('唱歌','篮球','作死')
)
性别只能单选而爱好可以多选 当然如果输入不在选项中的数据将整个hobby录入失败
unique 唯一属性 其他同列数据不能与之相同
primary key 主键 表中只能有一个主键 通常就是设置给id 主键不能包含null
auto_increment 自增 不输入他他就按照上条数据的数值自行增长 还有设置自增了最好别设默认,试想都自增了还每次都又从0开始就太矛盾了
举例:
create newtable(
id int unique primary key not null auto_increment,
age int not null
)
创建一个表othertable 和newtable的表结构一样
create table othertable like newtable;
将newtable内的数据复制到othertable中
insert into othertable select * from newtable;
以上两者结合起来完全复制表信息就是
create table othertalbe select * from newtable;
以上需要注意的就是看清要创建的表的位置和要复制的表的位置
? 回车
调出所有mysql指令
? char 回车
调出关于char的使用方法 当然这些指令都是全英文的 有问题还是百度吧
其中最有用的就是设置字和背景颜色的指令:
COLOR 0A;
或者
COLOR 0E;
这两个配色比较推荐 不满意就COLOR+回车自己调
搜索表中所有信息
select * from newtable;
模糊搜索
select * from newtable where like '%游泳'
字符集合校对规则
现在我们由于硬件的提升可以稍微降低对内存的限制 因此现在最常用的万国码 utf8 在创建数据库的时候就要设置编码 这样的话这个库的内部文件都默认数据库的设置 创建的时候是这样的
create database charset utf8;
在windows系统下都是gbk编码 ios的是utf8编码
现在操作的dos窗口就相当于一个客户端 mysql所在的是服务端
在windows系统下 每次向数据库发送信息都是先将本地的gbk编码转成utf8编码然后mysql服务器接收储存 再将utf8编码的信息发送回客户端转成gbk的正常显示 因此先声明本地使用什么样的编码 这样保证本地收到的数据能够正常显示 像这样
set names utf8;
这就是向服务器声明客户端是需要什么样的编码 服务器在发送的时候好转成相应的以正常显示
其他关于字符集的命令
查看创建student表的语句
show create table stu;
查看服务器支持哪些字符集
show character set;
查看字符集排序规则,如果没有指定的则采取默认方式进行排序
show collation;
查看系统字符集变量
show variables like '%character%';