mysql学习笔记


1.启动mysql的dos命令

启动:net start mysql

关闭:net stop mysql

2.连接退出

mysql - h 主机地址 -u 用户名 p 用户密码

-前均有空格,h代表进入的服务器(本机可以不写),u代表用户名(用户名默认为root),p代表密码(默认密码为p0).mysql提示符是mysql>

退出:quit 或者 exit

3.修改密码

Set password=password('新密码')  #mysql命令

mysqladmin -u 用户名-p 原密码 password 新密码  /*dos命令,不能进入mysql中执行*/

4.注解

单行# 

多行/* */

5.mysql命令

放弃输入\c

显示命令清单\h

退出mysql \q

查看mysql服务器状态信息 \s

6.数据库操作

Show  databases;        /*显示数据库列表*/

Create database 库名;       /*建库*/

Drop [if exists] database 库名;     /*删除数据库*/

Use  数据库名;        /*选定使用的数据库*/

7.表格数据的操作

Show  tables;           /*查看数据库中的表*/

Create table表名(字段名 类型 [约束条件][,字段2.。。])   /* 建表*/

describe表名; 或desc 表名;/*显示数据表的结构*/

Drop [if exists]  table 表名;  /*删除数据表*/

Delete  from 表名;   /*清空数据表*/

Select * from表名;  /*显示表中的记录*/

Insert into 表名(字段名1,字段名2.。。) values (值1,值2.。。。) /*向表中的插入指定字段的数据*/

Update 表名 set 字段名=值 [where  条件]  /*修改表中的数据*/

alter table 旧表名 rename 新表名 或者   rename table 表名 to 新名 /*修改表名*/

alter table 表名 modify 字段名 数据类型 /*修改字段的数据类型*/

alter table 表名 change 旧字段名 新字段名 新数据类型 /*修改字段名*/

alter table 表名  modify 字段名 数据类型 default 默认值; /*修改字段的默认值*/

alter table 表名 add 新字段名 数据类型 [约束条件] [after 字段2]/[first] /*添加字段,默认添加在最后一个字段后面*/

alter table 表名 drop 字段名 /*删除字段*/

alter table 表名 modify 字段1 数据类型 [after 字段2]/[first]; /*修改字段的排列位置*/

8.操作技巧

1如果你打命令时,回车后发现忘记加分号,无须重打一遍命令,只要打个英语状态的分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志。

2可以使用光标上下键调出以前的命令。

3.如果你的sql命令执行后,报错了。你可以在错误信息中找near 单词,它会告诉你错误在什么的附近。

9.约束条件: 非空约束,主键约束 ,外键约束, 检查性约束,唯一约束,默认约束

添加自增长:alter table 表名 modify 字段名 数据类型 auto_increment;

删除自增长约束:alter table 表名 modify 主键名 类型;

添加主键约束:alter table 表名 add primary key (字段名);

alter table 表名 add column 字段名 字段类型 auto_increment  PRIMARY KEY;/*通过添加字段,添加主键*/

删除主键约束(如果主键有自增长,要先删除自增长,才能删除主键):alter table 表名 drop primary key;

添加唯一约束: alter table 表名 add unique [key] (字段名);

删除唯一约束:alter table 表名 drop index 字段名;

添加外键约束: alter table 表名 add constraint 外键约束匿名 foreign key (外键字段) references 被引用的表的表名(被引用的子段的字段名);

删除外键:alter table 表名 drop foreign key 外键匿名;

添加非空约束:alter table 表名 modify 字段名 字段类型 not null;

删除非空约束:alter table 表名 modify 字段名 字段类型 [null];

加默认约束:alter table 表名 modify 字段名 字段类型 default '默认值';

删除默认约束:alter table 表名 modify 字段名 字段类型 [default null];

alter table 表名 alter [column] 字段名 set default 默认值; /*修改字段的默认值*/

create view 视图名 as  sql结果;/*创建视图*/

10.-数据备份和恢复

Select * from 表名 into outfile “D:/myTable.txt”; /*到出数据表的数据到指定文件中*/

Source  D:/mydb.sql /*将外部的sql文件导入到数据库中*/

 Show create table 表名;  /*查看表的创建,可以据此复制出sql命令,查看外键匿名(删除外键使使用)*/

mysqldump -uroot –p123  test > D:/a.sql 在dos 窗口下,输入该命令,test是要导出的数据库的名字。

mysqldump -uroot –p123  test  t1 > D:/a.sql在dos 窗口下,输入该命令,导出test数据库中的t1表。

默认情况下:mysql 对导入文件大小有限制的,最大为2M,所以当文件很大时候,无法直接导入

解决办法:1.在php.ini中修改相关参数:
影响mysql导入文件大小的参数有三个:

memory_limit=128M,upload_max_filesize=2M,post_max_size=8M
修改upload_max_filesize=200 M  这里修改满足你需要的大小,可以同时修改其他两项memory_limit=250M  post_max_size=200M这样就可以导入200M以下的.sql文件了。

11.外键

含有外键的表A,外键字段的数据来自表B,形成依赖。因此表A的外键字段只能使用表B中相应字段含有的数据。

外键关系是由含有外键字段的表A主动建立的,因此删除表时,应当先删除表A,再删除被引用的表。体现了安全性和完整性。

外键建立的条件

表A和表B中建立外键关系的字段的类型必须相同,若A表的C字段为外键,那么B中的D字段的类型必须和C字段相同,且D字段约束条件为主键或unique。

含有外键的表是从表,从表的数据依赖于主表。

从表里的外键的值,只能来自于主表相应的字段的值。主表中相应的字段不存在的值,从表的外键也不能有,也无法有,因为插不进去这样的数据。(从表的操作受到限制)

在删除数据表的时候,只能先删除从表(含有外键的表),才能删除主表,因为外键关系是由从表发出的,并且从表的数据来自于主表。

不能在控制台输入中文:原因是无法切换输入法

第一种:Ctrl+空格键 可以在dos中切换中英文输入法。

第二种:设置window系统默认的输入语言为搜狗输入法。然后重启dos 窗口,就可以输入中文了。

Dos窗口点击右键—》属性 ;可以查看当前窗口的编码及对窗口外观的设置。

Dos窗口点击右键—》默认值 ;可以查看和设置当前窗口的编码,对窗口外观的设置。

能在mysql客户端输入中文,但是不能插入到表中。

这个数据库和表的编码有关。因此就要修改表的编码和数据库的编码。具体为:修改表格的编码,修改相应字段的编码(表格无数据)。注意:dos窗口可能只支持mysql默认编码为gbk时,才能在dos窗口插入中文。

mysql> alter table users character set GBK; /*更改表格的字符集为GBK*/

mysql> alter table users modify username char(20) character set gbk;/*更改字段的字符集*/

@@关于修改mysql配置文件,实现中文支持的方法:

MySQL\MySQL Server 5.5\my.ini 文件中的

[mysql]

default-character-set=utf8

# The default character set that will be used when a new schema or table is

# created and no character set is defined

character-set-server=utf8

注意:修改后要重启mysql,不是重启dos窗口。(最好是两者都重启)。这种修改方式不会改变已经存在的数据库和表的编码。因此就需要重新建这些数据库和表。

@@其他:

A:重装数据库

B:执行bin包下的MySQLInstanceConfig.exe程序,重新设置配置。需要重启mysql和dos窗口,否则只有Server characterset:和Db characterset发生改变。 

C:在创建数据库和表时指定字符集:create database yourDB  character set gbk;

create table yourtable(id int) character set gbk;

注意:set names gbk;仅对服务器不重启时有效,改变所有的数据库的编码,但是只是暂时的,原有的编码方式依然保留。

12.修改端口号

MySQL\MySQL Server 5.5\my.ini 文件中的

[client]

port=3305

[mysql]

 [mysqld]

# The TCP/IP Port the MySQL Server will listen on

port=3305